大模型突然学会调用天气接口?小白必看:收藏这份Function Calling与Agent进阶指南

发布时间:2026/11/3 2:45:07
大模型突然学会调用天气接口?小白必看:收藏这份Function Calling与Agent进阶指南

本文深入解析了大模型接入Function Calling时的运作机制,阐述其如何通过生成结构化动作指令来调用外部工具。从Function Calling的本质到Tool Use的闭环交互,再到Agent的动态决策过程,文章详细剖析了工具调用的演进路线。同时,文章强调了模型外基础设施的重要性,包括权限管理、审批机制、状态监控等,并指出了设计Tool Use时常见的四个错误。最终揭示,Agent的核心在于“负责地行动”,而非简单的工具调用。

大模型接入 Function Calling 时突然学会了调用天气接口、查询数据库、发送邮件,甚至操作浏览器。

实际它做的事情是:根据当前上下文,生成下一段最合适的内容。只不过这段内容不再是给人阅读的自然语言,而是被约束成了一条机器可以识别的“动作指令”。

例如:

{ "name": "get_weather", "arguments": { "city": "上海" } }

真正读取这段 JSON、校验参数、调用天气服务并把结果交还给模型的,是模型外部的运行时系统。

理解这一点,是理解 Tool Use、Function Calling、MCP 乃至 Agent 的起点。它们并不是几套彼此割裂的技术,而是同一条演进路线上的不同层次:

Function Calling 解决“如何表达一次动作”,Tool Use 解决“如何把动作接入执行环境”,Agent 解决“在连续任务中,何时采取什么动作,以及什么时候停止”。

一、Function Calling 的本质:结构化的动作提议


传统聊天模型输出的是文本。开发者问“上海今天天气怎么样”,模型可能直接生成一句听起来合理的回答。

问题是,天气会变化,模型内部参数并不保存实时世界。即使回答语气很确定,也不代表事实可靠。

Function Calling 改变的不是模型获取事实的方式,而是模型输出结果的协议。开发者把可用函数的名称、用途和参数结构放进上下文,模型便可以在回答问题与生成函数参数之间做选择。

从模型视角看,大致可以抽象为:

输入:用户问题 + 系统指令 + 工具说明 + 历史消息 输出:自然语言,或者一个符合协议的工具调用请求

所以,所谓“函数调用”,准确地说是模型生成了一份调用意图。一次完整执行至少需要四个角色:

  1. 模型判断是否需要工具,并生成工具名与参数;

  2. 编排层解析输出,完成权限和参数校验;

  3. 执行器真正调用 API、数据库或本地代码;

  4. 编排层把执行结果作为新的上下文交回模型。

模型负责提出动作,系统负责执行动作。这个边界非常重要,因为它决定了安全责任究竟落在哪里。

如果模型生成了delete_customer,并不意味着删除已经发生。是否允许删除、是否需要人工确认、调用者有没有权限、失败后如何回滚,都应由模型之外的系统控制。

二、JSON Schema 约束了语法,却没有保证语义


Function Calling 的工程价值,首先来自结构化。

相比让模型输出“请查询上海的天气”,结构化参数更容易被程序解析,也能借助 JSON Schema 约束字段类型、必填项和枚举范围。严格模式还可以显著减少字段缺失、类型错误和随意扩展参数等问题。

但结构正确不等于决策正确。

模型完全可能生成一份合法却不合理的调用:

  • 用户问上海,参数却填成北京;
  • 应该使用只读查询,却选择了写入接口;
  • 明明已有答案,仍然反复调用同一个工具;
  • 工具需要订单号,模型却把用户姓名填了进去;
  • 接口返回“无权限”,模型却把它理解成“没有数据”。

Schema 解决的是“这句话能否被机器读懂”,无法独自解决“这个动作是否符合用户真实意图”。

因此,一个可靠的 Tool Use 系统至少要同时处理三类正确性:

格式正确性:工具名存在,参数符合结构。

语义正确性:工具和参数确实适合当前任务。

行为正确性:这次调用在权限、成本、风险和时机上都可以接受。

越接近真实业务,后两类问题越重要。

三、Tool Use:把一次输出变成一个闭环


Function Calling 更像一种接口形式,Tool Use 则强调完整交互过程。

一个最小工具闭环可以写成:

用户目标 ↓ 模型判断 ↓ 生成工具调用 ↓ 外部系统执行 ↓ 返回观察结果 ↓ 模型继续回答或选择下一步动作

这里最关键的变化,是工具结果会重新进入上下文,成为模型下一次决策的依据。

这与 ReAct 论文提出的思路高度一致:把推理与行动交错组织。行动让模型接触外部环境,环境返回观察结果,新的观察又修正后续推理。模型不必在任务开始时一次性猜完整条路径,而是可以“走一步,看一步,再决定下一步”。

假设用户说:“帮我找出下周去杭州最便宜的高铁票,并避开早上 7 点以前出发的车次。”

系统可能经历以下过程:

思考当前缺少出发城市 → 询问用户 获得出发城市 → 调用车票查询 获得多个车次 → 按时间条件过滤 发现最低价有多个选项 → 比较到达时间 组织最终建议 → 停止调用

这已经不再是一次函数调用,而是一个由目标驱动、由反馈修正的多步过程。

四、从 Tool Use 到 Agent,差别不在“工具更多”


许多产品只要接入搜索、代码执行和浏览器,就会被包装成 Agent。实际上,工具数量不是判断 Agent 的核心标准。

真正的分界线在于:下一步行动主要由预先写好的流程决定,还是由模型根据当前状态动态决定。

如果程序固定规定“先搜索,再总结,最后发邮件”,模型只是被嵌入一条确定流程。这更接近工作流。

如果系统只给出目标、工具集合和约束,让模型根据每一步返回结果选择下一步操作,它才具有更明显的 Agent 特征。

Anthropic 在《Building Effective Agents》中也区分了 workflow 与 agent:前者由预定义代码路径编排,后者由模型动态决定过程和工具使用。两者没有高下之分。任务路径稳定时,工作流往往更便宜、更容易测试;只有当步骤无法提前写死、环境反馈会改变计划时,Agent 的自主决策才真正有价值。

因此,Agent 可以看作一个持续运行的策略循环:

状态 → 决策 → 动作 → 环境反馈 → 更新状态 → 再决策

用更抽象的方式表达,Agent 在时刻t根据当前状态选择动作:

aₜ = π(sₜ, G, T, C)

其中:

  • sₜ是当前状态,包括对话、工具结果和任务进度;
  • G是用户目标;
  • T是可用工具集合;
  • C是权限、成本、时间和安全约束;
  • π是模型与系统共同形成的决策策略;
  • aₜ可以是调用工具、向用户提问、输出答案或终止任务。

Agent 的“智能”不只体现在能选工具,还体现在能决定不使用工具、补充信息、改变计划,以及在目标已经达到时及时停止。

五、Agent 到底如何决定“下一步做什么”


从底层看,工具调用仍然是一种生成。模型会根据训练中学到的模式、工具描述、上下文示例和当前反馈,为不同候选输出分配概率。

但在工程系统中,我们可以把一次工具决策拆成五个问题。

1. 当前信息够不够?

如果仅靠已有上下文就能回答,调用工具只会增加延迟和成本。如果问题依赖实时数据、私有数据或精确计算,工具调用的价值才会上升。

2. 哪个工具最匹配目标?

工具名称和描述不是给开发者看的注释,而是模型的“操作说明书”。描述含糊、工具职责重叠,都会增加误选概率。

search_customer与get_customer_detail如果边界不清,模型只能猜。好的工具设计应让模型容易回答:它解决什么问题、何时使用、何时不该使用、需要哪些前置条件。

3. 参数是否已经确定?

缺少关键参数时,Agent 有三种选择:从上下文推断、调用其他工具补齐,或者向用户追问。

可靠系统不会鼓励模型“为了让调用跑起来”而编造参数。尤其在金额、日期、收件人、文件路径等高风险字段上,不确定就应该停下来确认。

4. 预期收益是否高于调用成本与风险?

工具调用并非免费。它可能消耗时间、Token、API 配额,也可能引发写操作和外部影响。

因此,一次合理决策隐含着这样的权衡:

调用价值 ≈ 信息增益或任务推进程度 - 延迟 - 成本 - 失败概率 - 行为风险

模型未必真的进行精确数值计算,但系统设计应把这些因素转化为清晰规则,例如限制最大调用次数、对写操作设置审批、为高成本工具增加使用条件。

5. 工具结果意味着什么?

工具返回并不天然等于事实。结果可能超时、为空、过期、截断,也可能包含恶意内容。

Agent 必须区分“业务上没有结果”和“工具执行失败”,还要防止把网页、邮件或文档中的指令误当成系统命令。换句话说,观察结果是证据,不是新的最高优先级指令。

六、Toolformer 揭示了另一条路线:让模型学会何时使用 API


早期工具系统往往依赖人工示例和提示词,告诉模型遇到什么问题应该调用什么函数。

Toolformer 提出了更进一步的思路:让语言模型通过自监督方式学习使用外部 API,包括决定调用哪个 API、何时调用、传入什么参数,以及如何利用返回结果继续预测文本。

这说明 Tool Use 并不只是外部框架给模型加上的“插件”。它也可以成为模型能力的一部分:模型在训练中逐渐学会识别自身知识边界,判断何时值得向计算器、搜索引擎、翻译器或其他系统求助。

不过,模型越擅长提出动作,越不能忽视运行时治理。因为“会使用工具”和“被授权执行工具”是两回事。

七、MCP 解决的是工具接入,不是 Agent 决策


当每个模型平台、每个业务系统都定义一套不同的工具协议时,接入成本会迅速膨胀。Model Context Protocol(MCP)的价值,在于为工具发现、参数描述、调用和结果返回提供更统一的连接方式。

可以把它理解成 AI 应用与外部能力之间的一种标准接口。

但 MCP 不会自动让 Agent 变聪明。它主要回答:

  • 有哪些工具可用;
  • 每个工具接受什么输入;
  • 客户端如何发起调用;
  • 服务端如何返回结果。

至于是否应该调用、该选哪一个、结果是否可信、是否需要用户批准,仍然属于 Agent 策略和运行时治理。

协议标准化降低了“接上工具”的成本,却不会替你解决“正确使用工具”的问题。

八、真正可靠的 Agent,能力一半在模型外


一个能跑 Demo 的 Agent,往往只需要模型、提示词和几个工具。一个能进入生产环境的 Agent,还需要大量模型之外的基础设施。

权限边界

按用户、角色和任务动态下发工具,不要把全部能力一次性交给模型。能查询订单的 Agent,不应该天然拥有退款权限。

最小化与可逆性

优先开放只读、幂等、可撤销的操作。把“生成邮件草稿”和“直接发送邮件”拆成两个工具,风险会小得多。

审批机制

涉及付款、删除、发布、发送、权限变更等外部影响时,应设置明确的人工确认点。确认界面要展示即将发生的动作和关键参数,而不是只问一句“是否继续”。

状态与终止条件

Agent 需要知道已经完成了什么、还缺什么,并设置最大步数、超时和重复调用检测。否则它很容易陷入查询—失败—重试的循环。

可观测性

记录每次决策看到的上下文、选择的工具、参数、执行结果、耗时和错误类型。没有可追踪的轨迹,就很难判断问题出在模型、工具描述、权限还是外部服务。

评估体系

最终答案看起来正确,不代表执行过程正确。Agent 评估还应覆盖工具选择准确率、参数正确率、任务完成率、平均调用次数、无效调用率、越权率和恢复能力。

这些机制共同说明:Agent 不是“一个更强的 Prompt”,而是一套围绕不确定决策建立的系统工程。

九、设计 Tool Use 时,最容易犯的四个错误


第一个错误,是把工具做得过于底层。

如果让模型自由拼 SQL、HTTP 请求或 shell 命令,它的自由度很高,风险和出错空间也会同步放大。对稳定业务,通常应该提供语义明确的高层工具,例如create_refund_request,而不是让模型组合多条数据库更新语句。

第二个错误,是把工具拆得过碎。

工具越原子化,Agent 完成一个简单目标所需的调用链越长,任何一步失败都可能中断任务。工具粒度应围绕可验证的业务动作设计,而不是机械对应每个内部函数。

第三个错误,是只处理成功路径。

真实环境充满超时、限流、空结果、部分成功和权限不足。工具返回值应包含机器可区分的状态,而不是把所有结果都塞进一段自然语言。

第四个错误,是把所有决策都交给模型。

确定性规则适合写在代码里:金额超过阈值必须审批、同一工具最多重试两次、禁止访问工作区之外的文件。这些边界越明确,模型越能把注意力放在真正需要语义判断的部分。

结语:Agent 的核心不是“能调用”,而是“会负责地行动”

从 Function Calling 到 Tool Use,再到 Agent,技术表面上是在不断增加模型可使用的工具,底层却是在逐步构建一个完整的行动闭环。

Function Calling 把自然语言意图转换成结构化动作;Tool Use 把动作连接到真实环境,并把结果送回模型;Agent 则在目标、状态和约束之间持续选择下一步。

但无论模型多强,都不应该把“生成动作”与“获得权限”混为一谈。

真正成熟的 Agent,不是每一步都自主,也不是调用工具越多越智能。它应该在需要外部信息时主动求证,在参数不明确时停下来询问,在风险较高时请求批准,在目标达成后及时结束。

一句话总结:

Tool Use 让大模型从“回答问题”走向“影响世界”,而 Agent 工程真正要解决的,是如何让这种影响可控、可查、可停、可纠正。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包:

  • ✅ 从零到一的 AI 学习路径图
  • ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
  • ✅ 百度/阿里专家闭门录播课
  • ✅ 大模型当下最新行业报告
  • ✅ 真实大厂面试真题
  • ✅ 2026 最新岗位需求图谱

所有资料 ⚡️ ,朋友们如果有需要《AI大模型入门+进阶学习资源包》,下方扫码获取~

① 全套AI大模型应用开发视频教程

(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)

② 大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!

③ 大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

④ AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

⑤ 大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

⑥ 大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

以上资料如何领取?

为什么大家都在学大模型?

最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

不出1年,“有AI项目经验”将成为投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!

这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

以上全套大模型资料如何领取?