对话补全
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 |
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 }'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 提示放进
messages的role: 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)响应结构(OpenAI 协议)
Section titled “响应结构(OpenAI 协议)”{ "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 提示、长文档)可启用 提示词缓存,显著降低重复部分的费用。