1. 托管部署的公开边界
同一家厂商可能同时提供 API、开权重、云 marketplace 和企业私有化方案,它们公开的信息并不相同。下表只写官方文档中终端用户能验证的契约;开权重 runtime 另见自部署页。
| 提供方 | 公开可观察控制面 | 可以得出的工程结论 | 不能得出的结论 |
|---|---|---|---|
| OpenAI | Responses/Chat、Batch、prompt cache、gpt-oss 自部署文档。 | 请求级缓存、异步批处理和模型 lifecycle 要纳入客户端。 | GPT 托管模型的 GPU、KV 物理放置、网络图。 |
| Gemini Batch / Context Cache、Vertex quota / Provisioned Throughput、Gemma self-host。 | 容量承诺有 project-region-model-version 控制面作用域。 | PT 作用域不等于某个 GPU 集群拓扑。 | |
| xAI | prompt cache、x-grok-conv-id / prompt_cache_key、rate limits、Agent Tools。 | 用会话身份与稳定前缀提高 cache 机会,处理 429。 | 闭源 Grok 的 self-host 或全区域能力。 |
| DeepSeek | OpenAI/Anthropic compatible endpoint、模型切换、rate limit、user_id 逻辑隔离。 | 工具、1M/API context、缓存/调度的接口语义可测试。 | user_id 能证明物理 KV 在何处。 |
| Z.ai / Kimi / MiniMax / Hunyuan | 各家 API、工具、模型 ID、streaming / 兼容层和公开配额。 | 建立 provider adapter、模型版本 pin 和重试策略。 | 产品集成页面所对应的内部集群。 |
2. 把托管模型看成状态机,而不是一个无状态 HTTP 函数
这些公开状态已经足够约束客户端:固定版本,保持缓存前缀稳定,为流式中断准备幂等恢复,给工具 schema 做版本管理,对限流和 transient failure 退避,并在模型退役前跑回归。API benchmark 测到的是整项服务,不能当成某厂 GPU 吞吐的直接证据。
3. Batch、prompt cache 和 prefix routing:能省什么,不能保证什么
OpenAI 和 Gemini 公开了异步 Batch 与 cache,xAI、DeepSeek、MiniMax 也各有缓存或上下文管理接口。这些能力要分别处理:
- Batch:把非交互任务移出低延迟通道,通常使用单独限额和完成窗口。它会改变排队与成本,不保证单条任务立即完成。
- Prompt/prefix cache:稳定前缀可能复用计算状态。是否命中取决于模型、region、TTL、请求形状、模板和平台策略;不少平台明确只作 best effort。
- sticky routing:
prompt_cache_key或会话 ID 可以提高相邻请求落到可复用状态的机会。这是路由提示,不是数据库事务,也不承诺数据的物理位置。 - 上下文压缩:压缩可能改变后续 token 和可解释性,评测时要检查任务语义,不能只看费用。
容量计划要保留 cache-miss 基线。缓存驱逐或请求发生微小变化时,p99 会回到这条基线。
4. 多供应商客户端应统一什么,不应伪统一什么
内部可以统一一层 provider adapter。输入侧规范 messages、media、tool schema、effort 和 stream policy;输出侧规范 finish reason、usage、tool call、request id、retryability 与 cache diagnostics。适配器只统一业务需要的字段,不能假定各平台的 reasoning、cache、batch 或多模态语义相同。
| 统一字段 | 为什么 | 不能强行统一的字段 |
|---|---|---|
| model revision / date | 防止供应商切换模型后静默回归 | 模型内部 context/attention 实现 |
| idempotency / request trace | 支持流式断开和 retry 审计 | 供应商 worker identity |
| tool schema + validation | 避免 parser 差异进入业务层 | 隐藏 CoT / reasoning token 政策 |
| token and cost accounting | 比较实际请求,而非宣传价 | 硬件运行成本或电耗 |
| rate-limit telemetry | 做 backoff / circuit breaker | 队列内部优先级算法 |
5. 区域、数据驻留与预留容量:措辞必须精确
OpenAI 的数据控制文档明确:regional storage 不等于 regional processing。因此合规设计应引用官方适用模型/特性表,不能因为数据驻留承诺而推断每个 token 都在同一物理区域推理。Google Vertex Provisioned Throughput 的公开作用域是 project-region-model-version:它说明容量预留在控制面怎样绑定,不是 GPU rack topology。xAI 等平台的区域可用性也应只按具体公告的时间和产品写,不能外推出整个公司服务。
容量设计应至少有三层:交互请求用 SLO + fallback;可延迟请求用 Batch;关键业务用可验证的预留/配额和跨 provider 降级。没有公开 SLA 的 provider,最稳妥的做法是压测当前 API 并预留退路,而不是用模型排行榜估算可用性。
6. 托管 API 的部署验收清单
- 为每个模型保存产品名称、version/date、API endpoint、区域、最大 context、费用和变更公告。
- 测试 cache hit 和 miss 两类请求,分别记录 TTFT、TPOT、cost、使用量和 p95/p99。
- 针对 429、5xx、stream drop、tool parse error、content filter 和 model migration 写可重放测试。
- Batch 验证完成窗口、幂等性、partial failure 与大批量回填。
- 多供应商 fallback 要测 prompt/template 差异、tool schema 差异和安全规则差异,不能只改 model id。
- 合规/区域要求引用适用文档和日期,且在文档没有披露时写‘未知’。
7. 缓存友好的路由与多供应商 fallback
稳定前缀、会话 key、model pin 与 region 选择共同影响 cache 机会;在有公开 sticky-routing hint 时可使用它,但应用仍要接受 cache miss。fallback 不应在一个 stream 已生成半截时盲切模型:应以请求类型、工具副作用、结构化输出和可接受语义差异为条件,必要时返回可重试状态而非悄悄合并两家结果。
8. 工具、数据和审计:API adapter 的最小安全边界
每次调用应记录 provider request id、model/version、权限、token/cost、tool schema version 和必要的输入输出摘要。工具执行要在模型生成之后单独授权、校验和隔离;模型返回的 JSON 只是候选参数,不是可信指令。对数据驻留、日志和 cache 的承诺要链接到具体产品文档及日期,而不是使用一个模糊的“全球 API”标签。
9. 一手来源
| 一手来源 | 使用范围 |
|---|---|
| OpenAI Batch / Prompt caching | 异步容量与 cache/routing 公开语义。 |
| Gemini Batch / Gemini caching / Vertex PT | Google API、cache、容量控制面。 |
| xAI cache / rate limits | xAI 会话 cache 与限流。 |
| DeepSeek rate limits / updates | DeepSeek API 模型/隔离与版本迁移。 |
| Z.ai API、MiniMax API、Hunyuan API | 中国模型厂的公开接口层。 |