标签: AI接口

  • AI接口教程:用JSON结构化输出和函数调用连接业务系统

    一句话结论:让 AI 接入业务系统时,应把“回答问题”和“调用工具”分开设计:结构化输出负责稳定传递数据,函数调用负责请求外部系统执行动作,最终结果必须由程序校验。

    本文参考 OpenAI 的 Structured Outputs 与 Function Calling 官方文档,适合做客服分流、内容发布、订单查询等原型。工具调用不是让模型直接操作服务器,而是由应用定义工具、校验参数并执行。

    两种能力的区别

    能力 用途 程序要做什么
    结构化输出 把回答变成固定 JSON 按 Schema 校验字段和类型
    函数调用 让模型请求查询或动作 校验参数、执行函数、返回结果

    结构化输出示例

    请把用户问题分类为 JSON:
    {
      "intent": "article_search | article_feedback | human_help",
      "keywords": ["关键词"],
      "needs_human": true,
      "reason": "不超过 50 字"
    }
    规则:只能使用列出的 intent;无法判断时使用 human_help。

    生产接口中不要只依靠提示词约束格式,应使用当前 SDK 支持的 JSON Schema,并处理拒答、截断、解析失败和字段缺失。Schema 的键名和描述要有业务含义,不能把所有可能情况都塞成一个字符串。

    函数调用的闭环

    1. 应用把工具名称、参数 Schema 和用户问题交给模型。
    2. 模型返回工具调用请求,而不是直接执行。
    3. 应用验证参数、权限和资源范围,再调用真实函数。
    4. 应用把工具结果回传给模型,让它生成用户可读的答复。
    5. 记录调用日志,并对写入、删除、付款等高风险动作增加人工确认。

    安全设计要点

    工具参数不能绕过权限检查;用户输入不能直接拼接 SQL、Shell 或文件路径;写操作要做幂等、审计和超时;外部结果也要当作不可信数据处理。模型说“已发布”不等于系统真的发布,界面应以工具实际返回的状态为准。

    常见问题

    结构化输出等于函数调用吗?

    不等于。前者约束数据格式,后者建立模型与应用函数之间的交互流程。

    模型会自动执行函数吗?

    不会。应用需要接收调用请求、校验并执行,之后再把结果返回给模型。

    为什么还要做 Schema 校验?

    提示词不是程序级约束,Schema 和代码校验能更早发现类型、枚举和字段问题。

    哪些工具需要人工确认?

    发布、删除、付款、改权限和发送外部消息等不可逆或高影响动作,建议确认后执行。

    如何开始做第一个原型?

    先做只读查询,固定 3 个测试问题,记录成功和失败,再逐步加入写操作。

    \n

    信息来源与说明

    本文参考 OpenAI Structured Outputs 指南和 OpenAI Function Calling 指南整理。接口参数和 SDK 写法应以当前官方文档为准。