跳轉到主要內容
Realtime API 透過 WebSocket 連線提供相容 OpenAI 的低延遲文字與語音對話,並另外提供一個 HTTP 端點用於取得短期有效的客戶端權杖。

WebSocket 連線

當您的後端可以安全保存 DGrid API 金鑰時,可直接開啟一個 Realtime WebSocket 連線。
WSS wss://api.dgrid.ai/v1/realtime?model={model}
AuthorizationAuthorization: Bearer <DGRID_API_KEY>; OpenAI-Beta: realtime=v1
請求websocket
回應websocket events

查詢參數

參數類型是否必填說明
modelstringRealtime 模型 ID,例如 gpt-4o-realtime-preview

客戶端事件

事件類型說明
session.update更新會話層級的選項。
input_audio_buffer.append將音訊區塊串流至伺服器。
input_audio_buffer.commit提交目前緩衝的音訊。
response.create觸發新的助手回應。
conversation.item.create插入一個對話項目。

伺服器事件

事件類型說明
session.created會話已成功建立。
session.updated會話設定已更新。
response.text.delta串流的文字 token 差量。
response.audio.delta串流的音訊區塊差量。
response.done回應已完成。
error錯誤回應內容。
const ws = new WebSocket(
  'wss://api.dgrid.ai/v1/realtime?model=gpt-4o-realtime-preview',
  [],
  {
    headers: {
      Authorization: `Bearer ${apiKey}`,
      'OpenAI-Beta': 'realtime=v1'
    }
  }
)

ws.onopen = () => {
  ws.send(JSON.stringify({
    type: 'session.update',
    session: {
      modalities: ['text', 'audio'],
      voice: 'alloy'
    }
  }))
}

ws.onmessage = (event) => {
  const data = JSON.parse(event.data)
  console.log('received event:', data)
}

建立 Realtime 會話權杖

當您需要對 Realtime HTTP 入口發送已驗證的 GET 請求時,請使用以下 Realtime 端點範例。
GET /v1/realtime
AuthorizationAuthorization: Bearer <DGRID_API_KEY>
請求none
回應101 · application/json

請求標頭

欄位類型是否必填說明
Authorizationstring用於驗證 Realtime 請求的 Bearer 權杖。

回應內容

欄位類型說明
101text成功升級的回應,不含 JSON 內容。
errorobject請求失敗時回傳的錯誤內容。
curl -X GET "https://api.dgrid.ai/v1/realtime" \
  -H "Authorization: Bearer "
Empty

WebSocket 事件

請依據一組精簡的請求與回應事件類型來規劃您的客戶端,以實現低延遲的對話串流。
WSS wss://api.dgrid.ai/v1/realtime?model={model}
AuthorizationAuthorization: Bearer <DGRID_API_KEY>; OpenAI-Beta: realtime=v1
請求websocket
回應event stream

核心客戶端事件

事件類型說明
session.update更新模態(modalities)、語音或其他會話偏好設定。
input_audio_buffer.append傳送已編碼的音訊片段。
input_audio_buffer.commit將緩衝的音訊標記為就緒。
response.create要求伺服器開始產生回應。
conversation.item.create新增一個對話回合或工具結果。

核心伺服器事件

事件類型說明
session.created確認 WebSocket 會話已建立的初始事件。
session.updated確認會話設定已變更。
response.text.delta增量的文字輸出。
response.audio.delta增量的音訊輸出。
response.done已完成回應的最終事件。
error可恢復或致命的錯誤內容。

整合指南

  1. 將客戶端音訊以小區塊方式緩衝,並使用 input_audio_buffer.commit 來標示對話輪次的邊界。
  2. 若會話支援多模態輸出,請同時監聽 response.text.deltaresponse.audio.delta
  3. 對於瀏覽器客戶端,請使用 HTTP 會話權杖端點,以避免長期有效的 API 金鑰直接暴露於客戶端。
{
  "type": "response.text.delta",
  "response_id": "resp_123",
  "delta": "Hello"
}