Function Calling 让模型以结构化方式请求调用外部函数:开发者把可用工具的名称、功能描述、参数 JSON Schema 随请求发给模型;模型判断需要工具时返回函数名与参数 JSON(而非自然语言);宿主程序真正执行函数,把结果作为 tool 角色消息回传;模型基于结果继续生成或发起下一轮调用,可能并行调用多个工具。

关键在描述质量:工具名和描述是模型选择工具的唯一依据,要说明'什么时候用、什么时候不用';参数 Schema 加描述、枚举与示例可显著降低参数错误;工具设计宜单一职责、幂等,返回结果精简且对模型友好(错误信息也要可理解,模型会据此自我修正)。

易错点:模型返回的是调用请求,不会真的执行,副作用由宿主控制——权限校验、参数二次校验、危险操作人工确认必须在宿主侧;工具数量过多(几十上百)会稀释选择准确率,需要分组或检索式路由。追问方向:MCP(Model Context Protocol)统一工具接入解决了什么问题?如何处理工具调用的并发与顺序依赖?