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 端点相同的错误信封: