建设网站员工招聘策划方案先进网站
2026/4/17 4:46:38 网站建设 项目流程
建设网站员工招聘策划方案,先进网站,全球设计公司排名,湖北钟祥建设局网站如何调用Qwen2.5工具函数#xff1f;Function Calling部署教程 你是不是也遇到过这样的问题#xff1a;想让大模型自动查天气、订机票、读取数据库#xff0c;或者把用户一句话变成可执行的操作#xff0c;但每次都要手动解析意图、写一堆if-else逻辑#xff1f;其实Function Calling部署教程你是不是也遇到过这样的问题想让大模型自动查天气、订机票、读取数据库或者把用户一句话变成可执行的操作但每次都要手动解析意图、写一堆if-else逻辑其实通义千问2.5-7B-Instruct已经原生支持Function Calling——它能自己判断要不要调用工具、自动构造标准JSON参数、甚至在一次响应中完成“思考→调用→整合”全流程。这篇教程不讲理论不堆参数只带你从零开始在本地电脑上跑通Qwen2.5的工具函数调用。无论你是刚接触Agent开发的新手还是想快速验证一个业务想法的工程师都能照着操作15分钟内看到真实效果输入“帮我查上海今天最高气温”模型自动调用天气API并返回结构化结果。不需要GPU服务器不用配环境变量连Docker都不用装。RTX 3060显卡、Mac M1芯片、甚至一台8GB内存的笔记本都能跑起来。1. 先搞懂Qwen2.5的Function Calling到底是什么很多人一听“Function Calling”第一反应是“又要学新框架”其实完全不是。对Qwen2.5来说这只是一个内置能力——就像它天生会写诗、会解数学题一样它也天生会“看懂你要它做什么并且知道该找谁帮忙”。1.1 它不是插件也不是外挂Qwen2.5-7B-Instruct在训练阶段就学习了大量工具调用对话数据它的指令微调Instruct版本特别强化了三件事识别意图能准确区分“请写一首诗”纯生成和“请查北京明天的PM2.5”需调用工具生成规范JSON输出严格符合OpenAI Function Calling Schema的JSON格式字段名、类型、必填项全对齐支持多轮协同一次请求里可以调用多个工具也能在工具返回后继续推理、总结、再调用这和早期靠Prompt Engineering硬凑JSON的方式有本质区别前者是模型“真懂”后者是“蒙对”。1.2 和老版本Qwen比强在哪能力点Qwen2-7B-InstructQwen2.5-7B-Instruct工具调用稳定性需强Prompt约束易漏字段内置对齐JSON格式错误率2%多工具并发支持基本不支持可同时生成2个以上function_call数组参数校验能力无自动校验自动拒绝缺失required字段的调用中文工具名理解偶尔混淆“查天气”和“查股票”在CMMLU-Tool子集上准确率提升27%简单说以前你要当“翻译官”把人话翻成机器能懂的JSON现在Qwen2.5自己就是翻译官你只要告诉它“你想干什么”它来决定怎么干、找谁干、怎么收尾。2. 零基础部署三步跑通本地Function Calling我们不走复杂路线。不碰vLLM集群不配Kubernetes就用最轻量、社区最成熟的Ollama方案——它像Docker一样简单但专为大模型设计。2.1 第一步安装Ollama5分钟搞定Windows/macOS去 https://ollama.com/download 下载安装包双击安装LinuxUbuntu/Debian终端一行命令curl -fsSL https://ollama.com/install.sh | sh安装完验证终端输入ollama --version看到类似ollama version 0.3.10就成功了小贴士Ollama默认使用GPU加速CUDA或Metal如果你只有CPU它会自动降级不影响功能只是速度慢一点——别担心Qwen2.5量化后4GB大小CPU也能跑。2.2 第二步拉取并运行Qwen2.5-7B-Instruct模型Qwen官方已将2.5系列镜像上传至Ollama Hub直接拉取即可ollama pull qwen2.5:7b-instruct-q4_k_m这个标签名里的q4_k_m表示4-bit量化版本文件仅约4GBRTX 3060显存占用不到6GB推理速度稳定在110 tokens/s。拉取完成后启动模型服务ollama run qwen2.5:7b-instruct-q4_k_m你会看到类似这样的欢迎界面 Running qwen2.5:7b-instruct-q4_k_m Loading model... Model loaded in 8.2s Ready此时模型已在本地运行等待你的第一条带工具定义的请求。2.3 第三步写一个真实可用的工具调用示例我们以“查询实时天气”为例。先定义工具函数Python再构造符合Qwen2.5要求的系统提示system prompt和用户消息user message。创建weather_tool.pyimport requests import json def get_weather(city: str) - dict: 查询指定城市的实时天气模拟接口实际可替换为高德/和风API Args: city: 城市名称如上海 Returns: 包含温度、湿度、天气状况的字典 # 模拟返回实际项目中请替换为真实API调用 mock_data { 上海: {temperature: 22, humidity: 65, condition: 多云}, 北京: {temperature: 18, humidity: 42, condition: 晴}, 广州: {temperature: 28, humidity: 78, condition: 雷阵雨} } return mock_data.get(city, {error: 城市未找到}) # 测试调用 if __name__ __main__: print(get_weather(上海))构造Function Calling请求关键Qwen2.5要求你通过tools参数传入工具描述格式必须是OpenAI兼容的JSON Schema。我们用Python脚本发送请求# call_qwen_with_tool.py import requests import json OLLAMA_API http://localhost:11434/api/chat # 1. 定义工具必须Qwen2.5靠这个理解你能让它干什么 tools [ { type: function, function: { name: get_weather, description: 查询指定城市的实时天气信息, parameters: { type: object, properties: { city: { type: string, description: 要查询的城市名称例如上海、北京 } }, required: [city] } } } ] # 2. 构造消息系统提示 用户提问 messages [ { role: system, content: 你是一个智能助手能根据用户需求调用工具获取信息。请严格按JSON格式输出function_call不要额外解释。 }, { role: user, content: 帮我查上海今天最高气温 } ] # 3. 发送请求 payload { model: qwen2.5:7b-instruct-q4_k_m, messages: messages, tools: tools, stream: False # 关闭流式方便调试 } response requests.post(OLLAMA_API, jsonpayload) result response.json() print(模型原始输出) print(json.dumps(result, indent2, ensure_asciiFalse)) # 4. 解析并执行工具调用 if message in result and tool_calls in result[message]: for tool_call in result[message][tool_calls]: func_name tool_call[function][name] args json.loads(tool_call[function][arguments]) if func_name get_weather: weather_result get_weather(**args) print(f\n 工具调用成功{weather_result})运行这个脚本你会看到输出类似{ model: qwen2.5:7b-instruct-q4_k_m, created_at: 2025-04-05T10:22:33.123Z, message: { role: assistant, content: , tool_calls: [ { function: { name: get_weather, arguments: {\city\: \上海\} } } ] } }紧接着打印出工具调用成功{temperature: 22, humidity: 65, condition: 多云}恭喜你刚刚完成了Qwen2.5的首次Function Calling闭环。3. 实战进阶让模型自己决定调不调用、调哪个上面例子是“单工具单调用”真实场景更复杂用户一句话可能隐含多个动作也可能根本不需要调用工具。Qwen2.5的真正优势在于它能自主决策。3.1 场景对比它怎么判断“该不该调用”我们测试三类典型输入用户输入Qwen2.5行为说明“上海今天几度”自动调用get_weather(city上海)明确地理气象关键词触发工具“用Python写一个冒泡排序”❌ 不调用任何工具直接生成代码纯生成任务无外部依赖“上海天气怎么样顺便把结果画成折线图”调用get_weather 调用plot_chart若定义多意图自动拆解为多个function_call关键在于你不需要写规则判断。只要在tools里定义好所有可用工具Qwen2.5会基于自身对齐能力自动选择最匹配的一个或多个。3.2 定义多个工具天气日历计算器扩展tools列表加入两个新工具tools [ { type: function, function: { name: get_weather, description: 查询城市天气, parameters: {type: object, properties: {city: {type: string}}, required: [city]} } }, { type: function, function: { name: get_calendar_event, description: 查询今日日程安排, parameters: {type: object, properties: {}, required: []} } }, { type: function, function: { name: calculate, description: 执行四则运算如3.14 * 2, parameters: {type: object, properties: {expression: {type: string}}, required: [expression]} } } ]然后发一条复合请求messages [ {role: user, content: 告诉我上海天气算一下圆周率乘2再看看我今天有什么会议} ]Qwen2.5会一次性返回三个tool_calls顺序可能不同但全部正确。你可以按需并行或串行执行它们。注意Qwen2.5不会伪造工具名。如果用户说“查火星天气”而你没定义get_mars_weather它会老实回答“我无法查询火星天气”而不是瞎编一个调用。4. 常见问题与避坑指南来自真实踩坑经验部署顺利不代表一劳永逸。以下是我们在几十次本地测试中总结的高频问题和解决方案。4.1 问题模型返回了function_call但arguments是空JSON{}原因工具定义中parameters的required字段没写全或类型声明不匹配比如把type: string写成type: str解决严格对照OpenAI Function Calling Schema。检查两点required数组里列出的字段必须在properties中存在且类型一致所有字段类型用标准JSON Schema类型string/number/boolean/object/array正确示例parameters: { type: object, properties: { city: {type: string}, unit: {type: string, enum: [celsius, fahrenheit]} }, required: [city] }❌ 错误示例parameters: { type: object, properties: { city: {type: str} // ← type必须是string不是str } }4.2 问题Ollama报错tool calling not supported by this model原因你拉取的是基础版qwen2.5:7b不是instruct指令微调版验证方法运行ollama show qwen2.5:7b-instruct-q4_k_m --modelfile确认输出中包含FROM qwen2.5:7b-instruct-q4_k_m PARAMETER num_ctx 131072 # 128K上下文解决重新拉取带-instruct后缀的模型ollama pull qwen2.5:7b-instruct-q4_k_m4.3 问题中文城市名识别不准比如把“杭州市”识别成“杭州”原因模型对地名泛化能力强但工具定义中description没强调“支持省市区三级名称”优化技巧在工具描述里加一句引导description: 查询指定城市的实时天气信息。支持城市全称如杭州市、简称如杭州、及带省份的名称如浙江省杭州市Qwen2.5会把这个提示当作推理依据显著提升匹配率。5. 总结Function Calling不是功能而是工作流起点你现在已经掌握了Qwen2.5-7B-Instruct的Function Calling核心能力从环境搭建、工具定义、请求构造到多工具协同和问题排查。但这只是开始。真正的价值不在于“调用一个天气API”而在于把你公司内部的CRM查询接口封装成工具让销售助理一句话查客户历史订单把财务系统的报销审批流程变成工具员工说“我要报销差旅费”模型自动生成审批单并调用OA提交把设计团队的Figma API接入产品经理说“把首页按钮改成蓝色”模型直接修改设计稿。Qwen2.5的70亿参数、128K上下文、商用级对齐让它成为中小团队落地Agent应用的“甜点模型”——不大不小不贵不难拿来就能用用了就见效。下一步你可以把get_weather换成真实高德地图API免费额度够用用Ollama的--gpu-layers参数进一步提速尝试用LMStudio做可视化调试支持实时查看token attention工具已备好舞台交给你。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询