跳转到内容

聊天补全

主要的推理端点,属于 Public Free Model APIs,遵循 OpenAI 的聊天补全 schema。独占端点用你自己的 vLLM 或 SGLang 提供同一条路径,下面说的请求过滤在那边一条都不适用。

POST /v1/chat/completions Bearer 密钥或会话

也可以通过 /api/v1/chat/completions 访问——两个路径是同一个端点。

参数类型说明
modelstring必填要跑的模型。必须是 GET /v1/models 返回的某一个。
messagesarray必填到目前为止的对话。每一项有一个 rolesystemuserassistanttool)和 contentsystem 消息能放在哪因模型而异,见下文。
streamboolean选填以 server-sent events 流式返回。默认 false
temperaturenumber选填采样温度。越高越随机。
top_pnumber选填核采样阈值。
max_tokensinteger选填回复生成的 token 上限。
presence_penaltynumber选填惩罚已出现过的 token。
frequency_penaltynumber选填按出现频次惩罚 token。
response_formatobject选填{"type": "json_object"} 或一个 json_schema,适用于 json_output 为 true 的模型。
toolsarray选填工具定义,前提是模型支持工具调用。
tool_choicestring 或 object选填模型可以或必须调用哪个工具。
reasoning_effortstring选填控制思考长度。取值因模型而异,见下文对照表;lowmedium 所有模型都收。不传时是否思考也因模型而异。
reasoning.effortstring选填同上,统一写法。不能和 reasoning_effort 同时用。
Terminal window
curl https://developer.amd.com.cn/radeon/api/v1/chat/completions \
-H "Authorization: Bearer $RADEON_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "What is ROCm?"}
],
"temperature": 0.7,
"max_tokens": 256
}'
{
"id": "chatcmpl-8f3b21d0",
"object": "chat.completion",
"created": 1756108800,
"model": "DeepSeek-V4-Flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "ROCm is AMD's open software platform for GPU computing..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 118,
"total_tokens": 142
}
}

模型自己说完了,finish_reasonstop;撞到 max_tokenslength;想调用工具是 tool_calls

推理模型会在 usage 里多一个 reasoning_tokens;命中前缀缓存时还会多出 usage.prompt_tokens_details.cached_tokens

stream: true 就能收到 server-sent events。每个事件带的是增量而不是整条消息,流以 data: [DONE] 结束。

from openai import OpenAI
client = OpenAI(
base_url="https://developer.amd.com.cn/radeon/api/v1",
api_key="rc-...",
)
stream = client.chat.completions.create(
model="DeepSeek-V4-Flash",
messages=[{"role": "user", "content": "Explain ROCm in two sentences."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)

平台不会缓冲流式响应,模型产出 token 的同时就送到你手上。

一个非流式请求最多跑 10 分钟,之后平台放弃。流式的话,这 10 分钟算的是两个分片之间的间隔,而不是整次生成的总时长。长生成应该用流式,既能看到进度,也能让连接保持活跃。

401 密钥无效。429 触发限流——见限流502503 后端不可达或已饱和,退避后重试。

目录里没有的模型名由网关直接拒掉,返回 400Requested model <名字> not supported,请求根本到不了后端。模型自己报的错,比如上下文超长,会带着后端自己的状态码和消息透传出来。响应体形状见错误