Qwen-Agent
基于 Qwen 构建具备工具调用、文档问答与代码执行能力的应用。
按维度查看评分与理由
证据显示:代码解释器工具基于Docker容器,但README明确警告'python executor is not sandboxed',且生产环境需谨慎使用,说明权限控制不充分。用户确认机制未见,工具调用由LLM自动触发,无人工确认。数据流透明度有限,README提及API key环境变量,但未详细说明数据流向。敏感数据处理方面,API key通过环境变量传递,但未说明加密或保护措施。依赖安全未提及,无依赖审计或漏洞扫描。外部影响方面,代码解释器可执行任意代码,但有限制说明。回滚机制未见。来源归属方面,代码有版权声明,但未明确第三方组件来源。
证据显示:README和示例代码一致,API设计自洽。依赖可用性方面,依赖外部服务如DashScope、Docker、Node.js等,但未提供版本锁定或镜像。失败消息方面,测试中有断言,但未提供用户友好的错误提示。
证据显示:面向开发者,提供多种场景示例(RAG、MCP、代码解释器等)。能力边界有说明,如代码解释器非沙箱。触发精度方面,工具调用由LLM决定,但未提供精确控制机制。环境适配方面,支持多种模型服务(DashScope、vLLM、Ollama),但依赖特定环境。
证据显示:README结构清晰,有安装说明、FAQ、示例。命名稳定,但未提供版本历史。已知限制有提及(如代码解释器非沙箱)。许可证为Apache-2.0,完整。版本变更日志未见,维护责任未明确。
证据显示:输出为流式文本,可用性高。边际价值高,提供多种功能。成本效益方面,依赖外部API和Docker,成本未评估。
证据显示:README中的声明部分有示例支持,但未提供独立验证。跨来源佐证有限,仅依赖自身文档。事实与推断分离不明确。
- 代码解释器非沙箱,生产环境使用需谨慎。
- 未提供用户确认机制,工具调用可能自动执行。
- 依赖外部服务,需注意API key安全。
这个 Agent 能做什么,适合哪些场景?
Qwen-Agent 是面向 Qwen 的 LLM 应用框架,覆盖指令跟随、工具使用、规划与记忆能力。它提供继承自 BaseChatModel 的 LLM 类、继承自 BaseTool 的工具,以及派生自 Agent 的高层代理组件。内置示例包括 Browser Assistant、Code Interpreter 与 Custom Assistant,并提供基于 Gradio 5 的 WebUI。应用可调用 DashScope 模型服务,或连接 vLLM、Ollama 等 OpenAI API 兼容服务;README 也说明其作为 Qwen Chat 的后端。代码解释器通过本地 Docker 容器运行,文档明确提示其生产环境隔离仍需谨慎评估。
开发者可用 @register_tool 注册继承 BaseTool 的工具,并在 call(params, **kwargs) 中读取模型生成的参数并返回结果。通过 Assistant(llm=..., system_message=..., function_list=..., files=...),代理可读取提供的文件、选择已注册工具或内置 code_interpreter,并以 bot.run(messages=messages) 流式产生响应。LLM 配置可使用 qwen_dashscope,或设置 model_server 连接兼容 OpenAI API 的服务;generate_cfg 支持 top_p、max_input_tokens、fncall_prompt_type 与 use_raw_api 等参数。WebUI(bot).run() 可启动 Gradio 界面;MCP 配置可通过 command、args 定义 memory、filesystem 或 sqlite 等服务器。
- 需要把自定义图像生成服务注册为 my_image_gen,并让 Qwen 代理按任务顺序调用该服务的 Python 开发者。
- 需要让助手读取 PDF 等已提供文件,再结合 code_interpreter 完成文件相关操作的本地应用开发者。
- 需要在 DashScope 与自部署 vLLM 或 Ollama 服务之间配置模型接入的 Qwen 应用团队。
- 需要通过 MCP 接入 memory、受限路径 filesystem 或 SQLite 服务的开发者。
- 需要以 WebUI(bot).run() 快速展示内部代理原型的团队。
- 需要对超长文档实施 RAG 问答,或评估 parallel_doc_qa 示例的研究与工程人员。
这个 Agent 有哪些优点和局限?
- 提供 BaseChatModel、BaseTool 与 Agent 三层组件,既可组装 Assistant,也可继承 Agent 自定义实现。
- 默认函数调用模板原生支持并行函数调用,README 还提供多步、多轮工具调用示例。
- 同一框架覆盖 Gradio WebUI、RAG、MCP 和 Docker 代码解释器等可选能力。
- 可接入 DashScope,也可通过 model_server 使用 vLLM 或 Ollama 等 OpenAI API 兼容服务。
- DashScope 路径需要 DASHSCOPE_API_KEY;自部署路径需要自行部署并维护模型服务。
- 代码解释器依赖本地 Docker,且文档声明仅提供基础隔离,生产使用仍需谨慎。
- GUI 要求 Python 3.10 或更高版本。
- MCP 示例还依赖外部 MCP 服务器及其运行环境;SQLite 示例涉及 Node.js、uv、Git 和 SQLite。
如何安装或部署这个 Agent?
最小安装:
pip install -U qwen-agent包含 GUI、RAG、代码解释器和 MCP 的可选组件:
pip install -U "qwen-agent[gui,rag,code_interpreter,mcp]"也可从源码安装:
git clone https://github.com/QwenLM/Qwen-Agent.git
cd Qwen-Agent
pip install -e ./"[gui,rag,code_interpreter,mcp]"使用 DashScope 时设置 DASHSCOPE_API_KEY;GUI 需要 Python 3.10 或更高版本。使用内置代码解释器前,须在本机安装并运行 Docker。
如何使用这个 Agent?
先配置 llm_cfg,例如 {'model': 'qwen-max-latest', 'model_type': 'qwen_dashscope'},并通过环境变量提供 DASHSCOPE_API_KEY;或设置 model、model_server 和 api_key 连接 vLLM 或 Ollama 等兼容服务。随后从 qwen_agent.agents 导入 Assistant,传入 llm、system_message、function_list 和可选 files,调用 bot.run(messages=messages) 并迭代其流式响应。自定义工具应继承 BaseTool,并用 @register_tool 注册后写入 function_list。若需要网页界面,执行 from qwen_agent.gui import WebUI; WebUI(bot).run()。MCP 示例还要求相应服务器命令可执行;README 的 SQLite 示例列出 Node.js、uv 0.4.18+、Git 与 SQLite。
这个 Agent 与同类方案有什么区别?
模型服务接入可在 DashScope 与自部署的 OpenAI API 兼容服务之间选择,README 举例 vLLM 和 Ollama。对于 Qwen3,README 建议由 Qwen-Agent 解析 vLLM 工具输出;对于 Qwen3-Coder,则建议启用 vLLM 内置工具解析并结合 use_raw_api。