跳转到内容

对话补全

import { Tabs, TabItem } from ‘@astrojs/starlight/components’;

对话补全是核心接口。提供 OpenAI 与 Anthropic 两套兼容实现,共用同一密钥。

协议方法与路径
OpenAI 兼容POST https://api.example.com/v1/chat/completions
Anthropic 兼容POST https://api.example.com/anthropic/v1/messages
Terminal window
curl https://api.example.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "你是一个简洁的助手。"},
{"role": "user", "content": "你好"}
],
"temperature": 0.7
}'
Terminal window
curl https://api.example.com/anthropic/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"system": "你是一个简洁的助手。",
"messages": [{"role": "user", "content": "你好"}]
}'
参数说明
model模型 ID。可用列表见 模型与定价接口
messages多轮对话消息数组,按时间顺序排列。
temperature采样温度,0~2,越高越发散。
top_p核采样,与 temperature 二选一调节即可。
max_tokens最大生成 token 数。Anthropic 协议下为必填
stream是否流式返回,true 时以 SSE 推送。
stop停止序列。

协议差异:OpenAI 协议把 system 提示放进 messagesrole: system;Anthropic 协议用顶层 system 字段,且 max_tokens 必填。

把历史消息按顺序全部放进 messages 即可,服务端不保存上下文,每次请求需自带完整历史。

{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "我叫小明"},
{"role": "assistant", "content": "你好,小明!"},
{"role": "user", "content": "我叫什么?"}
]
}

stream: true,响应以 SSE 分块推送,最后以 data: [DONE] 结束(OpenAI 协议)。

from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.example.com/v1")
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "写一首四行小诗"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "..."},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 23,
"completion_tokens": 58,
"total_tokens": 81
}
}

usage 中的 token 数即本次计费依据,详见 计费与充值

重复的长前缀(如固定 system 提示、长文档)可启用 提示词缓存,显著降低重复部分的费用。