作者:楊亦誠
Qwen2 是阿里巴巴集團 Qwen 團隊研發(fā)的大語言模型和大型多模態(tài)模型系列。Qwen2 具備自然語言理解、文本生成、視覺理解、音頻理解、工具使用、角色扮演、作為 AI Agent 進行互動等多種能力。
圖:智能體中工具使用執(zhí)行邏輯
Qwen-Agent 是一個 AI 智能體的開發(fā)框架。開發(fā)者可基于本框架開發(fā) Agent 應用,充分利用基于通義千問模型(Qwen)的指令遵循、工具使用、規(guī)劃、記憶能力。同時該框架也提供了瀏覽器助手、代碼解釋器、自定義助手等示例應用。近期 OpenVINO 工具套件也作為 Qwen-Agent 的大語言模型推理后端,被集成到 llm 組件中,接下來就讓我們一起看下如何在 Intel 硬件平臺上通過 OpenVINO 和 Qwen2 構(gòu)建一個純本地運行的 AI 智能體。
1轉(zhuǎn)化壓縮 Qwen2 模型
第一步我們需要安裝 Optimum-intel 組件,以此來導出并量化原始的 Qwen2 模型,使用方法可以參考以下示例。
pip install optimum[openvino] optimum-cli export openvino --model Qwen/Qwen2-7B-Instruct--task text-generation-with-past --trust-remote-code --weight-format int4 {model_path}
2構(gòu)建工具
Qwen-Agent 提供了注冊工具的機制,例如,下面我們注冊一個自己的圖片生成工具:
指定工具的name、description、和parameters,注意@register_tool('my_image_gen') 中的 'my_image_gen' 會被自動添加為這個類的 .name 屬性,將作為工具的唯一標識
實現(xiàn) call(...) 函數(shù)
在這個例子中,我們定義了一個調(diào)用云端 API 工具,用來根據(jù)輸入請求,生成圖片。
@register_tool("image_generation") class ImageGeneration(BaseTool): description = "AI painting (image generation) service, input text description, and return the image URL drawn based on text information." parameters = [{"name": "prompt", "type": "string", "description": "Detailed description of the desired image content, in English", "required": True}] def call(self, params: str, **kwargs) -> str: prompt = json5.loads(params)["prompt"] prompt = urllib.parse.quote(prompt) return json5.dumps({"image_url": f"https://image.pollinations.ai/prompt/{prompt}"}, ensure_ascii=False)
3創(chuàng)建基于 OpenVINO 的 AI 智能體
Qwen-Agent 中的 LLM 統(tǒng)一使用 get_chat_model(cfg: Optional[Dict] = None) -> BaseChatModel 接口來調(diào)用,參數(shù)傳入 LLM 的配置文件,目前 OpenVINO 的 LLM 配置文件格式如下:
llm_cfg = { "ov_model_dir": model_path, "model_type": "openvino", "device": device.value, "ov_config": ov_config, "generate_cfg": {"top_p": 0.8}, }
其中各類參數(shù)的要求為:
ov_model_dir:在第一步中得到的 OpenVINO模型路徑
model_type: 對應某個具體的llm類,這里需要指定為 “openvino”
device: Intel設(shè)備名稱,目前支持”cpu”及“gpu”
ov_config:OpenVINO infer request中的可配置項
generate_cfg:模型生成時候的參數(shù)
Qwen-Agent 框架為我們提供了自帶的智能體實現(xiàn)(如 class Assistant ),開發(fā)者可以直接將定義好的 OpenVINO LLM 配置文件傳入該對象中,快速構(gòu)建智能體應用,為此 Qwen-Agent 也提供了豐富的[代碼示例]
(https://github.com/QwenLM/Qwen-Agent/tree/main/examples)
bot = Assistant(llm=llm_cfg, function_list=tools, name="OpenVINO Agent")
4完整示例和實現(xiàn)效果
同時基于以上流程,我們也在OpenVINO Notebook 倉庫中準備了完整示例供大家測試:
https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/llm-agent-functioncall
該示例會理解用戶意圖,并調(diào)用多種預先定義好的工具來完成任務,包括, wikipedia 查詢工具,天氣查詢工具和繪圖工具。以下截圖便是該 notebook 示例在 Intel AIPC 上所呈現(xiàn)的本地部署效果:
圖:Qwen-Agent與OpenVINO智能體示例
可以看到在這個例子中,智能體首先會將用戶的請求按任務進行拆解,并分別調(diào)用不同的工具獲得對應的輸出結(jié)果,并將這些輸出結(jié)果合并后,作為最終答案反饋給用戶。
5總結(jié)
AI智能體作為通用人工智能的核心載體,可以模仿人類的思維邏輯,將復雜任務進行拆解,并借助外部工具解決任務。通過利用 OpenVINO 和 Qwen-Agent 這樣的工具,我們可以非??旖莸卦诒镜貥?gòu)建一個 AI 智能體應用,在保護用戶數(shù)據(jù)隱私的同時,更快速地響應任務需求,簡單任務調(diào)用本地工具處理,復雜任務調(diào)用云端資源處理。
-
英特爾
+關(guān)注
關(guān)注
61文章
9949瀏覽量
171687 -
AI
+關(guān)注
關(guān)注
87文章
30728瀏覽量
268875 -
模型
+關(guān)注
關(guān)注
1文章
3226瀏覽量
48806 -
OpenVINO
+關(guān)注
關(guān)注
0文章
92瀏覽量
196
原文標題:基于Qwen-Agent與OpenVINO? 構(gòu)建本地AI智能體丨開發(fā)者實戰(zhàn)
文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論