ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何把Qwen-Agent跑在自己的机器上:零云端依赖的完整落地路径

如何把Qwen-Agent跑在自己的机器上:零云端依赖的完整落地路径 如何把Qwen-Agent跑在自己的机器上零云端依赖的完整落地路径【免费下载链接】Qwen-AgentAgent framework and applications built upon Qwen3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent数据不能出内网但Agent要调工具、跑代码、读PDF——把推理端点指到内网的vLLM/Ollama上就能让Qwen-Agent的函数调用、代码解释器、文档RAG整条链路全部落在本地。这篇文章按能跑通 → 跑得安全 → 接上业务的顺序把这条路走一遍。关键词规划核心关键词Qwen-Agent本地部署、本地模型接入、函数调用、代码解释器、离线RAG长尾关键词Qwen-Agent vLLM本地模型配置、Qwen-Agent代码解释器Docker沙箱、Qwen-Agent自定义工具开发、Qwen-Agent内网文档问答、函数调用本地提示词fncall_prompt_type、Qwen-Agent零云端依赖部署环境自检往下走之前先确认这几项前置条件用途验证命令Python ≥ 3.9框架本体python -V本地模型服务vLLM / Ollama / LM Studio 任一提供 OpenAI 兼容端点vllm --versionDocker仅代码解释器需要沙箱执行模型生成的代码docker infoqwen-agent 本体—python -c import qwen_agent; print(qwen_agent.__version__)最小安装命令按需选 extras本地部署至少装rag和code_interpreterpip install -U qwen-agent[rag,code_interpreter] # 需要改提示词模板或工具实现时才需要拉源码 git clone https://gitcode.com/GitHub_Trending/qw/Qwen-Agent cd Qwen-Agent pip install -e .最小可运行路径vLLM 起服务 → 指过去 → 第一轮对话第一步起一个 OpenAI 兼容的本地模型服务# 7B 级别一张 16G 显存的卡就够--served-model-name 决定下面的 model 字段填什么 vllm serve Qwen/Qwen2.5-7B-Instruct --served-model-name qwen2.5-7b --port 8000验证点curl -s http://127.0.0.1:8000/v1/models能返回模型列表说明端点活着。第二步配置代码与逻辑代码分开先存一份 LLM 配置llm_config.json{ model: qwen2.5-7b, model_server: http://127.0.0.1:8000/v1, api_key: EMPTY, generate_cfg: { max_input_tokens: 6500, fncall_prompt_type: qwen } }model_server以http开头时get_chat_model会自动识别为 OpenAI 兼容类型oai不需要手写model_typeapi_key本地服务填EMPTY即可。第三步第一次本地对话import json from qwen_agent.agents import Assistant cfg json.load(open(llm_config.json, encodingutf-8)) bot Assistant( llmcfg, # 直接传 dict框架内部完成模型实例化 system_message你是一个运行在本地环境的助手回答尽量简短。 ) for resp in bot.run([{role: user, content: 一句话说说本地部署Agent的最大好处}]): print(resp)验证点终端打印出模型生成的文本且vllm serve端能看到请求日志——说明 Agent 循环、消息组装、本地推理三段全部打通。如果这一步报ValueError: Invalid model cfg先别写业务代码看文末踩坑区第 1 条。场景递进从能对话到能干活跑通对话只是起点。下面四个场景按依赖递进先读文档再执行代码然后接入你自己的业务能力最后做多源整合。场景一离线文档问答内置 RAG什么情况下需要合同、手册、研报这类文件在本地答案只能从文件里来。Assistant 自带 RAG把文件路径挂上去框架负责解析PDF/Word/PPT/TXT/HTML、切片、检索不需要你搭向量库。# 多个文件直接放进 files 列表消息里也可以临时附加 bot Assistant( llmcfg, files[./local_docs/handbook.pdf, ./local_docs/report.docx], ) for resp in bot.run([{role: user, content: 这份手册里关于沙箱隔离的说明是什么}]): print(resp)验证点回答能引用文档原文片段且模型没有联网动作。效果参考场景二模型生成代码的本地沙箱执行Code Interpreter什么情况下需要让它算一下而不是说一下——数据分析、画图、数值验证。内置的code_interpreter工具会拉起一个 Docker 容器里的 Jupyter kernel模型写的代码在容器里跑结果回传。这是本地部署里敢放开让它跑代码的关键一环。bot Assistant( llmcfg, function_list[code_interpreter], # 工具名即注册名 system_message需要计算或绘图时调用 code_interpreter 工具。 ) for resp in bot.run([{role: user, content: 用 matplotlib 画一条 sin(x) 曲线并保存为 png}]): print(resp)验证点第一次运行会先构建code-interpreter:latest镜像视网速几分钟之后容器复用秒级启动。工作目录产物落在work_dir可用环境变量M6_CODE_INTERPRETER_WORK_DIR指定生成的图直接在那里⚠️ 注意沙箱只挂载了指定工作目录属于基础隔离。生产环境要执行模型生成的代码请在这之上再叠加网络与文件系统权限限制。场景三自定义工具接入业务能力什么情况下需要RAG 之外的业务能力——查内部数据库、调自研模型服务、读本地日志。继承BaseTool加register_tool工具名即可被function_list直接引用不用改任何框架代码。import os import json5 from qwen_agent.agents import Assistant from qwen_agent.tools.base import BaseTool, register_tool register_tool(local_doc_search) class LocalDocSearch(BaseTool): description 在本地 docs 目录做关键词搜索返回文件名与命中行 parameters [{ name: keyword, type: string, description: 搜索关键词, required: True, }] def call(self, params: str, **kwargs) - str: keyword json5.loads(params)[keyword] # params 是模型给的 JSON 字符串 hits [] for name in os.listdir(./local_docs): if not name.endswith(.txt): continue for line in open(os.path.join(./local_docs, name), encodingutf-8): if keyword in line: hits.append(f{name}: {line.strip()}) return \n.join(hits) or 未找到匹配内容 bot Assistant(llmcfg, function_list[local_doc_search]) for resp in bot.run([{role: user, content: 本地文档里对超时配置是怎么规定的}]): print(resp)验证点bot运行时模型会产出形如local_doc_search({keyword: 超时})的调用返回内容再喂回模型生成最终答案。参数 schema 也可以直接写 OpenAI 兼容的 JSON Schemadict 形式框架内置校验。场景四多源文档整合与 MCP 扩展什么情况下需要答案散在 PDF、HTML 网页快照、内部系统三处。files支持混合传入本地 PDF 与 HTML 文件网页先离线抓成 HTML 存本地即可Assistant 会对所有来源统一检索bot Assistant( llmcfg, files[./local_docs/report.pdf, ./local_docs/article.html], )再往外扩需要接数据库、API 这类标准外部能力时装上 MCP 支持pip install -U qwen-agent[mcp]MCP 服务的管理逻辑在 qwen_agent/tools/mcp_manager.py本地 MCP server 可以只暴露给内网。踩坑与排查实录现象ValueError: Invalid model cfg或明明配了本地却请求发去了 DashScope。原因get_chat_model按名字推断类型——模型名含qwen且没给model_server时直接落到qwen_dashscope。解决配置里必须显式写model_server: http://...api_base/base_url等价并带上api_key: EMPTY。现象函数调用不稳定有时不调工具有时 JSON 参数截断。原因小参数模型指令遵循弱且函数调用提示词类型不匹配。解决generate_cfg里按模型系选fncall_prompt_typeQwen 系用qwen其他开源模型用nous仍不稳定就升到 14B 的指令模型这是本地部署里最值的一笔显存投入。现象code_interpreter首次调用极慢或直接报 Docker 相关错误。原因首次要现场构建沙箱镜像或 Docker 守护进程没起。解决先docker info确认守护进程正常首次构建慢属正常之后容器常驻复用。执行超时由工具的timeout参数控制默认 30 秒长任务按需调大。现象长文档问答时回答质量忽好忽坏。原因max_input_tokens超限后上下文被截断检索片段被切掉一半。解决按本地模型的上下文窗口调大该值同时保证 vLLM 端--max-model-len足够。常用参数调优速查参数推荐值适用场景副作用fncall_prompt_typeqwen/nous按模型系选择选错 → 函数调用失败率明显上升max_input_tokens65007B起长文档 RAG超过模型窗口 → 服务端 400max_retries2~3内网偶发抖动报错时等待时间拉长code_interpretertimeout30s常规数据分析调大后卡死代码会拖慢整体temperature0.2调工具/ 0.7写作工具调用场景调低过低 → 回答死板延伸行动清单把自定义工具写复杂一点参考 examples/assistant_add_custom_tool.py 里的画图 代码解释器组合写法再对照 qwen_agent/tools/base.py 理解参数校验逻辑。需要界面调试 Agent 行为装guiextra 后用 qwen_agent/gui/ 里的WebUI(bot).run()起本地 Web 界面看每一轮工具调用明细。做多 Agent 协作路由、群聊从 examples/ 里的multi_agent_router.py、group_chat_demo.py入手它们只换 Agent 编排层模型配置不变。审计代码解释器的隔离边界通读 qwen_agent/tools/code_interpreter.py 中 Docker 镜像构建与工作目录挂载部分确认它符合你的安全要求再接生产。把model_server指向内网的那一刻模型推理、工具执行、文档数据就都没有离开你的机器——Qwen-Agent 的本地化价值就是让Agent 能干活和数据不出域不再二选一。【免费下载链接】Qwen-AgentAgent framework and applications built upon Qwen3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表