跳转至

兼容 API 可靠性判断与上线前验收清单

最后核验:2026-07-19

适合:准备给聊天客户端、编程 Agent、知识库或生产应用配置兼容 API 的用户

← 返回教程目录

[!NOTE] 本文适用于任何符合对应协议的 API。还没有测试 Key 时,可查看 教程配套 API

需要先按计费口径与任务类型筛选模型时,可先看 NexoToken AI API 计费与模型选择专题;本文继续保留上线前的完整验收清单。

判断一个兼容接口是否可靠,不能只看价格、模型列表或一次“你好”。真正有用的结论来自一套可重复的验收:协议是否正确、能力是否完整、用量能否对账、错误能否恢复、数据和密钥是否可控。

1. 先定义你的验收目标

不同场景的最低标准不同:

场景 必测能力
普通聊天 非流式、流式、多轮上下文、停止原因
编程 Agent 工具调用、多轮工具结果、长输出、429/5xx 恢复
RAG / 知识库 Chat、Embedding、向量维度、批量请求、引用链路
自动化工作流 超时、重试、幂等、并发、预算、日志脱敏
生产应用 上述能力 + SLA、监控、数据处理、密钥轮换和退出方案

先写下“必须可用”和“可以没有”的能力,避免被一长串模型名称带偏。

2. 第一层:服务信息是否透明

在发送任何敏感数据前,检查服务是否能明确回答:

  • Base URL 和支持的协议是什么;
  • 模型 ID 是否可以直接复制;
  • Chat Completions、Responses、Messages 各支持到什么程度;
  • 输入、输出、缓存和其他能力如何计费;
  • 是否能查看请求用量、余额和充值记录;
  • Key 能否创建多个、单独禁用和轮换;
  • 数据是否记录、保存多久、用于什么目的;
  • 服务中断、模型下线和退款如何处理;
  • 文档或价格的最后更新时间是什么。

没有说明不一定代表不可用,但意味着你无法建立稳定预期,不适合直接承载重要业务。

3. 第二层:完成最小协议测试

建立独立测试环境变量:

export AI_BASE_URL="https://your-api.example.com/v1"
read -s AI_API_KEY
export AI_API_KEY
export AI_MODEL_ID="YOUR_MODEL_ID"

模型列表

curl --fail-with-body --show-error \
  "$AI_BASE_URL/models" \
  -H "Authorization: Bearer $AI_API_KEY"

/models 返回 404 不一定代表聊天不可用,因为部分服务不开放模型列表。但文档必须提供可用模型 ID,不能靠猜。

Chat Completions 最小请求

curl --fail-with-body --show-error \
  "$AI_BASE_URL/chat/completions" \
  -H "Authorization: Bearer $AI_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"$AI_MODEL_ID\",
    \"messages\": [{\"role\": \"user\", \"content\": \"只回复 OK\"}],
    \"stream\": false,
    \"temperature\": 0
  }"

至少记录:

  • HTTP 状态码;
  • 响应耗时;
  • 返回中的模型字段;
  • finish_reason 或对应停止原因;
  • 输入、输出和总 Token;
  • 请求 ID 或可供客服定位的追踪信息。

返回中的模型名称只是服务声明的一部分,不能单独作为模型身份的技术证明。评估应结合官方能力、稳定性、输出质量、账单和长期测试,不要用一道题下结论。

4. 第三层:协议能力逐项验证

“OpenAI 兼容”不是一个精确的功能版本。应建立测试矩阵:

能力 结果 备注
/models 可选,但应有其他模型目录
Chat Completions 非流式 检查结构与 usage
Chat Completions SSE 检查增量到达和结束标记
Responses 非流式 不能用 Chat 成功替代
Responses 语义事件 检查事件类型与完成事件
Anthropic Messages 检查专用请求头和内容块
多轮上下文 检查历史是否保留
Tool Calling 完成调用和回传两轮
JSON / 结构化输出 用 Schema 校验结果
图片输入 检查格式、大小和计费
长上下文 检查截断与错误行为
最大输出 检查停止原因,不只看长度
Embedding 检查维度和批量顺序
429 重试 尊重 retry-after
流中错误 200 后仍可能出现错误事件

详细测试载荷见流式输出、工具调用与长上下文完整测试,429 与恢复策略见限流、重试与并发控制

5. 第四层:核对 Token 和账单

至少选三种请求:

  1. 很短的单轮文本;
  2. 带固定系统提示的重复请求;
  3. 一次较长的多轮对话或工具调用。

为每次请求保存:

时间:
请求 ID:
模型 ID:
输入 Token:
缓存创建/读取 Token:
输出 Token:
响应声明费用:
控制台扣费:

允许存在统计展示延迟和不同 Tokenizer 造成的小差异,但计费规则必须能够解释。若客户端没有保存 usage,可先用 Apifox、Postman 或最小 SDK 脚本测试。

重点确认:

  • 输入价和输出价是否分开;
  • 缓存读写是否单独计价;
  • 工具调用是否产生额外模型轮次;
  • 失败、取消和中断请求如何计费;
  • 展示单位是人民币、美元、积分还是 Token;
  • 价格是每 1K 还是每 1M Token。

6. 第五层:做稳定性小样本

一次成功没有统计意义。建议在不制造无意义流量的前提下,分时段执行同一个轻量请求,例如连续三天、每天早中晚各几次。

记录:

指标 说明
成功率 2xx 且响应结构完整
首 Token 时间 流式请求从发送到首个有效增量
总耗时 请求完成时间
429 比例 是否经常触发速率限制
5xx / 529 比例 服务端或过载错误
中途断流 已返回 200 后流异常结束
输出完整率 是否频繁无故截断

不要使用大并发压测未知服务。未经许可的压力测试可能违反规则,也无法代表普通用户体验。

7. 第六层:验证错误是否可恢复

主动制造安全、低成本的错误:

  • 把 Key 最后一个字符临时改错,预期得到 401;
  • 使用不存在的模型 ID,预期得到明确的 400/404;
  • 把 URL 多写一个 /v1,确认能定位路径错误;
  • 将输出上限设得很小,确认停止原因;
  • 手动取消流式请求,观察客户端是否能正常结束;
  • 在测试环境模拟 429,确认重试有上限并带抖动。

合格的调用端不应无限重试,也不应把所有 4xx 当成可重试错误。

建议的重试分类

类型 是否自动重试 做法
400 参数错误 修正请求
401 认证错误 检查或轮换 Key
403 权限错误 检查模型和项目权限
404 路径/模型错误 检查 Base URL 与模型 ID
408 / 网络超时 有限重试 指数退避 + 抖动
429 限流 优先遵守 retry-after
500 / 502 / 503 / 529 有限重试 退避,超过上限后失败

8. 第七层:密钥和数据安全

Key 管理

  • 测试、个人设备、服务器和生产环境分别创建 Key;
  • 不在前端 JavaScript、移动端安装包或公开仓库中放长期 Key;
  • 日志只保留 Key 指纹或末四位;
  • 支持单 Key 撤销,定期轮换;
  • CI 使用 Secret 管理,不写入 YAML 明文;
  • 离职、设备丢失或疑似泄露时立即撤销。

完整的存放、无中断轮换和泄露处置流程见 API Key 安全与轮换。如果应用连接了 MCP Server,还应按 MCP 入门与安全配置限制工具和数据权限。

数据边界

确认请求可能包含哪些内容:源码、客户数据、合同、病历、密钥、内部 URL、数据库结果、工具返回值。编程 Agent 还可能自动读取整个工作区。

正式接入前至少回答:

  • 请求和响应是否记录;
  • 日志保存多久;
  • 是否用于训练或产品改进;
  • 数据存放地区和子处理方如何说明;
  • 能否删除数据;
  • 支持怎样的访问控制和审计。

无法确认时,只发送公开或合成测试数据。

9. 第八层:准备退出方案

可靠不只是“今天能用”,还包括“明天换得掉”:

  • Base URL、Key 和模型 ID 使用环境变量;
  • 不把供应商特有字段散落在业务代码中;
  • 保存一套协议契约测试;
  • 为关键任务准备备用模型,但不要静默切换导致质量变化;
  • 导出非敏感配置和用量记录;
  • 明确余额、退款、数据删除和账号注销方式。

不要只测试故障切换是否“有字返回”,还要检查工具调用、结构化输出和安全策略是否保持一致。

10. 上线评分表

每项 0~2 分:0 为不满足,1 为部分满足,2 为明确满足。

项目 分数
协议和模型文档清楚 /2
核心请求结构正确 /2
流式和工具调用完整 /2
Token 与账单可核对 /2
错误信息和请求 ID 可排查 /2
限流与重试行为明确 /2
Key 可分项目、撤销和轮换 /2
数据处理规则明确 /2
多时段稳定性达到要求 /2
有迁移和退出方案 /2
  • 17~20 分: 可以进入受控生产试运行;
  • 13~16 分: 适合个人或非关键任务,先补齐薄弱项;
  • 9~12 分: 只适合小额测试;
  • 0~8 分: 信息或能力不足,不建议承载真实数据。

分数只是决策记录,不是行业认证。关键项如数据安全、账单可解释性或协议完整性为 0 时,即使总分较高也不应直接上线。

11. 15 分钟快速版

时间有限时,至少完成:

  • 文档明确 Base URL、协议和模型 ID;
  • 独立测试 Key 已创建;
  • 非流式文本请求成功;
  • SSE 确实逐段到达;
  • 目标工具能完成一次真实能力测试;
  • usage 与控制台扣费可以解释;
  • 错误响应不泄露 Key,且有请求 ID;
  • Key 可以立即撤销;
  • 只发送了合成测试数据;
  • 已记录测试日期与结果。

12. 官方参考

下一步:用Apifox / Postman 教程完成基础请求,再按完整能力测试验证 Agent 链路。