概览
TokenLab 的 Agent-First API 会在错误响应中加入结构化提示,AI Agent 可以立即解析并采取行动 —— 无需网络搜索、无需查阅文档、无需猜测。 每个错误响应的标准error 对象中都包含可选字段,例如 did_you_mean、suggestions、hint、retryable 和 retry_after。这些字段向后兼容 —— 不使用它们的客户端不会有任何差异。
错误提示字段
所有提示字段都是error 对象内的可选扩展:
错误代码示例
model_not_found (400)
当模型名称不匹配任何活动模型时:did_you_mean 的解析使用:
- 静态别名映射(来自生产错误数据)
- 规范化字符串匹配(去除连字符,大小写不敏感)
- 编辑距离匹配(阈值 ≤ 3)
did_you_mean、suggestions 和 hint,然后使用受支持的公共模型重试。
insufficient_balance (402)
当账户余额不足以覆盖预计费用时:suggestions 包含比预计费用更低、Agent 可以切换到的模型。
all_channels_failed (503)
当某个模型的所有通道都暂时不可用时:当原因是
no_channels(该模型未配置任何通道)时,retryable 为 false。只有在诸如熔断器触发或配额耗尽等短暂故障情况下,retryable 才为 true。rate_limit_exceeded (429)
retry_after 的值根据实际速率限制窗口重置时间计算。
与 OpenAI 兼容的端点使用 TokenLab 的稳定公共错误类型,例如
rate_limit_exceeded、upstream_error 和 all_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 值为:
imagevideomusic3dttssttembeddingreranktranslation
category 和 recommended_for,则二者必须完全匹配。
推荐的 Agent 流程:
GET /v1/models?recommended_for=<scene>- 选择第一个
agent_preferences.<scene>.status == "ready"的模型 - 使用
model=<selected>明确调用端点 - 仅在短暂错误情况下,使用下一个
ready模型重试
llms.txt
机器可读的 API 概览可通过以下方式获取:- 带工作示例的首次调用模板
- 常见模型名称(基于使用数据动态生成)
- 所有 12 个 API 端点
- 模型发现的过滤参数
- 错误处理指南
llms.txt 的 AI Agent 通常可以在第一次尝试时成功。
在 Agent 代码中的使用
Python (OpenAI SDK)
JavaScript (OpenAI SDK)
设计原则
快速失败,提供明确信息
错误会立即返回,并提供 Agent 自我修正所需的所有数据。
不自动路由
API 不会在未通知的情况下替换其他模型。由 Agent 来决定。
数据驱动的建议
所有推荐均来自生产数据,而非硬编码列表。
向后兼容
所有提示字段都是可选的。现有客户端不会受到影响。