第八阶段 · 第62篇2026-04-02

函数调用:AI如何调用API

AI如何知道要调用哪个函数?如何生成正确的参数?如何处理返回结果?函数调用是工具调用的核心机制。

阅读时间:11分钟
🔧 开场故事

想象你在餐厅点菜。你告诉服务员:「我要一份宫保鸡丁,不要太辣。」服务员会把你的需求转换成订单系统理解的格式:

{
  "dish": "宫保鸡丁",
  "spiciness": "mild",
  "quantity": 1
}

这就是函数调用的本质:把自然语言请求转换成结构化的API调用。AI就像那个服务员,它理解你的意图,然后翻译成机器能理解的格式。

什么是函数调用?

函数调用(Function Calling)是一种让AI模型生成结构化输出的机制,用于调用外部函数或API。AI不直接执行函数,而是生成调用所需的函数名和参数。

用一个简单的例子:

用户输入

「帮我查一下北京现在的天气」

⬇️

AI生成的函数调用

{
  "name": "get_weather",
  "arguments": {
    "city": "北京",
    "unit": "celsius"
  }
}
函数调用的完整流程

函数调用涉及多个步骤,让我们看看完整的流程:

函数调用完整流程
👤用户请求自然语言🧠AI分析理解意图匹配函数📝生成调用函数名参数值执行函数调用API获取结果📊函数结果结构化数据🧠AI处理理解结果生成回答最终回答自然语言💡 关键点:AI只负责生成函数调用,实际的函数执行由系统完成
函数定义:告诉AI有哪些函数可用

在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通过语义理解上下文推断来生成参数值。它分析用户的请求,提取关键信息,匹配到对应的参数。

🔍 参数推断示例

用户说:

「帮我查一下明天去上海的航班,不要太贵」

⬇️

AI推断:

destination = "上海" ← 用户明确提到

date = "2026-04-03" ← "明天"转换成具体日期

max_price = 2000 ← "不要太贵"推断合理价格

AI能处理各种自然表达:

时间推断:
「明天」→ 具体日期
「下周五」→ 计算日期
「三天后」→ 相对日期

模糊词处理:
「不要太贵」→ 合理价格范围
「附近」→ 基于位置推断
「好吃的」→ 主观判断

多函数调用:处理复杂任务

很多任务需要调用多个函数。AI会规划调用顺序,处理函数间的依赖关系。

多函数调用:订机票场景
👤 订一张去上海的机票🔍search_flights()查询航班列表航班列表:CA1234, MU5678...🧠选择航班✈️book_flight()预订选中航班订票成功:订单号:ABC123📧send_email()发送确认邮件✅ 任务完成
错误处理:当函数调用失败时

函数调用可能失败。好的Agent需要能检测错误、处理异常、重试或调整策略

⚠️ 常见错误类型
  • 参数错误:缺少必填参数、参数类型错误
  • API错误:服务不可用、超时、认证失败
  • 业务错误:航班已售完、余额不足、权限不足
✅ 错误处理策略
  • 重试:网络错误时自动重试
  • 降级:主函数失败时尝试备用函数
  • 询问用户:无法自动处理时请求用户确认
函数调用 vs 传统API调用
对比维度传统API调用AI函数调用
输入方式结构化参数自然语言
参数生成开发者编写AI自动生成
灵活性固定流程动态调整
错误处理预定义逻辑智能应对
用户体验需要学习界面自然语言交互
总结

核心要点

  • 函数调用 = 自然语言 → 结构化API调用
  • 核心流程:定义函数 → 生成调用 → 执行 → 处理结果
  • AI通过语义理解自动推断参数值
  • 需要完善的错误处理机制
下一篇预告

Agent需要记住之前的对话才能提供连贯的服务。下一篇,我们聊聊记忆系统——AI如何记住对话,以及不同类型的记忆机制。

延伸阅读:

  • • 第61篇:工具调用——让AI能使用工具
  • • 第63篇:记忆系统——AI如何记住对话
  • • 第64篇:规划——AI如何制定计划

第63篇:记忆系统——AI如何记住对话

Agent需要记住之前的对话才能提供连贯的服务。下一篇,我们聊聊记忆系统——AI如何记住对话,以及不同类型的记忆机制。

✏️ 手绘图解 · AI Catch 出品

第 62 篇 / 共 84 篇