如何测试 OpenAI 兼容 API

生产实践指南:如何测试 OpenAI 兼容 API。内容包含确定性工件、失败边界、上线检查和有来源的适用限制。

生产实践指南:如何测试 OpenAI 兼容 API。内容包含确定性工件、失败边界、上线检查和有来源的适用限制。

先给出决策

如何测试 OpenAI 兼容 API是一份明确的生产契约,而不是孤立的代码改动。切换流量前,先定义成功信号、终止失败状态和回滚条件。下面的工件把证据与假设分开,并让每次尝试都可追溯。

先落实 text,再用确定性用例证明 stream,并把 errors 作为上线门槛,而不是事后补项。

可复用的技术工件

把下表作为评审记录。只有证据来自同一次请求、同一测试窗口或同一配置快照时,该行才算通过。

检查点 需要保留的证据 通过条件
text non-stream_response,finish_state,empty_and_Unicode_input 在线路边界保留并精确比较该值。
stream SSE_event_order,terminal_marker,usage_placement,disconnect 记录能关联到一个逻辑请求和一次具体尝试。
tools single_and_parallel_calls,argument_schema,call_correlation 记录能关联到一个逻辑请求和一次具体尝试。
schema valid_object,refusal,truncation,unsupported_keyword 限制明确,超过限制时默认拒绝。
usage input,output,cache_read/write,missing_categories 预留值、观测值与最终值能在同一持久账本中对账。
errors 401,403,429,499,5xx_outer_and_embedded_failures 记录 owner、来源、核验日期和已知限制。

演算示例

示例使用合成数据且结果确定。请换成经过评审的真实工作负载参数;不要把生产密钥或客户提示词放入测试工件。

corpus_version: 1
cases:
  - id: text/non_stream_zero_values
    request: { stream: false, temperature: 0 }
    assert: [http_status, response_shape, explicit_zero_preserved]
  - id: stream/disconnect
    action: cancel_after_first_content_delta
    assert: [client_cancelled, upstream_cancelled, terminal_state_recorded]
  - id: tools/two_calls
    assert: [stable_call_ids, arguments_validated, results_correlated]
  - id: errors/rate_limit
    assert: [status_429, retry_after_parsed, attempt_budget_respected]

实施流程

  1. 变更前冻结当前请求、响应、配置和可观测基线。
  2. 运行一个确定性的正向用例,并保留客户端看到的完整结果。
  3. 运行配对的负向或上限用例,用证据确认失败行为。
  4. 用一个逻辑请求 ID 关联全部尝试,记录耗时、终态和用量,但不记录敏感正文。
  5. 仅在有界流量中放量并设置明确停止条件,不能因为 happy path 通过就直接扩大流量。
  6. 变更后回读持久状态和公网行为;任何不变量失败时执行预先准备的回滚。

常见失败模式

即使外层 HTTP 请求看起来成功,以下情况也会使结论无效:

  • 用一次文本响应证明流式、工具、Schema、用量和错误等全部协议兼容。
  • 解析或再次序列化时丢失显式的 0false,改变调用方意图。
  • 只读取一个便捷字段,静默丢弃带类型的输出项、工具调用、拒绝或部分结果。
  • 多层独立重试相乘,把短暂 429 放大成持续过载。

Modelflare 边界

Modelflare 可以集中管理 OpenAI 兼容路由、密钥、分组、用量记录和失败处理,但“已配置路由”不等于上游支持所有可选字段。必须用原生协议验证具体模型与渠道。提供商价格以当前价格源为准,显式零值必须保留,最终持久结算才是账务真相。

更宽的决策边界见上级指南,当前客户端配置见接入文档

发布前检查表

  • 先回答核心问题,再补充背景。
  • 每个请求字段、状态、指标和公式都有唯一 owner。
  • 示例只使用合成标识,不包含密钥或客户数据。
  • 所有受支持语言保留相同的标题层级、表格、代码、限制和警告。
  • 在 T-1 日复核易变 API 契约、模型支持和价格;事实失效时移动发布日期。
  • 预约时间前,公共 API、本地化路由和 sitemap 都不能出现该文章。

来源与核验日期

来源核验日期为 2026-08-07。这些来源只建立外部契约或运行原则,不能证明未经测试的提供商路由已支持。