核心要点

  • 讲清机制:你给模型一组工具(函数名 + 参数 schema),模型判断需要时返回「调哪个函数、传什么参数」,你的代码执行后把结果回灌给模型继续生成

  • 能举具体例子:查天气、查订单状态、查数据库、算数、发邮件——让模型从「只会聊天」变成「能行动 + 拿实时数据」

  • 强调它解决幻觉/时效问题:实时数据由真实接口给,不靠模型记忆瞎编

  • 工程注意点:校验模型给的参数、做错误处理、控制权限(危险操作要确认/限权)

标准回答

机制

Function Calling 是把你的功能以「工具」形式描述给模型:每个工具有名字、用途说明和参数 schema(字段、类型、是否必填)。模型在对话中判断需要调用时,不会自己瞎编结果,而是返回一个结构化的「函数名 + 参数」,由你的后端真正执行,再把执行结果回灌给模型,模型据此生成最终回复。

举例:查订单的客服机器人

用户问「我那个订单到哪了」。模型返回要调用 get_order_status(order_id="12345")。后端查数据库拿到「已发货,预计明天到」,回灌给模型,模型再用自然语言答复用户。整个过程实时数据来自真实接口,不靠模型记忆,避免幻觉。

为什么它重要

它让模型能「行动」——查天气、查库存、下单、算数、发通知、操作数据库,是 Agent 能干活的基础。

工程要点

模型给的参数不可全信:要做 schema 校验和兜底(比如 order_id 格式不对就拒绝);调用要有 try/catch 和超时;危险/写操作(退款、删数据)要加权限校验或人工二次确认,绝不让模型直接执行高风险动作。

常见误区

⚠️ 常见踩坑

直接信任模型返回的参数就去执行——可能字段缺失、类型错或被诱导调用越权操作;必须先校验参数、限制可调工具范围、对写操作加确认。

追问

追问 1模型调用工具时参数给错了怎么办?

先做 schema 校验,缺字段/类型错就不执行,把错误信息回灌让模型修正重试;设重试上限避免死循环。对枚举值用白名单约束,必填项缺失直接拒绝并提示。

追问 2Function Calling 和 MCP 是什么关系?

Function Calling 是模型层面「会请求调工具」的能力;MCP(Model Context Protocol)是一套标准协议,让工具/数据源以统一方式接入模型,省去为每个模型各写一套对接。可理解为前者是能力,后者是把工具标准化暴露的接口规范。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。