串流

串流會逐步傳回生成的輸出,不必等待完整回應。當所選模型與管道支援時,GetRouter 的 Chat Completions 與 Responses 端點可使用串流請求欄位。

使用 cURL 串流 Chat Completions

stream 設為 true,並使用 curl -N 停用用戶端緩衝:

curl -N https://getrouter.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MODEL_ID",
    "stream": true,
    "messages": [
      {"role": "user", "content": "寫一首四行詩。"}
    ]
  }'

Chat Completions 會串流傳送 Server-Sent Events。文字區塊位於:

choices[0].delta.content

串流通常會以 [DONE] 等終止事件結束。

使用 Python 串流 Chat Completions

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://getrouter.ai/v1",
)

stream = client.chat.completions.create(
    model="MODEL_ID",
    stream=True,
    messages=[{"role": "user", "content": "寫一首四行詩。"}],
)

for chunk in stream:
    text = chunk.choices[0].delta.content
    if text:
        print(text, end="", flush=True)

Responses API 串流

curl -N https://getrouter.ai/v1/responses \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MODEL_ID",
    "stream": true,
    "input": "列出串流 API 的三項優點。"
  }'

Responses 串流使用 Responses API 事件物件,而非 Chat Completions 的 choices[].delta 區塊。請依事件的 type 解析,不要沿用僅適用於 Chat Completions 的解析器。

stream_options

Chat Completions 結構描述接受 stream_options,但支援情況取決於所選模型路由。如果上游相容選項遭拒,請移除該選項,並只使用 stream: true 重試。

串流期間的工具呼叫

工具呼叫引數可能分散在多個區塊中抵達。請依索引或工具呼叫 ID 累積工具呼叫增量,等引數完整後再剖析及執行。

處理連線中斷

串流連線可能因用戶端逾時、Proxy 逾時、網路中斷或上游錯誤,在終止事件出現前結束。

用戶端應:

  • 將缺少終止事件的情況視為未完成的回應
  • 視需要保留已接收的文字
  • 避免盲目重試非冪等的工具操作
  • 針對所選模型設定足夠長的逾時
  • 記錄請求 ID 與錯誤,但不要記錄 API 金鑰
Warning

除非應用程式能避免重複的副作用,否則請勿自動重新執行只完成一部分的代理程式或工具工作流程。

疑難排解

輸出一次全部抵達

用戶端、反向 Proxy 或中介軟體可能正在緩衝 SSE 資料。開始偵錯 UI 前,請先使用 curl -N 直接測試。

連線立即關閉

確認模型在所選端點上支援串流。另請檢查錯誤事件或 HTTP 回應主體,再判定是否為網路失敗。

區塊中缺少用量資訊

串流期間的用量回報取決於協定、請求選項與模型路由。請勿要求每個區塊都必須包含用量資訊。

後續步驟