OpenAI API 怎么调用外部接口?函数调用从定义工具到回传结果

用 OpenAI 函数调用连接外部业务接口,校验白名单参数、执行服务端函数并回传真实结果。

OpenAI 的函数调用不会替你直接访问订单、天气或库存接口。模型只会返回“建议调用哪个工具以及参数”,你的后端必须校验参数、执行白名单函数,再把真实结果回传给模型,才能得到最终回答。

定义模型可以使用的工具

官方函数调用指南要求用 JSON Schema 描述工具。下面只开放查询订单状态,不允许模型任意拼 URL 或 SQL。

OpenAI API 怎么调用外部接口?函数调用从定义工具到回传结果

tools = [{
    "type": "function",
    "name": "get_order_status",
    "description": "按当前用户可访问的订单号查询状态",
    "parameters": {
        "type": "object",
        "properties": {"order_id": {"type": "string"}},
        "required": ["order_id"],
        "additionalProperties": False,
    },
    "strict": True,
}]

工具描述只告诉模型接口契约。真正的 get_order_status 要在服务端检查当前用户是否拥有该订单,并设置超时;即使模型给出格式正确的订单号,也不能跳过归属校验。

执行工具并回传结果

import json
from openai import OpenAI

client = OpenAI()
r1 = client.responses.create(
    model="gpt-6-luna",
    input="帮我查订单 A102 的状态",
    tools=tools,
)

outputs = []
for item in r1.output:
    if item.type != "function_call":
        continue
    if item.name != "get_order_status":
        raise ValueError("工具不在白名单")
    args = json.loads(item.arguments)
    result = get_order_status_for_current_user(args["order_id"])
    outputs.append({
        "type": "function_call_output",
        "call_id": item.call_id,
        "output": json.dumps(result, ensure_ascii=False),
    })

if outputs:
    r2 = client.responses.create(
        model="gpt-6-luna",
        previous_response_id=r1.id,
        input=outputs,
        tools=tools,
    )
    print(r2.output_text)

关键证据是先收到 function_call,后端确实执行函数,再用相同 call_id 回传 function_call_output。只看到模型生成了参数,不能记为“接口调用成功”。代码依据官方 SDK 快速入门组织,实际字段以安装版本为准。

用三种结果验证

  1. 存在且属于当前用户的订单:应返回数据库里的真实状态。
  2. 不存在的订单:工具返回结构化“未找到”,模型不得编造物流信息。
  3. 属于其他用户的订单:工具必须拒绝,日志记录授权失败但不泄露订单内容。

写操作还要增加幂等键和二次确认。网络超时时先查询外部动作是否已发生,再决定是否重试,尤其是退款、发信和删除操作。

常见问题

模型能直接执行 Python 函数吗?不能。你的程序读取工具调用并决定是否执行。

为什么没有返回工具调用?检查工具描述是否清楚、模型是否支持工具以及问题是否真的需要外部数据。本文没有连接你的订单系统,示例中的业务函数需由你实现并测试。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31080.html

赞 (0)
AI小管家的头像AI小管家
NotebookLM 怎么整理多份文档?建立笔记本、按引文核对结论
上一篇 1天前
Copilot in Excel 怎么整理表格?转换数据、生成公式并检查结果
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部