当前位置: 首页 > news >正文

通义千问3-14B部署教程:支持函数调用的Agent配置

通义千问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的组合方案。这套组合有三大优势:

  1. 极简安装:无需手动下载模型权重,Ollama 自动拉取并管理;
  2. 开箱即用的可视化界面:Ollama WebUI 提供类 ChatGPT 的交互体验;
  3. 无缝支持函数调用与 Agent 扩展:通过自定义 Modelfile 可开启 JSON 输出、工具调用等功能。

更重要的是,这个组合形成了“双重缓冲”机制 —— Ollama 负责底层推理加速,WebUI 提供前端交互与会话管理,两者解耦清晰,稳定性高,适合本地开发测试或轻量级生产环境。


3. 环境准备与基础部署

3.1 系统要求

组件推荐配置
GPUNVIDIA 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-agent

5. 实现函数调用:让模型“调用工具”

下面我们演示如何让 Qwen3-14B 调用外部工具,比如获取天气、查询时间、执行计算等。

5.1 定义可用工具(Tools)

假设我们要提供两个工具:

  1. get_weather(location: str):根据城市名获取天气;
  2. 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

  1. 进入设置 → Model Management;
  2. 添加模型,输入qwen-agent
  3. 选择该模型作为默认对话模型;
  4. 开始聊天,输入:“帮我查一下上海的天气和现在的时间。”

你会发现模型自动触发工具调用逻辑(需配合后端拦截和扩展),你可以进一步集成自定义插件系统。


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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

http://www.jsqmd.com/news/287406/

相关文章:

  • 用self_cognition.json数据集强化模型身份认知
  • GPEN CUDA不可用状态排查:驱动与环境检测六步法
  • MinerU输出路径怎么设?相对路径与结果查看步骤详解
  • 手把手教你运行Qwen3-Embedding-0.6B,无需GPU
  • Qwen镜像免配置部署教程:快速上手儿童向动物图片生成
  • DevilutionX:经典游戏现代化移植与多平台适配指南
  • Qwen3-4B-Instruct低成本上线:中小企业快速部署实战
  • Qwen1.5-0.5B微调潜力:后续定制化方向探讨
  • 深度相机标定从入门到精通:专业工程师的实践指南
  • 如何用本地AI浏览器扩展重塑您的网页浏览体验?解锁隐私保护与高效智能的完美结合
  • NCM转换与音乐解密实用指南:告别加密音乐束缚全攻略
  • 5个核心优势让BabelDOC成为学术文档翻译的首选工具
  • Qwen2.5-0.5B推理性能分析:CPU环境下吞吐量实测
  • IQuest-Coder-V1部署加速:FlashAttention-2集成实操教程
  • 零代码掌握AI智能抠图:效率提升指南
  • cv_unet_image-matting如何粘贴剪贴板图片?快捷操作实战教学
  • 解锁本地AI的隐私安全:从部署到应用的完整探索指南
  • 三步构建个人流媒体备份系统:N_m3u8DL-RE全场景应用指南
  • NVIDIA Isaac Sim:从零搭建AI机器人仿真开发环境完整指南
  • 小白也能懂:Fun-ASR语音识别快速入门指南
  • Qwen2.5-0.5B散热管理:长时间运行温度控制实战方案
  • 本地AI与云端模型的混合部署方案 | 3个维度破解企业AI成本困境
  • 从音律演进到极速语音合成|Supertonic大模型镜像应用解析
  • MinerU如何支持多栏文本?布局分析模块工作原理解析
  • 企业私有化部署GPEN:安全合规与性能优化双重要求
  • 高效数据模型设计实战指南:零门槛掌握DBeaver从概念到落地全流程
  • 解锁你的桌面新次元:Sucrose动态壁纸引擎完全指南
  • 游戏ROM存储优化与高效管理全指南
  • Z-Image-Turbo与Stable Diffusion对比:UI易用性实战评测
  • 5个让代码阅读效率提升30%的编程字体解决方案