Files
ttstd-infinite-canvas/backend/internal/protocol/docs/chat-completion.md

63 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenAI Chat Completions
Chat Completions 是基于 `messages` 的同步或流式文本协议。宿主默认把提示词包装成一条 `user` 消息;需要多轮上下文、工具调用或结构化输出时,通过模型扩展参数传入完整 OpenAI 字段。
## 接口、鉴权与请求模式
{{OPERATIONS}}
```http
POST {channel_base_url}/v1/chat/completions
Authorization: Bearer <API_KEY>
Content-Type: application/json
```
官方服务的 Base URL 通常以 `/v1` 结尾;在宿主中应以渠道实际配置为准。同步请求返回单个 JSON;`stream: true` 时上游返回 SSE,宿主文本任务流负责转发和组装事件。
## 模型与兼容边界
模型名不会由插件维护白名单,必须填写渠道实际暴露的模型 ID。OpenAI 新项目更推荐 Responses API;现有 Chat Completions 模型和兼容渠道仍可使用本插件。兼容渠道可能只实现字段子集,不能因为路径相同就假定支持工具、视觉输入或 JSON Schema。
## 参数与字段映射
{{PARAMETERS}}
可通过 `extra` 透传 `messages`、`temperature`、`top_p`、`max_tokens`、`stream`、`tools` 和 `response_format`。传入 `extra.messages` 时会替换默认单条消息,而不是追加。
## 完整请求示例
```bash
curl "{channel_base_url}/v1/chat/completions" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL",
"messages": [
{"role":"system","content":"你是影视分镜助理。"},
{"role":"user","content":"把这场雨夜追逐拆成 6 个镜头。"}
],
"temperature": 0.7
}'
```
```json
{
"id": "chatcmpl_xxx",
"choices": [{"message":{"role":"assistant","content":"1. 全景……"},"finish_reason":"stop"}],
"usage": {"prompt_tokens":32,"completion_tokens":95,"total_tokens":127}
}
```
## 响应解析、流式与错误
同步解析只读取 `choices[0].message.content`,并保留顶层 `usage`。当前解析器不把 `tool_calls` 当文本结果;只有工具调用而没有正文时,应由调用方进入工具回合,不能当作普通文本成功。流式分片、结束标记和断线续传由文本任务 SSE 链路处理,不使用此同步 JSON 解析器硬拼。
常见失败包括模型不存在、上下文超限、字段不受兼容服务支持、额度或速率限制。应保留上游 HTTP 状态和错误正文,不改写为成功。
## 官方资料
- [OpenAI Chat Completions API Reference](https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create)
- [OpenAI Text generation guide](https://developers.openai.com/api/docs/guides/text)
{{CONTRACT}}