作者:楊亦誠
Qwen2 是阿里巴巴集團 Qwen 團隊研發的大語言模型和大型多模態模型系列。Qwen2 具備自然語言理解、文本生成、視覺理解、音頻理解、工具使用、角色扮演、作為 AI Agent 進行互動等多種能力。
圖:智能體中工具使用執行邏輯
Qwen-Agent 是一個 AI 智能體的開發框架。開發者可基于本框架開發 Agent 應用,充分利用基于通義千問模型(Qwen)的指令遵循、工具使用、規劃、記憶能力。同時該框架也提供了瀏覽器助手、代碼解釋器、自定義助手等示例應用。近期 OpenVINO 工具套件也作為 Qwen-Agent 的大語言模型推理后端,被集成到 llm 組件中,接下來就讓我們一起看下如何在 Intel 硬件平臺上通過 OpenVINO 和 Qwen2 構建一個純本地運行的 AI 智能體。
1轉化壓縮 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構建工具
Qwen-Agent 提供了注冊工具的機制,例如,下面我們注冊一個自己的圖片生成工具:
指定工具的name、description、和parameters,注意@register_tool('my_image_gen') 中的 'my_image_gen' 會被自動添加為這個類的 .name 屬性,將作為工具的唯一標識
實現 call(...) 函數
在這個例子中,我們定義了一個調用云端 API 工具,用來根據輸入請求,生成圖片。
@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創建基于 OpenVINO 的 AI 智能體
Qwen-Agent 中的 LLM 統一使用 get_chat_model(cfg: Optional[Dict] = None) -> BaseChatModel 接口來調用,參數傳入 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}, }
其中各類參數的要求為:
ov_model_dir:在第一步中得到的 OpenVINO模型路徑
model_type: 對應某個具體的llm類,這里需要指定為 “openvino”
device: Intel設備名稱,目前支持”cpu”及“gpu”
ov_config:OpenVINO infer request中的可配置項
generate_cfg:模型生成時候的參數
Qwen-Agent 框架為我們提供了自帶的智能體實現(如 class Assistant ),開發者可以直接將定義好的 OpenVINO LLM 配置文件傳入該對象中,快速構建智能體應用,為此 Qwen-Agent 也提供了豐富的[代碼示例]
(https://github.com/QwenLM/Qwen-Agent/tree/main/examples)
bot = Assistant(llm=llm_cfg, function_list=tools, name="OpenVINO Agent")
4完整示例和實現效果
同時基于以上流程,我們也在OpenVINO Notebook 倉庫中準備了完整示例供大家測試:
https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/llm-agent-functioncall
該示例會理解用戶意圖,并調用多種預先定義好的工具來完成任務,包括, wikipedia 查詢工具,天氣查詢工具和繪圖工具。以下截圖便是該 notebook 示例在 Intel AIPC 上所呈現的本地部署效果:
圖:Qwen-Agent與OpenVINO智能體示例
可以看到在這個例子中,智能體首先會將用戶的請求按任務進行拆解,并分別調用不同的工具獲得對應的輸出結果,并將這些輸出結果合并后,作為最終答案反饋給用戶。
5總結
AI智能體作為通用人工智能的核心載體,可以模仿人類的思維邏輯,將復雜任務進行拆解,并借助外部工具解決任務。通過利用 OpenVINO 和 Qwen-Agent 這樣的工具,我們可以非常快捷地在本地構建一個 AI 智能體應用,在保護用戶數據隱私的同時,更快速地響應任務需求,簡單任務調用本地工具處理,復雜任務調用云端資源處理。
-
英特爾
+關注
關注
60文章
9728瀏覽量
170506 -
AI
+關注
關注
87文章
28692瀏覽量
265929 -
模型
+關注
關注
1文章
3023瀏覽量
48280 -
OpenVINO
+關注
關注
0文章
73瀏覽量
130
原文標題:基于Qwen-Agent與OpenVINO? 構建本地AI智能體丨開發者實戰
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論