OpenAI Completions API
gpt-3.5-turbo-instruct、babbage-002及davinci-002已于2026年9月28日停止服务。babbage-002和davinci-002的微调版本已于2026年10月23日停止服务。以下示例仅供了解旧版/v1/completions请求格式;使用当前模型应迁移到Responses API或Chat Completions。
Completions端点于2023年7月完成最后一次更新,接口与较新的Chat Completions不同。其输入不是消息列表,而是称为prompt的自由格式文本字符串。
旧版调用示例:
来源示例 1(javascript):
代码内提示词/文本译释:
Write a tagline for an ice cream shop.:为一家冰淇淋店写一句宣传语。
// [中文] 历史Completions示例:向已停止服务的gpt-3.5-turbo-instruct发送prompt;用于说明旧请求结构,不能作为当前可运行模型示例。
const completion = await openai.completions.create({
model: "gpt-3.5-turbo-instruct",
prompt: "Write a tagline for an ice cream shop.",
});
来源示例 2(python):
代码内提示词/文本译释:
Write a tagline for an ice cream shop.:为一家冰淇淋店写一句宣传语。
## [中文] 历史Completions示例:向已停止服务的gpt-3.5-turbo-instruct发送prompt;用于说明旧请求结构,不能作为当前可运行模型示例。
from openai import OpenAI
client = OpenAI()
response = client.completions.create(
model="gpt-3.5-turbo-instruct", prompt="Write a tagline for an ice cream shop."
)
来源示例 3(go):
代码内提示词/文本译释:
Write a tagline for an ice cream shop.:为一家冰淇淋店写一句宣传语。
// [中文] 历史Completions示例:向已停止服务的gpt-3.5-turbo-instruct发送prompt;用于说明旧请求结构,不能作为当前可运行模型示例。
package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
)
func main() {
client := openai.NewClient()
response, err := client.Completions.New(context.Background(), openai.CompletionNewParams{
Model: "gpt-3.5-turbo-instruct",
Prompt: openai.CompletionNewParamsPromptUnion{OfString: openai.String("Write a tagline for an ice cream shop.")},
})
if err != nil {
panic(err)
}
fmt.Println(response.Choices[0].Text)
}
来源示例 4(java):
代码内提示词/文本译释:
Write a tagline for an ice cream shop.:为一家冰淇淋店写一句宣传语。
// [中文] 历史Completions示例:向已停止服务的gpt-3.5-turbo-instruct发送prompt;用于说明旧请求结构,不能作为当前可运行模型示例。
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.completions.CompletionCreateParams;
var completion =
client
.completions()
.create(
CompletionCreateParams.builder()
.model("gpt-3.5-turbo-instruct")
.prompt("Write a tagline for an ice cream shop.")
.build());
completion.choices().forEach(choice -> System.out.println(choice.text()));
来源示例 5(ruby):
代码内提示词译释:
Write a tagline for a bakery.:为一家烘焙店写一句宣传语。
## [中文] 历史Completions示例:向已停止服务的gpt-3.5-turbo-instruct发送prompt;用于说明旧请求结构,不能作为当前可运行模型示例。
require "openai"
client = OpenAI::Client.new
completion = client.completions.create(model: "gpt-3.5-turbo-instruct", prompt: "Write a tagline for a bakery.", max_tokens: 24)
puts(completion.choices.fetch(0).text)
更多内容见完整API参考。
插入文本
除了作为前缀的常规prompt,Completions还支持提供suffix(后缀)来插入文本。这适用于长文写作、段落衔接、按提纲写作,或引导结尾;也可用于在函数或代码文件中间插入内容。
例如,“今天我决定做一个重大改变。”可以有很多后续写法。如果补充故事结尾“我的新发型获得了很多称赞!”,预期补全方向就更清楚。原文随后另给出以下前后缀示例:
我在波士顿大学读书。取得学位后,我决定作出改变。一个重大改变!
我收拾行李,搬到了美国西海岸。
现在,我对太平洋百看不厌!
提供额外上下文能更好地引导生成,但也使任务约束更强、更有难度。原文给出以下建议:
设置max_tokens > 256。模型更擅长插入较长补全。上限太小,可能尚未连接到后缀就被截断。即便设置较大的上限,也只按实际生成的词元数收费。
优先选择finish_reason == "stop"。模型在自然停止点或用户指定的停止序列处结束时,将原因设为stop。这通常说明补全与后缀衔接良好,也是质量信号;在n > 1或重采样后挑选结果时尤其有用。
重采样3—5次。补全通常能接上前缀,但困难情形下未必能顺利连接后缀。可以重采样3次或5次,或使用best_of且令k=3,5,选择以stop结束的结果。重采样时通常提高温度以增加多样性。
如果所有结果的finish_reason均为length,很可能是max_tokens太小,模型尚未自然连接前后缀就耗尽预算;应先增大上限,再重采样。
提供更多线索。可以给出几个模式示例,帮助模型找到自然停止位置:
如何制作美味热巧克力:
1. 烧开水。
2. 把热巧克力放进杯子。
3. 往杯子加入开水。
4. 享用热巧克力。
- 狗是忠诚的动物。
2. 狮子是凶猛的动物。
3. 海豚是活泼好动的动物。
4. 马是雄壮的动物。
Completions响应格式
响应示例:
来源示例 6():
中文译释:这是旧Completions响应JSON,choices[0].text为生成文本,finish_reason为length表示因长度限制结束;生成文案意为“在我们的奶油冰淇淋小屋,尽情释放你对甜食的渴望”。
{
"choices": [
{
"finish_reason": "length",
"index": 0,
"logprobs": null,
"text": "\n\n\"Let Your Sweet Tooth Run Wild at Our Creamy Ice Cream Shack"
}
],
"created": 1683130927,
"id": "cmpl-7C9Wxi9Du4j1lQjdjhxBlO22M61LD",
"model": "gpt-3.5-turbo-instruct",
"object": "text_completion",
"usage": {
"completion_tokens": 16,
"prompt_tokens": 10,
"total_tokens": 26
}
}
Python中可用response['choices'][0]['text']提取输出。
响应格式与Chat Completions的格式相近。
插入文本
除了作为前缀的常规prompt,Completions还支持提供suffix(后缀)来插入文本。这适用于长文写作、段落衔接、按提纲写作,或引导结尾;也可用于在函数或代码文件中间插入内容。
例如,“今天我决定做一个重大改变。”可以有很多后续写法。如果补充故事结尾“我的新发型获得了很多称赞!”,预期补全方向就更清楚。原文随后另给出以下前后缀示例:
我在波士顿大学读书。取得学位后,我决定作出改变。一个重大改变!
我收拾行李,搬到了美国西海岸。
现在,我对太平洋百看不厌!
提供额外上下文能更好地引导生成,但也使任务约束更强、更有难度。原文给出以下建议:
设置max_tokens > 256。模型更擅长插入较长补全。上限太小,可能尚未连接到后缀就被截断。即便设置较大的上限,也只按实际生成的词元数收费。
优先选择finish_reason == "stop"。模型在自然停止点或用户指定的停止序列处结束时,将原因设为stop。这通常说明补全与后缀衔接良好,也是质量信号;在n > 1或重采样后挑选结果时尤其有用。
重采样3—5次。补全通常能接上前缀,但困难情形下未必能顺利连接后缀。可以重采样3次或5次,或使用best_of且令k=3,5,选择以stop结束的结果。重采样时通常提高温度以增加多样性。
如果所有结果的finish_reason均为length,很可能是max_tokens太小,模型尚未自然连接前后缀就耗尽预算;应先增大上限,再重采样。
提供更多线索。可以给出几个模式示例,帮助模型找到自然停止位置:
如何制作美味热巧克力:
1. 烧开水。
2. 把热巧克力放进杯子。
3. 往杯子加入开水。
4. 享用热巧克力。
- 狗是忠诚的动物。
2. 狮子是凶猛的动物。
3. 海豚是活泼好动的动物。
4. 马是雄壮的动物。
Chat Completions与Completions比较
通过构建只含单个用户消息的请求,可以使Chat Completions格式接近Completions。例如,以下Completions提示词将英文译成法文:
来源示例 7():
中文译释:提示词完整译文:
将以下英文文本翻译成法文:“{text}”
{text}为待替换文本占位符。
Translate the following English text to French: "{text}"
等价的聊天提示词如下:
来源示例 8():
中文译释:这是单个user消息的结构示意,content意为“将以下英文文本翻译成法文:{text}”。原文混用单双引号,并非严格JSON;不将其当成JSON解析通过。
[{"role": "user", "content": 'Translate the following English text to French: "{text}"'}]
同理,按照相应方式组织输入,也能用旧Completions模拟用户与助手对话。
两个API的区别还在于各自可用的底层模型。Chat Completions支持gpt-6-astra等当前GPT模型,以及成本较低的gpt-5.6-terra等选项。

TRAE-AI编程


更多建议: