中文 | 英語
Qwen-Agent 是一個基於 Qwen 的指令遵循、工具使用、規劃和記憶功能開發 LLM 應用程式的框架。它還附帶範例應用程序,例如瀏覽器助手、程式碼解釋器和自訂助手。
2024年9月18日:新增了Qwen2.5-Math演示,以展示Qwen2.5-Math的工具整合推理功能。注意:python 執行器沒有沙箱化,僅用於本地測試,不適用於生產用途。
從 PyPI 安裝穩定版本:
pip install -U "qwen-agent[gui,rag,code_interpreter,python_executor]"# 或使用`pip install -U qwen-agent` 來滿足最低要求。 gui ] 用於基於 Gradio 的 GUI 支援;# [rag] 用於 RAG 支援;# [code_interpreter] 用於程式碼解釋器支援;# [python_executor] 用於 Qwen2.5-Math 的工具整合推理。
或者,您可以從來源安裝最新的開發版本:
git 克隆 https://github.com/QwenLM/Qwen-Agent.gitcd Qwen-Agent pip install -e ./"[gui,rag,code_interpreter,python_executor]"# 或 `pip install -e ./` 以滿足最低要求。
您可以使用阿里雲DashScope提供的模型服務,也可以使用開源的Qwen模型部署並使用您自己的模型服務。
如果您選擇使用 DashScope 提供的模型服務,請確保將環境變數DASHSCOPE_API_KEY
設定為您唯一的 DashScope API 金鑰。
或者,如果您更願意部署和使用自己的模型服務,請按照 Qwen2 README 中提供的說明來部署 OpenAI 相容的 API 服務。具體而言,請參閱 vLLM 部分以了解高吞吐量 GPU 部署,或參閱 Ollama 部分以了解本機 CPU (+GPU) 部署。
Qwen-Agent 提供原子元件,例如 LLM(繼承自class BaseChatModel
並帶有函數呼叫)和工具(繼承自class BaseTool
),以及高階元件,如 Agents(衍生自class Agent
)。
以下範例說明了建立能夠讀取 PDF 檔案並利用工具以及合併自訂工具的代理程式的過程:
import pprintimport urllib.parseimport json5from qwen_agent.agents import Assistantfrom qwen_agent.tools.base import BaseTool, register_tool# 第1 步(可選):新增名為`my_image_gen`m 的自訂工具。 BaseTool):# `description` 告訴 Agent 這個工具的功能。的參數.parameters = [{'name': 'prompt','type': 'string','description': '所需圖像內容的詳細描述,英文','required': True}]def call(self , params: str, **kwargs) -> str:# `params` 是LLM代理程式產生的參數。 dumps( {'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},ensure_ascii=False)# 步驟 2:設定您正在使用的 LLM.llm_cfg = {# 使用由DashScope:'model ': 'qwen-max','model_server': 'dashscope',# 'api_key': 'YOUR_DASHSCOPE_API_KEY',# 如果此處未設定'api_key',它將使用`DASHSCOPE_API_KEY' 環境變數 # 使用與OpenAI API 相容的模型服務,例如vLLM 或Ollama:# 'model': 'Qwen2-7B-Chat',# 'model_server': 'http://localhost:8000/v1', # base_url,也稱為as api_base# 'api_key ': 'EMPTY',# (可選)用於產生的LLM超參數:'generate_cfg': {'top_p': 0.8} }# 第 3 步:建立代理程式。這裡我們以 `Assistant` 代理為例,它能夠使用工具和讀取檔案。 ,- 然後執行程式碼`request.get(image_url)` 下載圖像,- 最後從給定文件中選擇圖像操作來處理圖像。 ', 'code_interpreter'] # `code_interpreter` 是一個用於執行程式碼的內建工具。 ,system_message=system_instruction,function_list=tools,files=files)# 步驟4:將代理程式作為chatbot 執行.messages = [] # 儲存聊天歷史記錄。 90 度」。query = input('使用者查詢: ')# 將使用者查詢附加到聊天記錄中。messages.append({'role': 'user', 'content ': query})response = []for response in bot.run(messages=messages):# 串流輸出.print('bot response:')pprint.pprint(response, indent=2)# 將機器人回應附加到聊天記錄.messages.extend(回應)
除了使用內建代理實作(例如class Assistant
之外,您還可以透過繼承class Agent
來開發自己的代理實作。更多使用範例請參閱範例目錄。
是的。 LLM 類別提供函數呼叫。另外,有些Agent類別也建立在函數呼叫能力之上,例如FnCallAgent和ReActChat。
我們發布了快速的 RAG 解決方案,以及昂貴但有競爭力的代理,用於對超長文件進行問答。它們在兩個具有挑戰性的基準測試中成功地超越了原始生長上下文模型,同時效率更高,並且在涉及 1M 代幣上下文的單針「大海撈針」壓力測試中表現完美。有關技術詳細信息,請參閱博客。
BrowserQwen 是一位基於 Qwen-Agent 建構的瀏覽器助手。詳細資訊請參閱其文件。
程式碼解釋器沒有沙箱,它在您自己的環境中執行程式碼。請不要讓Qwen執行危險任務,也不要直接將程式碼解釋器用於生產目的。