English
主导航

旧版 API

文本生成

了解如何向模型提供提示词以生成文本。

使用 OpenAI API,你可以利用 大型语言模型 通过提示生成文本,就像你使用 ChatGPT。模型可以生成几乎任何类型的文本响应——例如代码、数学公式、结构化的 JSON 数据或拟人的散文。

使用 Responses API 用于像此文本生成调用一样的直接模型请求。

从简单提示生成文本
1
2
3
4
5
6
7
8
9
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
    model: "gpt-5.5",
    input: "Write a one-sentence bedtime story about a unicorn."
});

console.log(response.output_text);

模型生成的内容数组位于响应的 output 属性中。在这个简单的示例中,我们只有一个输出,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
  {
    "id": "msg_67b73f697ba4819183a15cc17d011509",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "output_text",
        "text": "Under the soft glow of the moon, Luna the unicorn danced through fields of twinkling stardust, leaving trails of dreams for every child asleep.",
        "annotations": []
      }
    ]
  }
]

The output 数组通常会包含多个项目! 它可以包含工具调用、由其生成的推理 token 的相关数据 推理模型,以及其他项目。不能安全地假设模型的文本输出存在于 output[0].content[0].text.

我们的一些 官方 SDK 为了方便起见,在模型响应中包含了 output_text 属性,它将模型的所有文本输出聚合为一个字符串。这可作为获取模型文本输出的快捷方式,非常有用。

除了纯文本外,你还可以让模型以 JSON 格式返回结构化数据——此功能称为 结构化输出.

提示工程

提示工程 是为模型编写有效指令的过程,使其能够持续生成满足你要求的内容。

由于模型生成的内容是非确定性的,因此通过提示来获得所需输出是一门艺术与科学的结合。不过,你可以运用一些技巧和最佳实践来持续获得良好的结果。

某些提示工程技巧适用于所有模型,例如使用消息角色。但不同的模型可能需要使用不同的提示方式才能产生最佳结果。甚至同一系列模型的不同快照也可能产生不同的结果。因此,在构建更复杂的应用时,我们强烈建议:

  • 将生产环境中的应用程序固定到特定的 模型快照 (如 gpt-5-2025-08-07 例如)以确保行为一致
  • 构建 评估 以衡量提示词的行为表现,从而让您在迭代过程中,或在更改和升级模型版本时,能够监控提示词的性能

现在,让我们来看看一些可用于构建提示词的工具和技术。

选择模型和 API

OpenAI 有许多不同的 视觉 以及多种 API 可供选择。 推理模型,如 o3 和 GPT-5,与对话模型的行为表现不同,并且对不同提示词的响应效果也不同。一个重要提示是,推理模型在与 Responses API 结合使用时,性能更好且能展现出更高的智能。

如果你正在构建任何文本生成应用,我们建议使用 Responses API 而非较早的 Chat Completions API。如果你正在使用推理模型,那么 迁移至 Responses.

消息角色与指令遵循

你可以使用 不同级别的权限 使用 instructions API 参数以及 消息角色.

The instructions 参数为模型提供了关于其生成回复时应如何行为的高级指令,包括语气、目标和正确回复的示例。以这种方式提供的任何指令都将优先于 input parameter.

带有指令的文本生成
1
2
3
4
5
6
7
8
9
10
11
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
    model: "gpt-5",
    reasoning: { effort: "low" },
    instructions: "Talk like a pirate.",
    input: "Are semicolons optional in JavaScript?",
});

console.log(response.output_text);

上面的示例大致等同于在 input array:

使用不同角色生成文本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
    model: "gpt-5",
    reasoning: { effort: "low" },
    input: [
        {
            role: "developer",
            content: "Talk like a pirate."
        },
        {
            role: "user",
            content: "Are semicolons optional in JavaScript?",
        },
    ],
});

console.log(response.output_text);

请注意,由于诸多原因, instructions 参数仅适用于当前的响应生成请求。如果你在 管理对话状态 with the previous_response_id 参数, instructions 之前轮次中使用的将不会出现在上下文中。

The OpenAI 模型规范 描述了我们的模型如何为具有不同角色的消息分配不同的优先级。

开发者userassistant

developer 消息是由应用开发者提供的指令,优先级高于用户消息。

user 消息是由最终用户提供的指令,优先级低于开发者消息。

模型生成的消息具有 assistant role.

多轮对话可能包含多条这些类型的消息,以及由你和模型提供的其他内容类型。了解更多关于 在此管理对话状态.

你可以将 developer and user 消息想象成编程语言中的函数及其参数。

  • developer messages 提供了系统的规则和业务逻辑,类似于函数定义。
  • user messages 提供了输入和配置, developer message 的指令会应用于这些输入和配置,类似于函数的参数。

可复用提示词

在 OpenAI 控制台中,你可以开发可复用的 提示词配合使用 ,以便在 API 请求中使用,而无需在代码中指定提示词的内容。这样,你可以更轻松地构建和评估提示词,并在不更改集成代码的情况下部署改进后的提示词版本。

工作原理如下:

  1. 创建可复用提示词 in the 仪表板 with placeholders like {{customer_name}}.
  2. 使用提示词 通过 prompt 参数在你的 API 请求中。该提示词参数对象包含三个可配置的属性:
    • id — 提示词的唯一标识符,可在控制台中找到
    • version — 提示词的特定版本(默认为控制台中指定的“当前”版本)
    • variables — 用于替换提示词中变量的值的映射。替换值可以是字符串,也可以是其他 Response 输入消息类型,例如 input_image or input_file. 查看完整的 API 参考文档.
使用提示词模板生成文本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
    model: "gpt-5",
    prompt: {
        id: "pmpt_abc123",
        version: "2",
        variables: {
            customer_name: "Jane Doe",
            product: "40oz juice box"
        }
    }
});

console.log(response.output_text);

后续步骤

既然你已经了解了文本输入和输出的基础知识,接下来你可能想查看以下这些资源。

在 Playground 中构建提示词

使用 Playground 来开发和迭代提示词。

使用 Structured Outputs 生成 JSON 数据

确保模型输出的 JSON 数据符合 JSON schema。

完整 API 参考

请在 API 参考文档中查看文本生成的所有选项。