什么是 Function Call?
Function Call(函数调用)是大型语言模型(LLM)的一种能力,使其能够根据用户请求调用预定义的外部函数或工具,获取返回结果并整合到响应中。这是AI Agent从"被动回答"转向"主动执行"的关键技术。
💡 核心价值:让AI不只是生成文本,而是能够执行实际操作,如查询数据库、调用API、发送消息等。
工作原理
Function Call的工作流程包括:
- 函数定义:开发者预先定义可调用的函数及其参数schema
- 模型推理:当用户请求涉及特定操作时,模型判断应调用哪个函数
- 参数生成:模型根据上下文生成符合schema的函数参数
- 执行返回:外部系统执行函数并将结果返回给模型
- 结果整合:模型基于函数返回结果生成最终响应
应用场景
- 数据库查询:用户询问"上个月销售额是多少",AI调用SQL函数查询数据库
- 日历管理:用户说"帮我预约周五下午3点会议",AI调用日历API创建日程
- 第三方集成:调用飞书、企业微信等工具完成实际操作
- 实时信息:获取天气、股价等最新数据
代码示例
# OpenAI API 中的 Function Call 示例
import openai
functions = [{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
}]
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
functions=functions
)
# 模型返回的函数调用
tool_call = response.choices[0].message.function_call
# {"name": "get_weather", "arguments": "{\"city\": \"北京\"}"}
与 Tool Calling 的区别
Function Call 通常指OpenAI等厂商提出的特定协议,侧重于结构化函数调用。
Tool Calling 是更广泛的概念,包括Function Call、MCP协议等各种工具调用方式。