Skip to main content

概覽

TokenLab 的 Agent-First API 在錯誤回應中加入了可結構化的提示,AI 代理可以立即解析並採取行動——不需網路搜尋、不需查文件、也不需猜測。 OpenAI 相容的 Chat Completions 與 Responses gateway 錯誤,可在 error 物件中包含 did_you_meansuggestionshintretryableretry_after 等可選欄位。Anthropic Messages 與 Gemini 會保留各自的原生錯誤形狀,不承諾這些擴充欄位。

錯誤提示欄位

對 OpenAI 相容 gateway 錯誤而言,所有提示欄位都是 error 物件內的可選擴充:

錯誤代碼範例

model_not_found (400)

當模型名稱未匹配到任何啟用中的模型時:
did_you_mean 的解析使用:
  1. 靜態別名對應(來自生產錯誤資料)
  2. 正規化字串比對(去除連字號、大小寫不敏感)
  3. 編輯距離比對(閾值 ≤ 3)
公開路由不會針對隱藏、延遲或非公開模型暴露不同的錯誤代碼。將不可用的公開模型視為一個 miss:檢查 did_you_meansuggestionshint,然後使用受支援的公開模型重試。

insufficient_balance (402)

當帳戶餘額不足以支付估計費用時:
suggestions 包含比估計費用更便宜且代理可以切換的模型。

all_channels_failed (503)

當模型暫時不可用時:
當原因為 no_channels(此模型未配置任何通道)時,retryablefalse。只有在像是電路斷路器觸發或額度耗盡等暫時性失敗時才會是 true

rate_limit_exceeded (429)

retry_after 的值是根據實際速率限制窗口重置時間計算得出。
與 OpenAI 相容的端點使用 TokenLab 穩定的公開錯誤類型,例如 rate_limit_exceededupstream_errorall_channels_failed。與 Anthropic 相容與 Gemini 相容的端點則使用它們各自的原生回應格式。

context_length_exceeded (400)

當輸入超過模型的上下文窗口時:

原生端點探索

不要根據模型名稱、供應商名稱或 Chat 回應標頭推斷原生協定是否可用。選擇原生端點前,先讀取 GET /v1/models/{model},只使用模型詳情明確公告且有同協定路由的請求格式。 應讀取的欄位是 tokenlab.accepted_request_formats 公告的請求格式只決定端點是否可用;個別欄位與工具是否受支援仍由上游決定。

/v1/models 增強

/v1/models 現在會攜帶非 chat 的推薦 metadata,代理可以在呼叫 image、video、music、3D、TTS、STT、embedding、rerank 或 translation 端點之前使用這些資訊。
recommended_for 存在時,agent_preferences 來源於快取的 24 小時成功率快照:
  • 窗口:24 小時
  • 快照快取:stale-while-revalidate
  • status = "ready" 表示模型有足夠的近期樣本參與排序
  • status = "insufficient_samples" 表示該模型仍可見但不會排在有分數模型之前

類別篩選

推薦探索

對於非 chat 的工作流程,代理應先取得當前的推薦候選清單:
有效的 recommended_for 值為:
  • image
  • video
  • music
  • 3d
  • tts
  • stt
  • embedding
  • rerank
  • translation
如果同時存在 categoryrecommended_for,兩者必須完全匹配。 推薦的代理流程:
  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 代理,通常可以在第一次嘗試就成功。

在代理程式碼中的使用範例

Python (OpenAI SDK)

JavaScript (OpenAI SDK)

設計原則

快速失敗、資訊充足

錯誤會立即回傳代理自我修正所需的所有資料。

不自動路由

API 不會在背後偷偷替換成其他模型。由代理來決定。

資料驅動的建議

所有推薦皆來自生產資料,而非硬編碼清單。

向後相容

所有提示欄位均為可選。現有客戶端看不到差異。