Completions API
POST
/v1/completions
传统文本补全接口。接口根据 prompt 生成一个或多个文本候选,适用于兼容旧版 Completion 模型的场景。以下字段与 CompletionRequest 保持一致;网关不支持的模型或取值会返回 400。
该接口主要用于兼容旧版 Completion 模型。文中的 gpt-3.5-turbo-instruct 仅作为传统模型示例,实际可用模型以当前账号配置和上游渠道为准;新项目应优先评估 Chat Completions 或 Responses 接口。
请求参数
请求头
Authorization
使用 Bearer Token 认证。
格式:Authorization: Bearer sk-xxxxxx
请求体
请求参数(10 个)
| 参数 | 类型 | 默认值 | 说明 | 是否必填 |
|---|---|---|---|---|
model | string | — | 要调用的模型 ID,例如 gpt-3.5-turbo-instruct。 | 是 |
prompt | string / array | — | 用于补全的提示词。可以传入单个字符串或字符串数组;数组中的每个元素会独立生成结果。 | 是 |
max_tokens | integer | 未声明 | 限制每个提示词生成的最大 token 数。总上下文长度不能超过模型上限。 | 否 |
temperature | number | 未声明 | 控制采样随机性,具体范围由模型决定。 | 否 |
top_p | number | 未声明 | 核采样范围,具体范围由模型决定。一般只调整 temperature 或 top_p 其中一个。 | 否 |
n | integer | 未声明 | 为每个提示词生成的候选数量。 | 否 |
stream | boolean | 未声明 | 设置为 true 时以 Server-Sent Events(SSE)增量返回结果;设置为 false 时返回完整 JSON。 | 否 |
stop | string / array | 未声明 | 命中停止序列后结束生成,可传入一个字符串或字符串数组。 | 否 |
suffix | string | 未声明 | 插入补全文本时使用的后缀,仅适用于支持 infill 的模型。 | 否 |
echo | boolean | 未声明 | 是否在每个结果的 text 前回显输入的提示词。 | 否 |
参数约束
model和prompt必须同时提供;prompt为空数组会返回400。temperature与top_p均用于采样控制,通常只调整其中一个。stream=true时,响应为 SSE 增量事件;stream=false(默认)时返回完整响应。n应为正整数;max_tokens不能为负数。实际上限由模型和网关配置决定。
请求体示例
查看 JSON 请求体示例
{
"model": "gpt-3.5-turbo-instruct",
"prompt": "Write a short greeting:",
"max_tokens": 64,
"temperature": 0.7,
"top_p": 1,
"n": 1,
"stop": ["\n\n"],
"stream": false,
"suffix": "",
"echo": false
}
请求示例代码
curl -X POST "https://10000router.com/v1/completions" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "gpt-3.5-turbo-instruct",
"prompt": "Write a short greeting:",
"max_tokens": 64,
"temperature": 0.7,
"stream": false
}'
const response = await fetch("https://10000router.com/v1/completions", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.API_KEY,
},
body: JSON.stringify({
model: "gpt-3.5-turbo-instruct",
prompt: "Write a short greeting:",
max_tokens: 64,
temperature: 0.7,
stream: false
})
});
console.log(await response.json());
package main
import (
"log"
"net/http"
"os"
"strings"
)
func main() {
payload := `{"model":"gpt-3.5-turbo-instruct","prompt":"Write a short greeting:","max_tokens":64,"temperature":0.7,"stream":false}`
req, err := http.NewRequest("POST", "https://10000router.com/v1/completions", strings.NewReader(payload))
if err != nil { log.Fatal(err) }
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()
}
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")
response = client.post(
"https://10000router.com/v1/completions",
headers={
"Authorization": "Bearer " + os.environ["API_KEY"],
},
json={
"model": "gpt-3.5-turbo-instruct",
"prompt": "Write a short greeting:",
"max_tokens": 64,
"temperature": 0.7,
"stream": False,
},
)
print(response)
var client = java.net.http.HttpClient.newHttpClient();
var body = "{\"model\":\"gpt-3.5-turbo-instruct\",\"prompt\":\"Write a short greeting:\",\"max_tokens\":64,\"temperature\":0.7,\"stream\":false}";
var request = java.net.http.HttpRequest.newBuilder()
.uri(java.net.URI.create("https://10000router.com/v1/completions"))
.header("Authorization", "Bearer " + System.getenv("API_KEY"))
.POST(java.net.http.HttpRequest.BodyPublishers.ofString(body))
.build();
var response = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using System.Net.Http.Json;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("API_KEY"));
var response = await client.PostAsJsonAsync(
"https://10000router.com/v1/completions",
new {
model = "gpt-3.5-turbo-instruct",
prompt = "Write a short greeting:",
max_tokens = 64,
temperature = 0.7,
stream = false
});
Console.WriteLine(await response.Content.ReadAsStringAsync());
返回响应
响应示例
{
"id": "cmpl-abc123",
"object": "text_completion",
"created": 1710000000,
"model": "gpt-3.5-turbo-instruct",
"choices": [
{
"text": "Hello! How can I help you today?",
"index": 0,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 6,
"completion_tokens": 8,
"total_tokens": 14
}
}
{
"error": {
"message": "Missing required parameter: prompt",
"type": "invalid_request_error",
"param": "prompt",
"code": null
}
}
{
"error": {
"message": "Rate limit reached for completions",
"type": "rate_limit_exceeded",
"param": null,
"code": null
}
}
{
"error": {
"message": "Invalid authentication credentials",
"type": "invalid_request_error",
"param": null,
"code": null
}
}
返回字段参数
响应字段按对象层级拆分为可折叠区块,默认展开;可收起暂时不关注的对象,减少长响应的视觉干扰。
顶层字段(6 个)
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 本次文本补全请求的唯一标识。 |
object | string | 对象类型,非流式响应通常为 text_completion。 |
created | integer | 响应创建时间,Unix 时间戳(秒)。 |
model | string | 实际生成响应的模型 ID。 |
choices | array<object> | 模型生成的候选结果;数量由请求参数 n 和提示词数组长度共同决定。 |
usage | object | 输入、输出及总 token 用量。部分网关可能省略此字段。 |
choices[] 字段(3 个)
| 字段 | 类型 | 说明 |
|---|---|---|
text | string | 模型生成的补全文本;当 echo=true 时包含输入提示词。 |
index | integer | 候选结果在 choices 数组中的索引。 |
finish_reason | string / null | 生成结束原因,例如 stop、length 或 content_filter;生成尚未结束时可能为 null。 |
usage 字段(5 个)
| 字段 | 类型 | 说明 |
|---|---|---|
prompt_tokens | integer | 输入提示词使用的 token 数。 |
completion_tokens | integer | 生成补全文本使用的 token 数。 |
total_tokens | integer | prompt_tokens 与 completion_tokens 的总和。 |
prompt_tokens_details | object | 输入 token 的细分统计;部分网关可能不返回。 |
completion_tokens_details | object | 输出 token 的细分统计;部分网关可能不返回。 |
prompt_tokens_details 字段(4 个)
| 字段 | 类型 | 说明 |
|---|---|---|
cached_tokens | integer | 命中提示词缓存的 token 数。 |
text_tokens | integer | 文本输入 token 数。 |
audio_tokens | integer | 音频输入 token 数(支持音频的模型)。 |
image_tokens | integer | 图像输入 token 数(支持图像的模型)。 |
completion_tokens_details 字段(3 个)
| 字段 | 类型 | 说明 |
|---|---|---|
text_tokens | integer | 文本输出 token 数。 |
audio_tokens | integer | 音频输出 token 数(支持音频的模型)。 |
reasoning_tokens | integer | 推理过程使用的 token 数(支持推理的模型)。 |
流式响应
当请求设置 stream=true 时,响应的 Content-Type 为 text/event-stream,每个事件包含一个增量补全对象。客户端应按顺序拼接 choices[].text,并在收到 data: [DONE] 后结束读取:
data: {"id":"cmpl-abc123","object":"text_completion","created":1710000000,"model":"gpt-3.5-turbo-instruct","choices":[{"text":"Hello","index":0,"finish_reason":null}]}
data: {"id":"cmpl-abc123","object":"text_completion","created":1710000000,"model":"gpt-3.5-turbo-instruct","choices":[{"text":"! How can I help?","index":0,"finish_reason":"stop"}]}
data: [DONE]
流式响应中的每个 choices 元素只包含当前增量文本;usage 通常在非流式响应中返回。客户端应处理网络中断并在完成读取后释放连接。