Qwen3 模型在设计上就包含了Agent能力和工具调用支持。在 vLLM 中部署 Qwen3 模型并启用其工具能力,主要涉及到以下几个方面:
-
vLLM 版本要求: 确保你使用的 vLLM 版本支持 Qwen3 的工具调用特性。根据Qwen官方文档,vllm>=0.8.5 是一个推荐的版本。
-
启动 vLLM 服务时的参数:
为了启用 Qwen3 的工具调用能力,你需要在启动 vLLM 服务时指定相关的参数。Qwen 官方文档中提到了一个重要的参数组合:
a. --enable-auto-tool-choice: 启用自动工具选择。
b. --tool-call-parser hermes: 指定工具调用的解析器为 hermes。
因此,一个基本的 vLLM 启动命令会是这样的:
Bash
vllm serve Qwen/Qwen3-模型名称 \\ --tensor-parallel-size 1 \\ # 根据你的GPU数量和模型大小调整 --host 0.0.0.0 \\ --port 8000 \\ --enable-auto-tool-choice \\ --tool-call-parser hermes # 其他 vLLM 参数,如 --gpu-memory-utilization, --max-model-len, --max-num-seqs 等
请将 Qwen/Qwen3-模型名称 替换为你实际使用的 Qwen3 模型路径,例如 Qwen/Qwen3-4B 或 Qwen/Qwen3-32B。
- 与工具集成的逻辑:
虽然 vLLM 负责模型的推理,但工具调用本身还需要一个框架来定义工具、将工具的描述传递给模型,并解析模型的工具调用指令后执行相应的工具。
Qwen 官方推荐使用 Qwen-Agent 来更好地利用 Qwen3 的 Agent 能力。Qwen-Agent 封装了工具调用模板和解析器,大大降低了编码复杂度。
如果你使用 Qwen-Agent,大致流程会是:
a. 定义工具: 你需要以特定的格式定义你的工具,可以是自定义的 Python 函数,或者使用 MCP(ModelScope Communication Protocol)配置文件。
b. 配置 LLM: 在 Qwen-Agent 中配置你的 LLM,指向 vLLM 提供的 OpenAI 兼容 API endpoint。 Python
from qwen_agent.agents import Assistantllm_cfg = { 'model': 'Qwen3-4B', # 这里是模型名称,Qwen-Agent会根据配置去访问vLLM 'model_server': 'http://localhost:8000/v1', # vLLM 服务地址 'api_key': 'EMPTY', # 如果vLLM没有设置API key,则为空 # 其他参数,例如: # 'generate_cfg': { # 'thought_in_content': True, # 如果响应包含<think>...</think>块,设置为True # },}# 定义你的工具,例如:tools = [ {'mcpServers': { 'time': { 'command': 'uvx', 'args': ['mcp-server-time', '--local-timezone=Asia/Shanghai'] } }}, 'code_interpreter', # 内置工具 # ... 更多自定义工具]bot = Assistant(llm=llm_cfg, function_list=tools)messages = [{'role': 'user', 'content': '今天北京时间几点?'}]for responses in bot.run(messages=messages): print(responses)
c. 与 Agent 交互: 将用户输入传递给 Qwen-Agent,Qwen-Agent 会负责将工具的描述发送给模型,解析模型的工具调用输出,并执行相应的工具,然后将工具执行结果再返回给模型进行后续的生成。
- 思考模式(Thinking Mode)和非思考模式(Non-Thinking Mode):
Qwen3 模型支持这两种模式,可以在 enable_thinking 参数控制。在 vLLM 中,可以通过 tokenizer.apply_chat_template 的 enable_thinking 参数来控制。对于工具调用,通常会与“思考模式”结合使用,因为工具调用往往需要模型进行一定的推理和规划。
总结步骤:
-
安装或更新 vLLM: 确保 pip install vllm>=0.8.5。
-
下载 Qwen3 模型: 从 Hugging Face 或 ModelScope 下载你需要的 Qwen3 模型。
-
启动 vLLM 服务:Bash
vllm serve /path/to/your/Qwen3-model \\ --host 0.0.0.0 \\ --port 8000 \\ --enable-auto-tool-choice \\ --tool-call-parser hermes \\ # 根据实际情况添加其他vLLM参数,如GPU内存、最大序列长度等
- 使用 Qwen-Agent 进行工具调用: 在你的 Python 代码中,导入 qwen_agent.agents.Assistant,配置 llm_cfg 指向 vLLM 服务,并定义 function_list 来注册你的工具。然后通过 bot.run(messages=messages) 来与 Agent 进行交互。
重要提示:
● 模型路径: 确保 --model 参数指向的路径是完整的 Qwen3 模型文件所在目录。
● 资源配置: 根据你的 GPU 内存和模型大小调整 --tensor-parallel-size、–gpu-memory-utilization 等参数,以确保模型能够顺利加载并运行。
● Qwen-Agent 文档: 强烈建议查阅 Qwen 官方的文档,特别是关于 Agent 能力和工具调用的部分,以获取最详细和最新的用法示例。因为工具调用的具体实现和最佳实践可能会随着模型和框架的更新而有所变化。
通过以上配置和使用 Qwen-Agent,你应该能够成功在 vLLM 部署的 Qwen3 模型上启用工具能力。