定义
函数调用是大型语言模型 (LLM) 中的一项能力,它允许模型根据用户的自然语言请求来判断何时以及如何调用外部函数或 API。LLM 不会直接生成答案,而是输出一个结构化的 JSON 对象,其中指定了函数名称和所需的参数。
为什么它很重要
LLM 在其基本形式中是知识引擎,而不是行动引擎。函数调用弥补了这一差距。它允许 LLM 的抽象推理能力与外部系统的具体、现实世界能力(如数据库、天气服务或预订平台)相连接。这会将一个对话式 AI 转化为一个可操作的智能体。
工作原理
- 工具定义: 开发者向 LLM 提供一个模式(描述可用函数、其参数以及它们的作用)。这就是“工具定义”。
- 用户提示: 用户提供一个请求(例如,“伦敦的天气怎么样?”)。
- 模型推理: LLM 根据提供的工具定义分析提示,并确定
get_weather 函数是合适的。
- 函数调用输出: LLM 不会执行代码;它会返回一个结构化的调用请求(例如,
{"name": "get_weather", "arguments": {"location": "London"}})。
- 执行与响应: 托管 LLM 的应用程序接收到此结构化调用,执行实际的外部 API 调用(例如,到 OpenWeatherMap),并将结果传回给 LLM。
- 最终响应: LLM 使用返回的数据为用户制定自然语言答案。
常见用例
- 数据检索: 根据对话输入查询内部公司数据库或 CRM。
- 任务自动化: 通过外部服务预订会议、发送电子邮件或更新记录。
- 实时信息: 获取实时股票价格、航班状态或当前天气状况。
- 复杂工作流程: 编排需要顺序 API 调用的多步骤流程。
主要优势
- 可扩展性: 大大扩展了 LLM 的功能范围,使其超越了其训练数据。
- 准确性和基础性: 确保答案基于当前、可验证的外部数据,而不是可能过时的内部知识。
- 可操作性: 将 AI 从纯粹的信息提供者转变为可操作的实体。
挑战
- 模式管理: 维护准确和全面的工具定义对于可靠的性能至关重要。
- 延迟: 多步骤过程(提示 -> 调用 -> 执行 -> 响应)与单次模型推理相比引入了额外的延迟。
- 错误处理: 必须实现强大的逻辑来优雅地处理来自外部 API 的故障。
相关概念
- 智能体 (Agents): 函数调用是构建自主 AI 智能体的核心使能技术。
- 工具使用 (Tool Use): 一个更广泛的术语,涵盖 AI 利用外部资源的能力。
- 提示工程 (Prompt Engineering): 设计初始系统提示,以正确指导模型何时以及如何使用提供的工具。