小白程序员必看:收藏这份工具调用指南,轻松掌握大模型核心技能

张开发
2026/5/8 7:40:49 15 分钟阅读

分享文章

小白程序员必看:收藏这份工具调用指南,轻松掌握大模型核心技能
很多人第一次看到 Agent 自动搜索、自动查数据库、自动读文件时都会下意识觉得这个模型也太厉害了什么都能做。但真相是——模型什么都没做它只是说了一句话。更准确地说模型做了一件事它输出了一段结构化的 JSON大意是请帮我调一下这个工具参数是这些。然后呢真正去联网搜索的不是模型。真正去读文件的不是模型。真正去查数据库的也不是模型。是宿主程序拿着这段 JSON帮它完成的。如果你对这件事没有清晰认知后面接工具、调模型、做 Agent 系统很多坑你都不知道为什么会踩。这篇文章我们就把工具调用这件事从头到尾拆开讲一次。一、先说清一个大前提模型是决策者不是执行者在工具调用这件事上整个系统有两个核心角色模型负责理解任务判断要不要用工具用哪个传什么参数宿主程序负责真正执行工具拿到结果再送回给模型你可以把它理解成模型是一个只会下命令的领导宿主程序是那个真正去跑腿干活的人。模型说“帮我查一下今天北京的天气。”宿主程序拿着这个请求去调天气 API拿到结果再告诉模型“今天北京 22°C晴。”模型从头到尾没有接触过任何 API、任何网络请求、任何数据库连接。这是理解工具调用最重要的一个基础认知。你可以先看这张分工图分工不清后面所有工具相关的问题都会分析错方向。二、一次工具调用到底跑了哪几步很多人听说过Function Calling“Tool Calling”但真让他讲清楚一次调用到底跑了几步大多数人讲不完整。我把它拆成 5 步第 1 步注册工具——告诉模型你手头有哪些工具在调用模型之前你的宿主程序需要先告诉模型你现在有哪些工具可以用。怎么告诉通过一段结构化的工具描述通常叫Schema。一个典型的 Schema 长这样{ type:function, function:{ name:get_weather, description:查询指定城市的当前天气信息, parameters:{ type:object, properties:{ city:{ type:string, description:要查询天气的城市名称比如北京 } }, required:[city] } }}注意几个关键字段name工具名字模型靠它来选工具description工具功能描述模型靠它来判断这个工具是干什么的parameters参数定义模型靠它来知道该传什么这个 Schema 不是可有可无的补充说明它几乎决定了模型能不能正确选到你的工具。第 2 步模型判断——要不要用工具用哪个当用户发来一个问题模型会结合三方面信息做判断用户当前的任务目标上下文中已有的信息你注册的工具列表和 Schema如果模型判断这个问题我自己能答它就直接输出文本回答。如果模型判断这个问题我需要借助工具它会输出一段特殊格式的内容——不是普通文本而是一段JSON 格式的工具调用请求。比如用户问今天北京天气怎么样模型输出可能是{ tool_calls:[{ id:call_abc123, type:function, function:{ name:get_weather, arguments:{\city\: \北京\} } }]}注意这不是模型在执行天气查询这只是模型在告诉你——“我觉得应该调 get_weather参数是北京。”第 3 步宿主程序执行——真正跑工具宿主程序拿到模型输出的 JSON 后做这几件事解析看模型想调哪个工具传了什么参数校验参数合不合法、类型对不对、有没有漏必填项执行调用真正的工具函数或 API拿结果获取工具的返回值这一步完全是宿主程序的活和模型没有任何关系。用伪代码看大概是这样# 解析模型输出tool_name response.tool_calls[0].function.namearguments json.loads(response.tool_calls[0].function.arguments)# 根据工具名分发执行if tool_name get_weather: result get_weather(cityarguments[city])# result 北京22°C晴东南风3级第 4 步结果回传——把工具输出送回模型这一步非常关键很多人忘了做。工具执行完后宿主程序需要把结果以tool角色的消息追加到对话上下文里再次发给模型。messages.append({role: tool,tool_call_id: call_abc123,content: 北京22°C晴东南风3级})# 再次调用模型final_response client.chat.completions.create( modelgpt-4, messagesmessages)只有这样模型才能看到工具的执行结果然后基于结果继续推理、组织最终回答。如果你没做这一步模型就不知道工具执行了什么最终回答可能是编造的。第 5 步循环或终止模型看到工具结果后会再次判断信息够了吗如果够了生成最终文本回答还需要更多工具吗如果需要再输出一轮工具调用请求这就是为什么工具调用是一个闭环不是一次性触发。你可以看这张完整流程图这 5 步跑完就是一次工具调用的完整生命周期。三、Function Calling 和 Tool Calling 到底是什么关系很多人会被这两个名词搞晕其实非常简单。Function Calling这个名字是 OpenAI 在 2023 年 6 月推出 GPT-3.5/GPT-4 API 时首次使用的。当时的设计是你在 API 调用里传一组functions参数模型可以选择输出一个函数名和参数 JSON。但它有个限制一次只能调一个函数。Tool Calling这是 OpenAI 在 2023 年底推出的升级版。主要变化参数字段从functions改为tools支持一次调用多个工具Parallel Tool Calling工具类型可以扩展不只是 function未来可能有 code_interpreter、retrieval 等本质上的关系Tool Calling 是 Function Calling 的演进版本。底层机制完全一样模型输出结构化 JSON → 宿主程序执行 → 结果回传。只是接口更规范了能力更强了。目前 OpenAI、Anthropic、Google、Mistral 等主流模型提供商都采用了 Tool Calling 的设计。所以你后面再看到这两个词不用纠结它们说的是同一件事。四、模型到底是怎么选工具的这个问题很多人好奇但很少有人讲清楚。模型选工具不是开盲盒它有明确的判断依据。判断依据 1工具名称名称越清楚、越贴近功能语义模型越容易做对判断。好的工具名search_web、get_weather、read_file不好的工具名tool_1、helper、do_stuff判断依据 2工具描述这是最重要的判断依据。模型是根据你写在description里的文字来理解这个工具能干什么的。如果描述模糊比如一个有用的工具模型根本不知道什么时候该用它。推荐做法用一句清楚的话写明工具的用途、适用场景和输入输出。比如✅查询指定城市的实时天气信息返回温度、天气状况和风向❌天气相关的工具判断依据 3参数说明每个参数的名称、类型、描述、是否必填都会影响模型传参的准确性。city:{type:string,description:要查询天气的城市名称比如北京、上海}参数描述越具体模型传参越准确。参数描述越模糊模型越容易猜错。判断依据 4上下文和任务目标模型还会结合当前的对话历史、系统 Prompt 中的指令来做判断。比如系统 Prompt 写了优先使用搜索工具获取最新信息模型在遇到时效性问题时就会倾向于调搜索工具。五、用一个真实例子跑一遍完整链路场景用户对 Agent 说——帮我查一下今天北京的天气然后根据天气给我一个穿搭建议。第一轮模型判断我需要查天气但我自己不知道实时天气 → 调 get_weather 工具。模型输出{ tool_calls:[{ function:{ name:get_weather, arguments:{\city\: \北京\} } }]}宿主程序执行调用天气 API → 返回北京22°C晴微风结果回传把天气信息追加到上下文。第二轮模型看到天气结果北京今天 22°C晴微风。模型判断信息够了我可以直接给穿搭建议了不需要再调工具。模型输出今天北京 22°C天气晴朗微风。建议穿一件薄外套或长袖衬衫搭配休闲裤即可。如果中午出门外套可以不带。看到没整个过程就是模型判断需要工具 → 输出 JSON宿主执行 → 拿到结果结果回传 → 模型继续推理模型判断不需要更多工具 → 输出最终回答这就是工具调用的完整闭环。你可以用这张时序图更清楚地看到四个参与者的交互六、最常见的工具调用踩坑和根因分析工具调用看起来不复杂但实际接的时候坑不少。我把最常见的几类列出来附带根因分析。坑 1模型不调工具直接瞎答表现明明有搜索工具模型却不调直接编了一个答案。根因工具描述太模糊或者系统 Prompt 没有强调先查证再回答。处理优化 Schema 的 description在 Prompt 中加入遇到事实性问题优先使用工具。坑 2模型调错工具表现有 3 个工具模型选了功能不对的那个。根因多个工具的 description 存在语义重叠模型分不清。处理让每个工具的 description 尽量各自独立不要写出都能做这件事的模糊表述。坑 3模型传错参数表现参数类型不对、值乱传、必填项漏了。根因参数的 type、description、required 没写清楚。处理给每个参数加清楚的 description 和 example在宿主程序中做参数校验。坑 4工具结果没回传表现工具明明执行了但模型最终回答时像没看到结果。根因宿主程序没有把工具返回值以tool角色消息追加到上下文。处理确保每次工具执行后结果都回传到 messages 列表中然后再调模型。坑 5工具太多模型选择困难表现注册了 20 多个工具模型经常选不准。根因工具数量超过模型的有效管理范围。处理控制单次上下文中的工具数量对工具做分组按任务阶段动态加载。踩坑自检清单常见坑根因首选处理方式不调工具Schema 描述模糊优化 description调错工具多工具语义重叠重新设计工具边界传错参数参数定义不清完善参数 description 校验结果丢失没做回传补上 tool 角色消息选择困难工具太多分组 动态加载七、那工具 Schema 到底该怎么写如果这篇文章你只记住一件事那就是工具调用的质量70% 取决于 Schema 的质量。一个好的 Schema 应该满足工具名清晰用动词 名词的组合比如search_web、read_file、send_email描述精确一句话说明用途、适用场景、返回什么参数完整每个参数有 type、description、required边界明确说清楚这个工具不能做什么、什么情况下不应该调它示例{ type:function, function:{ name:search_web, description:在互联网上搜索指定关键词的最新信息。适用于用户询问实时事件、新闻、数据等情况。返回搜索结果摘要列表。, parameters:{ type:object, properties:{ query:{ type:string, description:搜索关键词比如2024年诺贝尔奖获得者 }, max_results:{ type:integer, description:最多返回的结果条数默认5最大20 } }, required:[query] } }}八、从上一篇文章到这篇认知是怎么串起来的上一篇我们讲了 Prompt 在 Agent 里的真正作用。当时一个核心结论是Prompt 负责告诉 Agent 应该怎么做系统负责保证 Agent 真能做到。这篇文章讲的工具调用恰好就是系统保证 Agent 能做到的第一个关键能力。Prompt 可以写先查证再回答但真正去查的能力是工具提供的Prompt 可以写用表格输出但真正拿到数据的能力也是工具提供的Prompt 可以写缺信息时先补但真正补信息的能力还是工具提供的所以你可以这样理解两篇文章的关系Prompt 是操作手册工具是实际装备。手册再好没有装备也做不了事。九、总结如果把这篇文章浓缩成几句话模型不执行工具它只输出调用请求。真正执行的是宿主程序。工具调用是一个闭环判断→请求→执行→回传→继续推理。工具调不好大多不是模型的问题而是 Schema 没写好。Function Calling 和 Tool Calling 本质一样后者是前者的演进。后面我们还会讲记忆、规划、多 Agent 协作那些更复杂的能力。但工具调用是 Agent 从只会说话到真能做事的第一步。如果这一步没接好后面所有链路都建不稳。这篇文章先把工具调用的机制拆清楚。普通人如何抓住AI大模型的风口领取方式在文末为什么要学习大模型目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 大模型作为其中的重要组成部分 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 为各行各业带来了革命性的改变和机遇 。目前开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景其中应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。随着AI大模型技术的迅速发展相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业人工智能大潮已来不加入就可能被淘汰。如果你是技术人尤其是互联网从业者现在就开始学习AI大模型技术真的是给你的人生一个重要建议最后只要你真心想学习AI大模型技术这份精心整理的学习资料我愿意无偿分享给你但是想学技术去乱搞的人别来找我在当前这个人工智能高速发展的时代AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料能够帮助更多有志于AI领域的朋友入门并深入学习。真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】大模型全套学习资料展示自我们与MoPaaS魔泊云合作以来我们不断打磨课程体系与技术内容在细节上精益求精同时在技术层面也新增了许多前沿且实用的内容力求为大家带来更系统、更实战、更落地的大模型学习体验。希望这份系统、实用的大模型学习路径能够帮助你从零入门进阶到实战真正掌握AI时代的核心技能01教学内容从零到精通完整闭环【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块内容比传统教材更贴近企业实战大量真实项目案例带你亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事‌02适学人群应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。vx扫描下方二维码即可【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】本教程比较珍贵仅限大家自行学习不要传播更严禁商用03入门到进阶学习路线图大模型学习路线图整体分为5个大的阶段04视频和书籍PDF合集从0到掌握主流大模型技术视频教程涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向新手必备的大模型学习PDF书单来了全是硬核知识帮你少走弯路不吹牛真有用05行业报告白皮书合集收集70报告与白皮书了解行业最新动态0690份面试题/经验AI大模型岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要07 deepseek部署包技巧大全由于篇幅有限只展示部分资料并且还在持续更新中…真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】

更多文章