Safa API · aisafa.xyz

Claude/GPT Function Calling 实战教程:2026 工具调用 API 国内怎么用(含完整代码)

发布于 2026-06-13 · Safa API

2026 年 AI Agent 已经从 demo 走向真实落地,而支撑 Agent 跑起来的最底层能力,就是 Function Calling(GPT/Gemini 叫法)Tool Use(Claude 叫法)。无论你是接入数据库、调用搜索、自动化办公,还是搭建 MCP Agent,都绕不开它。

这篇文章一次讲清:Function Calling 到底是什么、Claude Opus 4.8 / GPT-5.5 / Gemini 3 Pro 三家的差异、能直接复制的完整代码,以及国内开发者最关心的——怎么免翻墙稳定调用。

Function Calling / Tool Use 到底是什么?

简单说,Function Calling 让大模型可以「说出自己想调用哪个函数、传什么参数」,然后由你的代码去真正执行,再把结果回喂给模型,完成一个闭环。

一次典型的工具调用流程:

  1. 你定义一组工具(函数名 + JSON Schema 参数描述)给模型
  2. 用户提问,模型判断需要调用哪个工具,返回结构化的 tool_use 消息
  3. 你的程序按模型的指示执行真实函数(查数据库、调 API、读文件……)
  4. 把执行结果作为 tool_result 喂回模型
  5. 模型基于结果继续推理,直到给出最终答案或继续调更多工具

所有 Agent 框架(LangChain、Claude Code Subagents、MCP、AutoGen)本质上都是在这套机制上包了一层调度逻辑。

Claude / GPT / Gemini 三家工具调用对比

2026 年三大主流模型都已经把 Function Calling 做到非常成熟,但接口细节和能力差异依然明显:

维度Claude Opus 4.8GPT-5.5Gemini 3 Pro
字段名tools / tool_use / tool_resulttools / tool_calls / tooltools / functionCall / functionResponse
并行调用原生支持,稳定性最佳支持,偶有顺序错乱支持,需开 parallel_tool_calls
强制调用tool_choice: {type: "tool", name}tool_choice: {type:"function",function:{name}}function_calling_config: ANY
JSON 严格输出Schema 校验最严strict:true(2026 默认开)response_schema 严格模式
典型场景Agent、长链路工具编排通用、生态最丰富多模态 + 工具混合调用

实测一句话总结:Claude 在复杂 Agent 编排上最稳,GPT 生态和工具最广,Gemini 在「图片+工具」这种多模态场景最强。三家在不同业务里都有用武之地,所以越来越多团队会同时接入多家。

实战:Claude 工具调用完整代码(Python)

下面是一个能直接跑通的最小示例:让模型调用一个「查询天气」的工具。

import os, json, requests

API_BASE = os.environ['ANTHROPIC_BASE_URL']  # 例如 https://aisafa.xyz/v1
API_KEY  = os.environ['ANTHROPIC_API_KEY']

# 1) 定义工具
tools = [{
    'name': 'get_weather',
    'description': '查询指定城市当前天气',
    'input_schema': {
        'type': 'object',
        'properties': {
            'city': {'type': 'string', 'description': '城市名,例如 上海'}
        },
        'required': ['city']
    }
}]

# 2) 第一次请求,模型决定调用哪个工具
messages = [{'role':'user','content':'今天上海多少度?'}]
resp = requests.post(
    f'{API_BASE}/messages',
    headers={'x-api-key': API_KEY, 'anthropic-version':'2023-06-01','content-type':'application/json'},
    json={'model':'claude-opus-4-8','max_tokens':1024,'tools':tools,'messages':messages}
).json()

# 3) 解析 tool_use
tool_use = next(b for b in resp['content'] if b['type']=='tool_use')
args = tool_use['input']
print('模型要调:', tool_use['name'], args)

# 4) 真实执行(这里写死示例)
result = {'city': args['city'], 'temp_c': 28, 'desc': '多云'}

# 5) 回喂结果
messages.append({'role':'assistant','content':resp['content']})
messages.append({'role':'user','content':[{
    'type':'tool_result','tool_use_id':tool_use['id'],
    'content': json.dumps(result, ensure_ascii=False)
}]})
resp2 = requests.post(
    f'{API_BASE}/messages',
    headers={'x-api-key': API_KEY, 'anthropic-version':'2023-06-01','content-type':'application/json'},
    json={'model':'claude-opus-4-8','max_tokens':1024,'tools':tools,'messages':messages}
).json()

print('最终回答:', resp2['content'][0]['text'])

GPT-5.5 和 Gemini 3 Pro 的代码结构几乎一致,只是字段名换成 tool_calls / functionCall。如果你用 OpenAI 兼容协议接入(下面会讲),还可以用同一份代码同时跑三家模型。

国内开发者:免翻墙稳定调用 Function Calling

真到国内生产环境,Function Calling 比普通对话更怕「断流」:每次工具回喂都是一次完整请求,任何一次网络抖动都可能让整个 Agent 链路失败。直连 Anthropic / OpenAI / Google 又面临三大问题:

这也是为什么越来越多 Agent 团队选择走 API 中转方案。以 Safa API 为例,它把三家官方 API 用 OpenAI 兼容协议统一封装,部署在国内可直连节点上:

调用方式非常简单,把官方 base_url 换成中转地址就行:

# Claude 兼容调用
export ANTHROPIC_BASE_URL=https://aisafa.xyz
export ANTHROPIC_API_KEY=sk-xxxxxx

# OpenAI 协议(同一 key 还能调 GPT/Gemini)
export OPENAI_BASE_URL=https://aisafa.xyz/v1
export OPENAI_API_KEY=sk-xxxxxx

然后无论是上面的 Claude Tool Use 示例、OpenAI Function Calling 示例,还是 LangChain、Claude Code、Cursor,直接复用代码就能跑通,不用改一行业务逻辑。

常见问题与避坑

1. 模型不调用工具,直接瞎答?
大概率是 description 写得太模糊。把工具描述写成「什么时候必须用、输入输出长什么样」,效果立刻提升。必要时用 tool_choice 强制调用。

2. 并行工具调用顺序乱?
Claude 默认并行最稳,GPT 建议关闭 parallel_tool_calls 改成串行调试,排错后再开。

3. JSON Schema 校验失败?
开启 strict / 严格模式,所有字段都加 required 并禁止额外属性(additionalProperties:false),模型输出会规整很多。

4. 长链路工具调用经常 timeout?
除了客户端加超时重试,优先选官方直连稳定的中转(如 Safa API),减少链路抖动。

2026 年 Agent 落地的胜负手,已经从「能不能调用工具」变成「能不能在生产环境里稳定地调用工具」。把 Function Calling 这套机制吃透,再配上一个稳定、统一的 API 入口,你的 Agent 项目就能少走 80% 的弯路。

立即开始使用 Safa API API 中转

官方直连 · 一个接口接入 Claude / GPT / Gemini · 7×24 稳定

免费注册试用 →