Skip to main content
POST
OpenAI 兼容的 Chat Completions
Theo 在 POST /api/v1/chat/completions 上實現了 OpenAI Chat Completions 通信協議。任何使用 OpenAI SDK 的應用都可以將 baseURL 指向 https://www.hitheo.ai/api/v1,換上 Theo API 密鑰即可正常運行——該端點接受相同的 { model, messages, stream, temperature, ... } 結構,並返回相同的 chat.completion / chat.completion.chunk 對象。
響應結構與 OpenAI 完全一致。底層的路由則由 Theo 負責——意圖分類、模型選擇與自動故障轉移。傳入 model: "theo-1-auto" 可讓 Theo 為每個請求選擇最合適的引擎。

基礎 URL

請使用規範的 www 主機名。OpenAI SDK 會在其後追加 /chat/completions,因此該基礎 URL 最終會解析到真實的 POST /api/v1/chat/completions 路由:
務必使用 www 主機名。裸域名 https://hitheo.ai 會以 307 重定向到 www,而大多數 HTTP 客戶端在跨重定向時會剝離 Authorization 頭——請求會以未認證狀態到達,並返回 401。

身份驗證

使用標準的 Bearer 令牌請求頭。你的 Theo API 密鑰將替代原來的 OpenAI 密鑰。

即插即用示例(OpenAI SDK)

流式響應

將 stream 設為 true,即可接收以 data: [DONE] 結尾的 chat.completion.chunk 對象 SSE 流,行為與 OpenAI 完全一致。

支持的 model 取值

傳入任意 Theo 品牌模型 ID。推薦使用 theo-1-auto,讓 Theo 的意圖分類器為每個請求挑選最合適的引擎;如果你想固定路由,也可以傳入具體的引擎。 未知的模型字符串會回退到 auto,Theo 會像處理其他任何提示一樣為該請求路由。

請求體

請求體沿用標準的 OpenAI Chat Completion 結構。下方未列出的字段仍會被接受,但會被忽略(例如 top_p、n、max_tokens、user)。
string
預設值:"theo-1-auto"
一個 Theo 模型 ID。有效取值參見上方表格。
object[]
必填
到目前為止的對話內容。每條消息包含 { role, content }。支持的角色有:system、user、assistant。tool 消息會被接受但忽略(工具調用狀態由 Theo 內部管理)。最後一條 user 消息會被視為提示。所有 system 消息會被合併為單一的系統提示,覆蓋 Theo 的默認角色設定。此前的 user/assistant 輪次會作為對話上下文注入。
boolean
預設值:"false"
當設為 true 時,返回以 data: [DONE] 結尾的 chat.completion.chunk 對象 SSE 流。
number
採樣温度(0–2)。
string
Theo 專屬參數。 將此次補全關聯到一個已有的 Theo 對話,使其記憶能夠跨渠道持續保留。省略此參數則發送無狀態請求。
string[]
Theo 專屬參數。 按 slug 為本次請求激活技能。會與用戶已安裝的技能合併。
object
Theo 專屬參數。 附加到審計日誌中的任意鍵值數據。

響應

標準的 OpenAI chat.completion(流式時為 chat.completion.chunk)。Theo 專屬的元數據會以 theo_metadata 擴展字段返回,以避免與現有 OpenAI 客戶端的預期結構衝突。

何時改用 /v1/completions

  • 你需要的是單輪提示字符串,而不是消息數組。
  • 你想要更豐富的原生 Theo 響應(後續追問、產物、工具調用軌跡),而不是 OpenAI 的結構。
  • 你想在每次請求中單獨控制 persona 或 response_style。
原生端點參見 創建補全。

同樣適用按密鑰編排

該端點運行的是與原生端點完全相同的按密鑰編排:無論你為該 API 密鑰配置了什麼——編排器圖譜、模型鎖定、網關護欄、路由工作室偏好設置、模型允許列表,以及上下文窗口保護——都會同樣作用於此處的請求。因此,無論你是通過 OpenAI SDK 還是原生 API 調用,一個你在控制台或通過 MCP 工具配置好的密鑰都會表現一致。護欄可以拒絕請求(422),超出該密鑰允許列表的模型會被拒絕(403),超出體積的請求會返回 400 context_length_exceeded。沒有此類配置的密鑰不受影響——它們仍會按 Theo 的默認設置路由,與以往一致。

錯誤

返回與其他所有 v1 端點相同的錯誤信封: