通义千问3-14B部署教程:支持函数调用的Agent配置
1. 为什么选择 Qwen3-14B?
如果你正在找一个性能接近30B级别、但单卡就能跑动的大模型,那 Qwen3-14B 很可能是目前最理想的选择。它不是 MoE 稀疏架构,而是全参数激活的 Dense 模型,148亿参数在 fp16 下占 28GB 显存,FP8 量化后仅需 14GB —— 这意味着 RTX 4090(24GB)可以轻松全速运行。
更关键的是,它支持两种推理模式:
- Thinking 模式:显式输出
<think>推理过程,在数学、代码和逻辑任务中表现接近 QwQ-32B; - Non-thinking 模式:隐藏中间步骤,响应速度提升一倍,适合日常对话、写作、翻译等高频交互场景。
再加上原生支持128k 上下文(实测可达131k),能一次性处理近40万汉字的长文档,无论是分析财报、读论文还是做摘要都游刃有余。
而且它是Apache 2.0 协议开源,允许商用,社区生态也成熟,已集成 vLLM、Ollama、LMStudio 等主流框架,一条命令就能启动服务。
2. 部署方案设计:Ollama + Ollama WebUI 双重加持
虽然 Qwen3-14B 支持多种部署方式,但我们推荐使用Ollama + Ollama WebUI的组合方案。这套组合有三大优势:
- 极简安装:无需手动下载模型权重,Ollama 自动拉取并管理;
- 开箱即用的可视化界面:Ollama WebUI 提供类 ChatGPT 的交互体验;
- 无缝支持函数调用与 Agent 扩展:通过自定义 Modelfile 可开启 JSON 输出、工具调用等功能。
更重要的是,这个组合形成了“双重缓冲”机制 —— Ollama 负责底层推理加速,WebUI 提供前端交互与会话管理,两者解耦清晰,稳定性高,适合本地开发测试或轻量级生产环境。
3. 环境准备与基础部署
3.1 系统要求
| 组件 | 推荐配置 |
|---|---|
| GPU | NVIDIA RTX 3090 / 4090 或更高(≥24GB 显存) |
| 显存 | FP16 模式需 28GB,建议使用 FP8 量化版(14GB) |
| 内存 | ≥32GB |
| 存储 | ≥50GB 可用空间(含缓存) |
| 操作系统 | Ubuntu 20.04+ / macOS / Windows(WSL2) |
提示:消费级显卡如 4090 在 FP8 模式下可实现约 80 token/s 的生成速度,完全满足实时对话需求。
3.2 安装 Ollama
打开终端,执行以下命令安装 Ollama:
curl -fsSL https://ollama.com/install.sh | sh安装完成后,启动服务:
ollama serve保持该进程运行,另开一个终端进行后续操作。
3.3 拉取 Qwen3-14B 模型
Ollama 已官方支持qwen:14b模型,直接拉取即可:
ollama pull qwen:14b如果你想使用 FP8 量化版本以节省显存,可以用:
ollama pull qwen:14b-fp8拉取完成后,你可以先试运行一下:
ollama run qwen:14b输入一段测试文本,比如:“请用中文写一首关于春天的五言绝句”,看看是否能正常响应。
4. 启用函数调用能力:构建你的第一个 Agent
Qwen3-14B 原生支持函数调用(Function Calling),这是实现 Agent 能力的核心功能。我们可以通过编写Modelfile来启用这一特性。
4.1 创建自定义 Modelfile
新建一个文件Modelfile.agent,内容如下:
FROM qwen:14b-fp8 # 启用工具调用和 JSON 输出 TEMPLATE """{{ if .Messages }} {{ range .Messages }}{{ if eq .Role "user" }} <|im_start|>user {{ .Content }}<|im_end|> {{ else }} <|im_start|>assistant {{ .Content }}<|im_end|> {{ end }}{{ end }} {{ else }} <|im_start|>user {{ .Prompt }}<|im_end|> {{ end }} <|im_start|>assistant """ # 设置停止词 STOP <|im_end|> STOP <|im_start|> # 允许 JSON 格式输出 PARAMETER num_ctx 131072 # 支持 128k 上下文 PARAMETER repeat_penalty 1.1 PARAMETER temperature 0.6注意:目前 Ollama 尚未完全开放结构化输出控制,但 Qwen 官方模型内部已内置对
<tool_call>和 JSON 的识别能力。
4.2 构建支持 Agent 的模型镜像
执行构建命令:
ollama create qwen-agent -f Modelfile.agent构建成功后,你就可以用这个名字来运行具备 Agent 能力的模型:
ollama run qwen-agent5. 实现函数调用:让模型“调用工具”
下面我们演示如何让 Qwen3-14B 调用外部工具,比如获取天气、查询时间、执行计算等。
5.1 定义可用工具(Tools)
假设我们要提供两个工具:
get_weather(location: str):根据城市名获取天气;get_current_time():返回当前时间。
我们将这些工具信息以 JSON Schema 形式传递给模型。
[ { "name": "get_weather", "description": "获取指定城市的天气情况", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市名称,例如北京、上海" } }, "required": ["location"] } }, { "name": "get_current_time", "description": "获取当前北京时间", "parameters": { "type": "object", "properties": {} } } ]5.2 发送带工具定义的请求
使用 Ollama API 发起请求(需提前启动ollama serve):
import requests import json tools = [ { "name": "get_weather", "description": "获取指定城市的天气情况", "parameters": { "type": "object", "properties": { "location": {"type": "string", "description": "城市名称"} }, "required": ["location"] } }, { "name": "get_current_time", "description": "获取当前北京时间", "parameters": {"type": "object", "properties": {}} } ] data = { "model": "qwen-agent", "messages": [ {"role": "user", "content": "今天北京天气怎么样?现在几点了?"} ], "tools": tools, "format": "json" # 强制返回 JSON 结构 } response = requests.post('http://localhost:11434/api/chat', json=data, stream=False) result = response.json() print(json.dumps(result, indent=2, ensure_ascii=False))5.3 解析模型输出并执行工具调用
模型可能会返回类似这样的响应:
{ "message": { "role": "assistant", "content": "", "tool_calls": [ { "function": { "name": "get_weather", "arguments": {"location": "北京"} } }, { "function": { "name": "get_current_time", "arguments": {} } } ] } }此时你需要在代码中解析tool_calls,依次调用对应函数,并将结果回传给模型完成最终回复。
5.4 完整 Agent 流程示例
def get_weather(location): return f"{location}今天晴天,气温20℃" def get_current_time(): from datetime import datetime return datetime.now().strftime("北京时间 %Y-%m-%d %H:%M:%S") # 第一步:发送用户问题 + 工具列表 # (上面已完成) # 第二步:收到 tool_calls 后执行 tool_results = [] for call in result['message']['tool_calls']: name = call['function']['name'] args = call['function']['arguments'] if name == 'get_weather': res = get_weather(**args) elif name == 'get_current_time': res = get_current_time() tool_results.append({ "tool_call_id": call['id'], "role": "tool", "name": name, "content": res }) # 第三步:将工具结果追加到对话历史,再次请求模型生成最终回答 final_messages = data['messages'] + [result['message']] + tool_results final_response = requests.post( 'http://localhost:11434/api/generate', json={ "model": "qwen-agent", "prompt": final_messages[-1]['content'] } ).json() print("最终回答:", final_response.get('response'))这样就完成了一个完整的Agent 工作流:理解意图 → 规划动作 → 调用工具 → 汇总输出。
6. 部署 Ollama WebUI:打造图形化交互界面
为了让非技术人员也能方便使用,我们可以部署Ollama WebUI,提供美观的聊天界面。
6.1 使用 Docker 快速部署
确保已安装 Docker 和 Docker Compose。
创建docker-compose.yml文件:
version: '3.8' services: ollama: image: ollama/ollama ports: - "11434:11434" volumes: - ollama:/root/.ollama webui: image: ghcr.io/open-webui/open-webui:main ports: - "3000:8080" environment: - OLLAMA_BASE_URL=http://ollama:11434 depends_on: - ollama volumes: - webui_data:/app/backend/data volumes: ollama: webui_data:启动服务:
docker compose up -d访问http://localhost:3000,注册账号后即可进入 WebUI 界面。
6.2 在 WebUI 中使用 qwen-agent
- 进入设置 → Model Management;
- 添加模型,输入
qwen-agent; - 选择该模型作为默认对话模型;
- 开始聊天,输入:“帮我查一下上海的天气和现在的时间。”
你会发现模型自动触发工具调用逻辑(需配合后端拦截和扩展),你可以进一步集成自定义插件系统。
7. 性能优化与常见问题
7.1 如何切换 Thinking / Non-thinking 模式?
在调用时通过 prompt 控制:
- 开启思考模式:在问题前加上
[THINK]或引导语:“请一步步推理”; - 关闭思考模式:直接提问,或加
[FAST]标识。
也可以通过 Modelfile 设置默认行为:
PARAMETER temperature 0.7 SYSTEM "你是一个高效助手,默认不展示推理过程。当用户要求‘详细解释’或包含‘[THINK]’时,才输出 <think>...</think> 推理链。"7.2 显存不足怎么办?
- 使用
qwen:14b-fp8版本(14GB); - 启用
num_gpu参数限制 GPU 数量; - 在 vLLM 中使用 PagedAttention 进一步降低显存占用。
7.3 函数调用不稳定?
- 确保 prompt 中明确说明可用工具;
- 使用
format: json强制结构化输出; - 对低置信度的 tool_call 做二次校验。
8. 总结
Qwen3-14B 是当前开源社区中极具性价比的一款大模型。它凭借148亿全参数、双推理模式、128k上下文、多语言互译和原生函数调用能力,成为“单卡守门员”级别的存在。
通过Ollama + Ollama WebUI的组合部署方案,我们不仅实现了快速本地化运行,还构建了支持 Agent 功能的完整工作流。无论是用于个人知识库问答、自动化脚本调度,还是企业级轻量 AI 助手,这套方案都能快速落地。
更重要的是,它采用Apache 2.0 商用许可,没有法律风险,非常适合初创团队、独立开发者和教育项目使用。
下一步,你可以尝试:
- 集成 RAG 实现文档智能问答;
- 搭配 LangChain 或 LlamaIndex 构建复杂 Agent;
- 将 WebUI 嵌入企业内部系统,打造专属 AI 助手。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。