函数调用:AI如何调用API
AI如何知道要调用哪个函数?如何生成正确的参数?如何处理返回结果?函数调用是工具调用的核心机制。
想象你在餐厅点菜。你告诉服务员:「我要一份宫保鸡丁,不要太辣。」服务员会把你的需求转换成订单系统理解的格式:
{
"dish": "宫保鸡丁",
"spiciness": "mild",
"quantity": 1
}这就是函数调用的本质:把自然语言请求转换成结构化的API调用。AI就像那个服务员,它理解你的意图,然后翻译成机器能理解的格式。
函数调用(Function Calling)是一种让AI模型生成结构化输出的机制,用于调用外部函数或API。AI不直接执行函数,而是生成调用所需的函数名和参数。
用一个简单的例子:
用户输入
「帮我查一下北京现在的天气」
AI生成的函数调用
{
"name": "get_weather",
"arguments": {
"city": "北京",
"unit": "celsius"
}
}函数调用涉及多个步骤,让我们看看完整的流程:
在AI能够调用函数之前,你需要先定义函数的名称、描述和参数。这就像给AI一本函数说明书。
{
"name": "search_flights",
"description": "搜索指定日期和目的地的航班信息",
"parameters": {
"type": "object",
"properties": {
"destination": {
"type": "string",
"description": "目的地城市名称"
},
"date": {
"type": "string",
"description": "出发日期,格式:YYYY-MM-DD"
},
"max_price": {
"type": "number",
"description": "最高价格限制(可选)"
}
},
"required": ["destination", "date"]
}
}这个定义告诉AI:
- 1.函数名:search_flights
- 2.用途:搜索航班信息
- 3.必填参数:目的地、日期
- 4.可选参数:最高价格限制
AI通过语义理解和上下文推断来生成参数值。它分析用户的请求,提取关键信息,匹配到对应的参数。
用户说:
「帮我查一下明天去上海的航班,不要太贵」
AI推断:
destination = "上海" ← 用户明确提到
date = "2026-04-03" ← "明天"转换成具体日期
max_price = 2000 ← "不要太贵"推断合理价格
AI能处理各种自然表达:
时间推断:
「明天」→ 具体日期
「下周五」→ 计算日期
「三天后」→ 相对日期
模糊词处理:
「不要太贵」→ 合理价格范围
「附近」→ 基于位置推断
「好吃的」→ 主观判断
很多任务需要调用多个函数。AI会规划调用顺序,处理函数间的依赖关系。
函数调用可能失败。好的Agent需要能检测错误、处理异常、重试或调整策略。
- •参数错误:缺少必填参数、参数类型错误
- •API错误:服务不可用、超时、认证失败
- •业务错误:航班已售完、余额不足、权限不足
- •重试:网络错误时自动重试
- •降级:主函数失败时尝试备用函数
- •询问用户:无法自动处理时请求用户确认
| 对比维度 | 传统API调用 | AI函数调用 |
|---|---|---|
| 输入方式 | 结构化参数 | 自然语言 |
| 参数生成 | 开发者编写 | AI自动生成 |
| 灵活性 | 固定流程 | 动态调整 |
| 错误处理 | 预定义逻辑 | 智能应对 |
| 用户体验 | 需要学习界面 | 自然语言交互 |
核心要点
- ✓函数调用 = 自然语言 → 结构化API调用
- ✓核心流程:定义函数 → 生成调用 → 执行 → 处理结果
- ✓AI通过语义理解自动推断参数值
- ✓需要完善的错误处理机制
Agent需要记住之前的对话才能提供连贯的服务。下一篇,我们聊聊记忆系统——AI如何记住对话,以及不同类型的记忆机制。
延伸阅读:
- • 第61篇:工具调用——让AI能使用工具
- • 第63篇:记忆系统——AI如何记住对话
- • 第64篇:规划——AI如何制定计划
第63篇:记忆系统——AI如何记住对话
Agent需要记住之前的对话才能提供连贯的服务。下一篇,我们聊聊记忆系统——AI如何记住对话,以及不同类型的记忆机制。
✏️ 手绘图解 · AI Catch 出品
第 62 篇 / 共 84 篇