For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主要導覽

串流傳輸 API 回應

瞭解如何透過伺服器傳送事件,以串流方式接收 OpenAI API 的模型回應。

預設情況下,當你向 OpenAI API 發出請求時,我們會先產生模型的完整輸出,再透過單一 HTTP 回應傳回。輸出較長時,等待回應可能需要一些時間。使用串流回應,你就能在模型繼續產生完整回應的同時,開始顯示或處理已產生的開頭部分。

本指南著重介紹透過伺服器傳送事件(SSE)進行的 HTTP 串流傳輸(stream=true)。若要使用持續連線的 WebSocket 傳輸,並透過 previous_response_id 逐步提供輸入,請參閱 Responses API 的 WebSocket 模式

啟用串流

若要開始串流傳輸回應,請在傳送至 Responses 端點的請求中設定 stream=True

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": "Say 'double bubble bath' ten times fast.",
        },
    ],
    stream=True,
)

for event in stream:
    print(event)

Responses API 使用語意事件進行串流傳輸。每個事件都有預先定義的結構描述與型別,因此你可以監聽所需的事件。

如需事件類型的完整清單,請參閱串流 API 參考文件。以下是幾個範例:

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  } else if (event.type === "response.completed") {
    console.log("\nResponse completed.");
  } else if (event.type === "error") {
    console.error(event.message);
  }
}

讀取回應

如果你使用我們的 SDK,每個事件都是具有型別的執行個體。你也可以使用事件的 type 屬性來識別個別事件。

部分關鍵生命週期事件只會發出一次,其他事件則會在產生回應的過程中多次發出。串流傳輸文字時,常見的監聽事件包括:

- `response.created`
- `response.output_text.delta`
- `response.completed`
- `error`

如需可監聽事件的完整清單,請參閱串流 API 參考文件

進階使用案例

如需瞭解串流傳輸工具呼叫等更進階的使用案例,請參閱以下專門指南:

內容審核風險

請注意,在正式環境的應用程式中串流傳輸模型輸出,會增加補全內容的審核難度,因為不完整的補全內容可能較難評估。這可能會影響已核准的使用方式。

如果你在生成請求中一併要求內容審核分數,分數會在完整輸出產生後才傳回,不會隨部分輸出的增量內容一併傳送。