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

評(píng)論