← 返回列表

Function Calling 技术总结

Function Calling 技术总结

1. 定义

Function Calling 是一种机制,允许开发者通过 JSON schema 向大语言模型(LLM)描述可用的外部工具(如 API)。当模型判断需要调用工具来回答用户问题时,它输出结构化的 tool_calls JSON 数据,指明要调用的函数名和参数。宿主程序解析并执行这个调用,将结果返回给模型,模型再生成最终答案。

2. 核心原理与解决的问题

  • 本质: “两轮对话 + 中间执行”的闭环。第一轮模型决策并输出工具调用请求;中间代码执行工具;第二轮模型基于执行结果生成最终答案。
  • 解决的问题:解决了此前让模型调用工具时,需要依赖不稳定、易出错的自然语言解析(if/else 判断)的问题,通过结构化输出实现了标准化和准确率的提升。

3. 职责分工(类比任务委托)

  • 开发者(HR):定义工具,编写描述工具功能、参数等信息的 JSON Schema。
  • LLM 模型(经理):理解工具描述,决策是否需要调用、调用哪个工具以及参数是什么,并输出结构化的调用请求(tool_calls)。模型只做决策和生成文本,不亲自执行代码
  • 执行器/宿主代码(员工):解析模型的 tool_calls 请求,真正执行对应的函数或 API 调用,并将结果返回。

4. 工具定义(JSON Schema)

Schema 是工具的“说明书”,关键信息包括:
- name:工具的唯一标识符。
- description至关重要,模型完全依赖此描述来判断是否调用该工具。描述越清晰准确,模型决策越准。
- parameters:定义工具所需的参数及其类型、描述、约束(如枚举值、是否必需等)。

5. 完整调用流程

文章通过一个查询天气的代码示例,展示了从用户提问、携带工具定义进行首次模型调用、模型返回 tool_calls、代码执行函数、将结果以 role: "tool" 消息塞回对话历史,到最后模型生成最终自然语言答案的全过程。

6. 高级特性 - 并行工具调用

当用户问题需要多个工具协同解答时(例如,同时查询多个城市的天气),模型可以在一次响应中输出包含多个 tool_calls 的列表。宿主代码可以并行执行这些调用,然后将所有结果一并返回给模型进行综合,从而提升效率。

评论

暂无已展示的评论。

发表评论(匿名)