跳转到主要内容

概览

TokenLab 的 Agent-First API 会在错误响应中加入结构化提示,AI Agent 可以立即解析并采取行动 —— 无需网络搜索、无需查阅文档、无需猜测。 每个错误响应的标准 error 对象中都包含可选字段,例如 did_you_meansuggestionshintretryableretry_after。这些字段向后兼容 —— 不使用它们的客户端不会有任何差异。

错误提示字段

所有提示字段都是 error 对象内的可选扩展:

错误代码示例

model_not_found (400)

当模型名称不匹配任何活动模型时:
did_you_mean 的解析使用:
  1. 静态别名映射(来自生产错误数据)
  2. 规范化字符串匹配(去除连字符,大小写不敏感)
  3. 编辑距离匹配(阈值 ≤ 3)
公共路由不会为隐藏的、延后可用的或非公开的模型暴露单独的错误代码。将不可用的公共模型视为一次匹配失败:检查 did_you_meansuggestionshint,然后使用受支持的公共模型重试。

insufficient_balance (402)

当账户余额不足以覆盖预计费用时:
suggestions 包含比预计费用更低、Agent 可以切换到的模型。

all_channels_failed (503)

当某个模型的所有通道都暂时不可用时:
当原因是 no_channels(该模型未配置任何通道)时,retryablefalse。只有在诸如熔断器触发或配额耗尽等短暂故障情况下,retryable 才为 true

rate_limit_exceeded (429)

retry_after 的值根据实际速率限制窗口重置时间计算。
与 OpenAI 兼容的端点使用 TokenLab 的稳定公共错误类型,例如 rate_limit_exceededupstream_errorall_channels_failed。与 Anthropic 兼容和与 Gemini 兼容的端点使用它们各自的原生响应格式。

context_length_exceeded (400)

当输入超过模型的上下文窗口(上游错误,附带提示)时:

原生端点头部

当你对有原生端点(Anthropic 或 Gemini)的模型调用 /v1/chat/completions 时,成功响应 会包含优化头部:
这些头部会出现在流式和非流式响应中。

/v1/models 增强

/v1/models 现在携带非聊天场景的推荐元数据,Agent 在调用图像、视频、音乐、3D、TTS、STT、embedding、rerank 或翻译端点之前可以使用这些元数据。
recommended_for 存在时,agent_preferences 来源于缓存的 24 小时成功率快照:
  • 窗口:24 小时
  • 快照缓存:stale-while-revalidate
  • status = "ready" 表示该模型有足够的最近样本参与排序
  • status = "insufficient_samples" 表示该模型仍可见,但不会排在有评分模型之前

分类过滤

推荐发现

对于非聊天工作流,Agent 应首先获取当前的推荐候选名单:
有效的 recommended_for 值为:
  • image
  • video
  • music
  • 3d
  • tts
  • stt
  • embedding
  • rerank
  • translation
如果同时存在 categoryrecommended_for,则二者必须完全匹配。 推荐的 Agent 流程:
  1. GET /v1/models?recommended_for=<scene>
  2. 选择第一个 agent_preferences.<scene>.status == "ready" 的模型
  3. 使用 model=<selected> 明确调用端点
  4. 仅在短暂错误情况下,使用下一个 ready 模型重试

llms.txt

机器可读的 API 概览可通过以下方式获取:
其中包含:
  • 带工作示例的首次调用模板
  • 常见模型名称(基于使用数据动态生成)
  • 所有 12 个 API 端点
  • 模型发现的过滤参数
  • 错误处理指南
在首次 API 调用之前读取 llms.txt 的 AI Agent 通常可以在第一次尝试时成功。

在 Agent 代码中的使用

Python (OpenAI SDK)

JavaScript (OpenAI SDK)

设计原则

快速失败,提供明确信息

错误会立即返回,并提供 Agent 自我修正所需的所有数据。

不自动路由

API 不会在未通知的情况下替换其他模型。由 Agent 来决定。

数据驱动的建议

所有推荐均来自生产数据,而非硬编码列表。

向后兼容

所有提示字段都是可选的。现有客户端不会受到影响。