使用 Qwen3 与 vLLM 开发支持 Function Call 的推理服务
一、背景介绍
Function Call 是大语言模型(LLM)的一种重要功能,允许模型根据用户输入动态调用外部工具函数,实现与外部系统交互。本教程介绍如何使用 Qwen3 模型和 vLLM 框架搭建支持 Function Call 功能的推理服务。
二、Qwen3 Function Call 原 理介绍
Qwen3 通过特殊的提示(prompt)机制和工具定义(tools schema)实现 Function Call 功能。模型推理时,会根据用户输入的内容和预定义的工具 schema 动态识别出所需调用的工具函数及其参数。
具体实现流程如下:
关键步骤详解:第一次 Qwen3 模型推理
Qwen3 模型首次推理的核心任务是解析自然语言输入并确定是否需要调用工具函数。如果需要调用工具函数,模型将以结构化的 JSON 格式输出调用信息,具体如下:
例如,当用户发送请求:
请帮我读取一下文件 /data/example.txt 的内容。
服务端会构建包含工具 schema 的 Prompt,示例如下:
{
"role": "user",
"content": "请帮我读取一下文件 /data/example.txt 的内容。",
"tools": [
{
"name": "filesystem_read_file",
"description": "读取指定路径的文件内容。",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string", "description": "文件路径"},
"max_size": {"type": "integer", "default": 102400}
},
"required": ["file_path"]
}
}
]
}
经过推理后,Qwen3 会识别用户意图,并生成如下结构化的工具调用指令:
{
"tool_calls": [
{
"name": "filesystem_read_file",
"arguments": {
"file_path": "/data/example.txt"
}
}
]
}
服务端接收到此指令后,会解析指令并调用对应的外部工具函数。
Qwen3 如何实现这一推理过程?
- Prompt 引导:Prompt 明确定义了工具函数及其参数,模型借助此结构化提示进行推理。
- 结构化输出:Qwen3 在预训练和微调阶段学习到了如何识别并生成结构化的调用指令。
- 语义解析能力:模型具备强大的自然语言理解能力,能够精准提取并映射用户请求到对应的工具调用。
三、环境准备
使用的核心组件:
- Qwen3 8B 模型
- vLLM 推理框架
- FastAPI 服务框架