news 2026/9/10 22:23:14

Qwen-Agent 本地部署教程:Transformers 加载模型并完成首次对话

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qwen-Agent 本地部署教程:Transformers 加载模型并完成首次对话

Qwen-Agent 本地部署教程:Transformers 加载模型并完成首次对话

【免费下载链接】Qwen-AgentAgent framework and applications built upon Qwen>=3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent

本教程演示在 Qwen-Agent 中用 transformers 加载本地 Qwen 模型并完成首次对话。内容覆盖环境安装、完整配置、文本/视觉模型切换与常见报错处理,面向具备基础 Python 能力的读者,无需 GPU 也能按步骤跑通。

开始前:环境检查清单

  • Python 环境:普通部署需 Python 3.9+;若还要使用 Gradio 图形界面,README 要求 Python 3.10+(GUI 非本教程必需)。
  • 框架本体:安装 PyPI 上的qwen-agent,按需勾选可选组件:
# [rag] 文档检索 / [code_interpreter] 代码执行 / [mcp] 模型上下文协议 pip install -U "qwen-agent[rag,code_interpreter,mcp]"
  • 模型加载库:本教程走 transformers 路线,需额外安装:
pip install -U transformers torch

提示:若只想调用托管服务,可跳过模型下载,参考「切换不同场景」第 3 行。

  • 模型获取:两种方式任选。已下载的模型直接填入本地文件夹路径;未下载的可用官方 CLI 提前拉到本地:
huggingface-cli download Qwen/Qwen3-4B --local-dir ./models/Qwen3-4B
  • 必须知道的核心概念:传给 Agent 的llm_cfg就是一个普通字典,用来声明"用哪个模型、从哪加载、跑在什么设备上";其中model字段(模型名或本地路径)是 transformers 路线的必填项,其余可按需省略。

首次运行的完整配置

下面这段代码可直接保存为.py文件运行,跑通"加载本地模型 → 提问 → 流式打印回答"的完整链路:

import torch from qwen_agent.agents import Assistant # 通用 Agent,内置工具调用与文档检索 # 模型配置:model 填 Hugging Face 模型名或已下载的本地目录 llm_cfg = { 'model': './models/Qwen3-4B', 'model_type': 'transformers', # 使用本地 transformers 库加载 'device': 'cuda' if torch.cuda.is_available() else 'cpu', } bot = Assistant(llm=llm_cfg, name='Local Assistant') messages = [{'role': 'user', 'content': '用一句话介绍你自己'}] for chunk in bot.run(messages=messages): # 流式输出 print(chunk, end='', flush=True)

关键行说明:

  • 'model_type': 'transformers':决定由哪个加载器处理模型。该值对应注册在 transformers_llm.py 中的Transformers类,它会读取模型的 Hugging Face 配置,自动判断是纯文本模型还是视觉模型,再把权重加载到指定设备。
  • 'device':指定张量运行设备。缺省时默认'cpu'(见源码中.to(cfg.get('device', 'cpu'))),4B 参数模型在 CPU 上可以对话,只是速度慢。
  • bot.run(messages=messages):输入为消息列表(role/content结构),返回生成器,逐块产出回答,方便打字机式打印。

提示:首次运行会从缓存目录加载权重并初始化 tokenizer,耗时取决于硬件,属正常现象。

切换不同场景:三种用法的配置差异

同一套代码框架下,切换场景通常只改llm_cfg的几个字段。

场景model_type需要填写的字段说明
本地纯文本模型transformersmodel、device进程内加载权重,无需服务
本地视觉模型transformersmodel、device换 VL 模型即可,加载器自动启用视觉输入
OpenAI 兼容服务(vLLM/Ollama 等)省略model、model_server、api_key由外部服务承载模型,客户端轻量

场景 1:本地视觉模型—— 只改model一行,其余不变:

llm_cfg = {'model': 'Qwen/Qwen3-VL-4B', 'model_type': 'transformers', 'device': 'cuda'}

原理:Transformers加载 processor 时若发现不是纯 tokenizer,就自动开启多模态输入能力,无需手动声明。

场景 2:接入已部署的 OpenAI 兼容服务

llm_cfg = { 'model': 'Qwen3-8B', # 服务侧部署的模型名 'model_server': 'http://localhost:8000/v1', 'api_key': 'EMPTY', # 本地服务可填 EMPTY,或用 OPENAI_API_KEY 环境变量 }

提示:不写model_type时框架默认走 OpenAI 兼容接口(oai),api_key也可改由环境变量提供。更多组合见 examples/ 下的assistant_qwen3.pyassistant_qwen3vl.py

排障:现象 → 原因 → 处理

现象原因处理
ValueError: Please provide the model id or directory through 'model' in cfg.llm_cfg缺少model字段补上model,填模型名或本地目录路径
ImportError: Could not import classes from transformers...未安装 transformers 库执行pip install -U transformers
配置加载阶段直接报错model指向的本地目录不存在,或不是完整模型目录(缺 config 等文件)核对路径;未下载完的模型用huggingface-cli download补全后再试
⚠️ CUDA OOM / 内存不足模型权重与中间张量超出设备显存device改为'cpu'或换小参数模型;大模型建议改用 vLLM/SGLang 起服务,走场景 2
回答含工具调用文本但工具未执行服务端启用了原生工具解析,与框架内置解析冲突Qwen3 系列按 README 建议不要加--enable-auto-tool-choice--tool-call-parser hermes,由框架自行解析

延伸阅读

  • examples/:可运行的完整示例,含工具调用、MCP、浏览器助手等
  • qwen_agent/llm/:各 LLM 后端实现,base.py定义了统一的chat接口
  • qwen_agent/agents/assistant.py:Assistant 的实现,展示 RAG 知识如何拼入提示词
  • qwen_agent/tools/:内置工具集合,function_list可直接引用其中注册名

llm_cfg中的modelmodel_typedevice三处按硬件与模型类型填对,Assistant 就能完成加载与对话,后续扩展工具、RAG 都基于同一个字典继续叠加。

【免费下载链接】Qwen-AgentAgent framework and applications built upon Qwen>=3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 22:22:41

TVBoxOSC 安装教程:3 步在安卓电视盒子上装好并开始播放

TVBoxOSC 安装教程:3 步在安卓电视盒子上装好并开始播放 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC TVBoxOSC 是面向智能电视和安…

作者头像 李华
网站建设 2026/9/10 22:20:45

TVBoxOSC 容器化部署:电视盒子管理一条命令跑起来

TVBoxOSC 容器化部署:电视盒子管理一条命令跑起来 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC 在电视盒子上折腾过部署的人都知道…

作者头像 李华
网站建设 2026/9/10 22:19:17

burp靶场--业务逻辑漏洞

burp靶场–业务逻辑漏洞 https://portswigger.net/web-security/logic-flaws#what-are-business-logic-vulnerabilities ### 什么是业务逻辑漏洞? 业务逻辑漏洞是应用程序设计和实现中的缺陷,允许攻击者引发意外行为。这可能使攻击者能够操纵合法功能来…

作者头像 李华
网站建设 2026/9/10 22:19:02

Dear ImGui OpenGL 渲染后端怎么选:现代 GL 项目为何应避免 opengl2

Dear ImGui OpenGL 渲染后端怎么选:现代 GL 项目为何应避免 opengl2 【免费下载链接】imgui Dear ImGui: Bloat-free Graphical User interface for C with minimal dependencies 项目地址: https://gitcode.com/GitHub_Trending/im/imgui 当你的项目已经在用…

作者头像 李华