跳到正文

Chat Completions

POST /v1/chat/completions 接受对话历史,返回一次回答或 SSE 流。需要有效 API Key,见接入与鉴权

最小请求

以下 Bash 示例假定已经设置 OBSIDIAN_API_KEY

bash
curl https://ai.example.com/v1/chat/completions \
  -H "Authorization: Bearer $OBSIDIAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model",
    "messages": [
      {"role": "user", "content": "用一句话介绍 Go。"}
    ]
  }'

把地址替换为自己的实例,把 your-model 替换为 /v1/models 中的 id。非流式回答文字位于 choices[0].message.content

支持的参数

参数说明
model必填,模型名称
messages必填,非空消息数组
stream默认 false
temperature可选,未提供时不强制指定 1.0
max_tokens输出上限,受模型配置限制
max_completion_tokens与上项同时提供时优先使用
reasoning_effort推理等级,是否生效取决于模型能力
tools函数工具定义
tool_choice工具选择方式

请求体上限为 12 MiB,最多 400 条消息和 256 个工具。上游还可能有更小的上下文或参数限制。

流式回答

设置 "stream": true,并用 curl -N 禁用命令行输出缓冲:

bash
curl -N https://ai.example.com/v1/chat/completions \
  -H "Authorization: Bearer $OBSIDIAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"your-model","stream":true,"messages":[{"role":"user","content":"你好"}]}'

正文增量在 choices[].delta.content 中返回。工具调用使用对应的增量字段,客户端需要按调用 ID 组装参数。

工具调用

通过 tools 声明函数后,模型可以返回 tool_calls。工具由客户端执行,网关不会替客户端运行命令或函数。

下一次请求需要包含模型的工具调用消息,以及带有匹配 tool_call_idrole: tool 结果消息。

模型和上游必须支持工具调用。跨协议转换不能保证保留厂商特有的工具扩展。

兼容范围

response_formatparallel_tool_callslogprobsnseed 等未实现字段可被接受但忽略,不会自动透传给上游。尤其不能因为请求成功,就认定结构化输出格式约束已经执行。

遇到参数问题时,先使用最小请求验证,再逐项加入可选参数。

Obsidian Arc · 自托管 AI 工作空间