Function Calling(函数调用)
Function Calling(函数调用)是大型语言模型(LLM)主动调用预定义外部函数或工具的能力,使AI系统能够执行实际操作而不仅仅是生成文本。
定义
Function Calling(函数调用)是现代AI代理系统的核心能力之一,它允许大语言模型在对话过程中识别需要执行特定操作的时机,并调用预先定义的外部函数来完成实际任务。与传统LLM仅输出文本不同,具备函数调用能力的模型可以触发代码执行、API请求、数据库操作等真实世界行为。
这项技术最早由OpenAI在2023年引入GPT-4 API中,随后被各大模型厂商广泛采用。它是实现AI代理(Agent)的关键技术基础,使得AI从"被动应答"转向"主动执行"。
工作原理
函数调用流程通常包含以下步骤:
- 函数定义:开发者预先定义一组可用的函数,并使用JSON Schema格式描述每个函数的名称、参数和返回值。
- 模型推理:当用户提出需要执行操作的问题时,模型分析上下文并判断是否需要调用某个函数。
- 参数生成:模型根据函数签名和对话内容,生成符合参数规范的调用请求。
- 外部执行:应用程序执行实际的函数调用,获取返回结果。
- 结果整合:函数执行结果被返回给模型,模型基于结果生成最终回答。
应用场景
- 数据库查询:通过自然语言查询数据库,如"查找本月销售额最高的客户"。
- 日历管理:创建会议、查询可用时间、发送日程邀请。
- 实时信息获取:调用天气API、股票行情、新闻摘要等实时数据源。
- 自动化工作流:触发邮件发送、文件处理、CRM更新等业务流程。
- 多工具编排:组合调用多个工具完成复杂任务,如先搜索信息再发送邮件。
示例
示例:查询天气
// 1. 定义函数
functions = [{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
}]
// 2. 用户提问
// "北京今天天气怎么样?"
// 3. 模型生成的函数调用
{
"name": "get_weather",
"arguments": {"city": "北京"}
}
// 4. 执行函数后返回结果
{"temperature": "28°C", "condition": "晴", "humidity": "45%"}
// 5. 模型生成最终回答
// "今天北京天气晴朗,气温28°C,湿度45%。"
相关术语
- Tool Calling(工具调用):函数调用的广义概念,涵盖更广泛的工具交互。
- MCP(Model Context Protocol):Anthropic推出的模型上下文协议,标准化工具调用交互。
- Agent Workflow(代理工作流):利用函数调用构建的自动化业务流程。