共用方式為


即時 API (預覽) 參考

注意

此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

即時 API 是以 WebSocket 為基礎的 API,可讓您即時與 Azure OpenAI 服務互動。

即時 API (透過 /realtime) 建置在 WebSockets API,以利使用者與模型之間的完全異步串流通訊。 擷取和轉譯音訊數據等裝置詳細數據不在即時 API 的範圍內。 它應該用於信任的中繼服務內容中,以管理與使用者和模型端點連線的連線。 請勿直接從不受信任的終端使用者裝置使用它。

提示

若要開始使用即時 API,請參閱 快速入門操作指南

連線

即時 API 需要支援區域中現有的 Azure OpenAI 資源端點。 API 是透過與 Azure OpenAI 資源端點的安全 WebSocket 連線 /realtime 來存取。

您可以串連來建構完整的要求 URI:

  • 安全的 WebSocket (wss://) 通訊協定
  • 例如,您的 Azure OpenAI 資源端點主機名 my-aoai-resource.openai.azure.com
  • openai/realtime API 路徑
  • api-version支援的 API 版本的查詢字串參數,例如2024-10-01-preview
  • 具有 deployment 模型部署名稱的 gpt-4o-realtime-preview 查詢字串參數

下列範例是建構良好的 /realtime 要求 URI:

wss://my-eastus2-openai-resource.openai.azure.com/openai/realtime?api-version=2024-10-01-preview&deployment=gpt-4o-realtime-preview-1001

驗證

若要驗證:

  • Microsoft Entra (建議):使用令牌型驗證搭配 /realtime 已啟用受控識別的 Azure OpenAI 服務資源的 API。 使用具有標頭的令牌來套用 Bearer 擷取的 Authorization 驗證令牌。
  • API 金鑰api-key 可以使用下列兩種方式之一來提供 :
    • api-key在 prehandshake 連線上使用連接標頭。 此選項無法在瀏覽器環境中使用。
    • api-key在要求 URI 上使用查詢字串參數。 使用 HTTPs/wss 時,查詢字串參數會加密。

用戶端事件

有九個用戶端事件可以從用戶端傳送到伺服器:

活動 描述
RealtimeClientEventConversationItemCreate 將專案新增至交談時,傳送此用戶端事件。
RealtimeClientEventConversationItemDelete 當您想要從交談歷程記錄中移除任何專案時,傳送此用戶端事件。
RealtimeClientEventConversationItemTruncate 當您想要截斷先前小幫手訊息的音訊時,傳送此用戶端事件。
RealtimeClientEventInputAudioBufferAppend 傳送此用戶端事件以將音訊位元組附加至輸入音訊緩衝區。
RealtimeClientEventInputAudioBufferClear 傳送此用戶端事件以清除緩衝區中的音訊位元組。
RealtimeClientEventInputAudioBufferCommit 傳送此用戶端事件,將音訊位元組認可給使用者訊息。
RealtimeClientEventResponseCancel 傳送此用戶端事件以取消進行中的回應。
RealtimeClientEventResponseCreate 傳送此用戶端事件以觸發響應產生。
RealtimeClientEventSessionUpdate 傳送此用戶端事件以更新會話的預設組態。

RealtimeClientEventConversationItemCreate

用戶端 conversation.item.create 事件可用來將新專案新增至交談的內容,包括訊息、函數調用和函數調用回應。 此事件可用來填入交談的歷程記錄,以及在數據流中新增新專案。 目前此事件無法填入助理音訊訊息。

如果成功,伺服器會以 conversation.item.created 事件回應,否則 error 會傳送事件。

事件結構

{
  "type": "conversation.item.create",
  "previous_item_id": "<previous_item_id>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.create
previous_item_id 字串 插入新項目之後的上一個項目標識碼。 如果未設定,新專案會附加至交談結尾。 如果設定,則允許在交談中插入專案。 如果找不到標識符,則會傳回錯誤,而且不會新增專案。
項目 RealtimeConversationRequestItem 要加入至交談的專案。

RealtimeClientEventConversationItemDelete

用戶端 conversation.item.delete 事件是用來從交談記錄中移除專案。

除非交談記錄中沒有專案,否則伺服器會以 conversation.item.deleted 事件回應,在此情況下,伺服器會以錯誤回應。

事件結構

{
  "type": "conversation.item.delete",
  "item_id": "<item_id>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.delete
item_id 字串 要刪除之項目的識別碼。

RealtimeClientEventConversationItemTruncate

用戶端 conversation.item.truncate 事件是用來截斷先前小幫手訊息的音訊。 伺服器產生的音訊速度比即時快,因此當用戶中斷以截斷傳送至用戶端但尚未播放的音訊時,這個事件很有用。 伺服器對用戶端播放音訊的瞭解已同步處理。

截斷音訊會刪除伺服器端文字記錄,以確保使用者不知道的內容中沒有文字。

如果用戶端事件成功,伺服器會以 conversation.item.truncated 事件回應。

事件結構

{
  "type": "conversation.item.truncate",
  "item_id": "<item_id>",
  "content_index": 0,
  "audio_end_ms": 0
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.truncate
item_id 字串 要截斷之小幫手訊息項目的標識碼。 只能截斷小幫手訊息專案。
content_index 整數 要截斷的內容元件索引。 將此屬性設定為 “0”。
audio_end_ms 整數 最多截斷音訊的內含持續時間,以毫秒為單位。 如果audio_end_ms大於實際的音訊持續時間,伺服器就會回應錯誤。

RealtimeClientEventInputAudioBufferAppend

用戶端 input_audio_buffer.append 事件是用來將音訊位元組附加至輸入音訊緩衝區。 音訊緩衝區是您可以寫入和稍後認可的暫存記憶體。

在伺服器 VAD (語音活動偵測) 模式中,音訊緩衝區會用來偵測語音,而伺服器會決定何時認可。 停用伺服器 VAD 時,用戶端可以選擇每個事件中最多 15 MiB 的音訊數量。 例如,從用戶端串流較小的區塊可讓 VAD 更有回應性。

不同於其他用戶端事件,伺服器不會傳送確認回應給用戶端 input_audio_buffer.append 事件。

事件結構

{
  "type": "input_audio_buffer.append",
  "audio": "<audio>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 input_audio_buffer.append
audio 字串 Base64 編碼的音訊位元組。 此值必須是會話組態中 欄位所 input_audio_format 指定的格式。

RealtimeClientEventInputAudioBufferClear

用戶端 input_audio_buffer.clear 事件是用來清除緩衝區中的音訊位元組。

伺服器會以 input_audio_buffer.cleared 事件回應。

事件結構

{
  "type": "input_audio_buffer.clear"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 input_audio_buffer.clear

RealtimeClientEventInputAudioBufferCommit

用戶端 input_audio_buffer.commit 事件是用來認可使用者輸入音訊緩衝區,這會在交談中建立新的使用者訊息專案。 如果 input_audio_transcription 已針對會話設定音訊,則會轉譯音訊。

在伺服器 VAD 模式中,用戶端不需要傳送此事件時,伺服器會自動認可音訊緩衝區。 若沒有伺服器 VAD,用戶端必須認可音訊緩衝區,才能建立使用者訊息專案。 如果輸入音訊緩衝區是空的,此用戶端事件會產生錯誤。

認可輸入音頻緩衝區不會從模型建立回應。

伺服器會以 input_audio_buffer.committed 事件回應。

事件結構

{
  "type": "input_audio_buffer.commit"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 input_audio_buffer.commit

RealtimeClientEventResponseCancel

用戶端 response.cancel 事件是用來取消進行中的回應。

如果沒有任何取消回應,伺服器會以 response.cancelled 事件回應或錯誤。

事件結構

{
  "type": "response.cancel"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.cancel

RealtimeClientEventResponseCreate

用戶端 response.create 事件可用來指示伺服器透過模型推斷建立回應。 在伺服器 VAD 模式中設定工作階段時,伺服器會自動建立回應。

回應至少包含一個 item,而且可以有兩個,在此情況下,第二個是函數調用。 這些專案會附加至交談歷程記錄。

伺服器會回應 response.created 事件、一或多個專案和內容事件(例如 conversation.item.createdresponse.content_part.added),最後一個 response.done 事件表示回應已完成。

注意

用戶端 response.create 事件包含推斷組態,例如 instructions、 和 temperature。 這些欄位只能覆寫此回應的會話設定。

事件結構

{
  "type": "response.create"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.create
回覆 RealtimeResponseOptions 回應選項。

RealtimeClientEventSessionUpdate

用戶端 session.update 事件是用來更新會話的預設組態。 用戶端可以隨時傳送此事件來更新會話設定,而且任何字段隨時都可以更新,但語音除外。

只有存在的欄位才會更新。 若要清除欄位 (例如 instructions),請傳遞空字串。

伺服器會以 session.updated 包含完整有效組態的事件回應。

事件結構

{
  "type": "session.update"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 session.update
session RealtimeRequestSession 會話組態。

伺服器事件

有 28 個伺服器事件可從伺服器接收:

活動 描述
RealtimeServerEventConversationCreated 建立交談時的伺服器事件。 會話建立後立即發出。
RealtimeServerEventConversationItemCreated 建立交談專案時的伺服器事件。
RealtimeServerEventConversationItemDeleted 刪除交談中的專案時的伺服器事件。
RealtimeServerEventConversationItemInputAudioTranscriptionCompleted 啟用輸入音訊轉譯且轉譯成功時的伺服器事件。
RealtimeServerEventConversationItemInputAudioTranscriptionFailed 設定輸入音訊轉譯時的伺服器事件,以及使用者訊息的轉譯要求失敗。
RealtimeServerEventConversationItemTruncated 用戶端截斷先前助理音訊消息專案時的伺服器事件。
RealtimeServerEventError 發生錯誤時的伺服器事件。
RealtimeServerEventInputAudioBufferCleared 用戶端清除輸入音訊緩衝區時的伺服器事件。
RealtimeServerEventInputAudioBufferCommitted 用戶端認可輸入音訊緩衝區時的伺服器事件,或是在伺服器 VAD 模式中自動認可。
RealtimeServerEventInputAudioBufferSpeechStarted 偵測到語音時,伺服器回合偵測模式中的伺服器事件。
RealtimeServerEventInputAudioBufferSpeechStopped 語音停止時,伺服器回合偵測模式中的伺服器事件。
RealtimeServerEventRateLimitsUpdated 在每個「回應.done」事件之後發出,以指出更新的速率限制。
RealtimeServerEventResponseAudioDelta 更新模型產生的音訊時的伺服器事件。
RealtimeServerEventResponseAudioDone 模型產生的音訊完成時的伺服器事件。 當回應中斷、不完整或取消時也會發出。
RealtimeServerEventResponseAudioTranscriptDelta 更新模型產生的音訊輸出轉譯時的伺服器事件。
RealtimeServerEventResponseAudioTranscriptDone 當模型產生的音訊輸出轉譯完成串流處理時,伺服器事件。 當回應中斷、不完整或取消時也會發出。
RealtimeServerEventResponseContentPartAdded 當新的內容元件在回應產生期間新增至小幫手訊息專案時,伺服器事件。
RealtimeServerEventResponseContentPartDone 當內容元件在小幫手訊息專案中進行串流處理時,伺服器事件。 當回應中斷、不完整或取消時也會發出。
RealtimeServerEventResponseCreated 建立新回應時的伺服器事件。 建立回應的第一個事件,其中回應處於「in_progress」的初始狀態。
RealtimeServerEventResponseDone 當回應完成串流處理時,伺服器事件。 不論最終狀態為何,一律發出。
RealtimeServerEventResponseFunctionCallArgumentsDelta 更新模型產生的函數調用自變數時的伺服器事件。
RealtimeServerEventResponseFunctionCallArgumentsDone 當模型產生的函數調用自變數完成串流處理時,伺服器事件。 當回應中斷、不完整或取消時也會發出。
RealtimeServerEventResponseOutputItemAdded 將新的輸出專案新增至回應時的伺服器事件。
RealtimeServerEventResponseOutputItemDone 輸出專案完成串流處理時的伺服器事件。 當回應中斷、不完整或取消時也會發出。
RealtimeServerEventResponseTextDelta 更新模型產生的文字時的伺服器事件。
RealtimeServerEventResponseTextDone 模型產生的文字完成時的伺服器事件。 當回應中斷、不完整或取消時也會發出。
RealtimeServerEventSessionCreated 建立工作階段時的伺服器事件。
RealtimeServerEventSessionUpdated 更新工作階段時的伺服器事件。

RealtimeServerEventConversationCreated

conversation.created伺服器事件會在會話建立後立即傳回。 每個會話會建立一個交談。

事件結構

{
  "type": "conversation.created",
  "conversation": {
    "id": "<id>",
    "object": "<object>"
  }
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.created
交談 object 交談資源。

交談屬性

欄位 類型 描述
id 字串 交談的唯一識別碼。
object 字串 物件類型必須是 realtime.conversation

RealtimeServerEventConversationItemCreated

建立交談專案時,會傳回伺服器 conversation.item.created 事件。 有幾個案例會產生此事件:

  • 伺服器會產生回應,如果成功產生一或兩個專案,其類型 message 為 (role assistant) 或類型 function_call
  • 由客戶端或伺服器認可輸入音訊緩衝區(模式 server_vad )。 伺服器會取得輸入音訊緩衝區的內容,並將它新增至新的使用者訊息專案。
  • 用戶端傳送 conversation.item.create 事件以將新專案新增至交談。

事件結構

{
  "type": "conversation.item.created",
  "previous_item_id": "<previous_item_id>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.created
previous_item_id 字串 交談內容中上一個專案的標識碼,可讓用戶端瞭解交談的順序。
項目 RealtimeConversationResponseItem 已建立的專案。

RealtimeServerEventConversationItemDeleted

當用戶端刪除與conversation.item.delete事件的交談中的專案時,會傳回伺服器conversation.item.deleted事件。 此事件可用來同步處理伺服器對交談歷程記錄與客戶端檢視的瞭解。

事件結構

{
  "type": "conversation.item.deleted",
  "item_id": "<item_id>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.deleted
item_id 字串 已刪除之項目的識別碼。

RealtimeServerEventConversationItemInputAudioTranscriptionCompleted

伺服器 conversation.item.input_audio_transcription.completed 事件是寫入音訊緩衝區之語音轉譯的結果。

當用戶端或伺服器 (模式) server_vad 認可輸入音訊緩衝區時,會開始轉譯。 轉譯會在建立回應時以異步方式執行,因此此事件可以在回應事件之前或之後執行。

即時 API 模型以原生方式接受音訊,因此輸入轉譯是在個別語音辨識模型上執行的個別程式,目前一律 whisper-1為 。 因此,文字記錄可能會與模型的解譯有些不同,而且應該被視為粗略的指南。

事件結構

{
  "type": "conversation.item.input_audio_transcription.completed",
  "item_id": "<item_id>",
  "content_index": 0,
  "transcript": "<transcript>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.input_audio_transcription.completed
item_id 字串 包含音訊的使用者訊息項目識別碼。
content_index 整數 包含音訊的內容部分索引。
轉錄 字串 已轉譯的文字。

RealtimeServerEventConversationItemInputAudioTranscriptionFailed

設定輸入音訊轉譯時,會傳回伺服器 conversation.item.input_audio_transcription.failed 事件,而且使用者訊息的轉譯要求失敗。 此事件與其他 error 事件不同,因此用戶端可以識別相關專案。

事件結構

{
  "type": "conversation.item.input_audio_transcription.failed",
  "item_id": "<item_id>",
  "content_index": 0,
  "error": {
    "code": "<code>",
    "message": "<message>",
    "param": "<param>"
  }
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.input_audio_transcription.failed
item_id 字串 使用者訊息專案的標識碼。
content_index 整數 包含音訊的內容部分索引。
error object 轉譯錯誤的詳細數據。

請參閱下一個表格中的巢狀屬性。

錯誤屬性

欄位 類型 描述
type 字串 錯誤的類型。
code 字串 錯誤碼,如果有的話。
message 字串 人類可以看懂的錯誤訊息。
param 字串 與錯誤相關的參數,如果有的話。

RealtimeServerEventConversationItemTruncated

當用戶端使用 事件截斷先前的助理音訊消息專案conversation.item.truncate時,會傳回伺服器conversation.item.truncated事件。 此事件可用來同步處理伺服器對音訊與用戶端播放的瞭解。

此事件會截斷音訊並移除伺服器端文字記錄,以確保使用者不知道的內容中沒有文字。

事件結構

{
  "type": "conversation.item.truncated",
  "item_id": "<item_id>",
  "content_index": 0,
  "audio_end_ms": 0
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 conversation.item.truncated
item_id 字串 截斷之小幫手訊息項目的標識碼。
content_index 整數 已截斷之內容元件的索引。
audio_end_ms 整數 音訊截斷的持續時間,以毫秒為單位。

RealtimeServerEventError

發生錯誤時會傳回伺服器 error 事件,這可能是客戶端問題或伺服器問題。 大部分的錯誤都是可復原的,且會話會保持開啟狀態。

事件結構

{
  "type": "error",
  "error": {
    "code": "<code>",
    "message": "<message>",
    "param": "<param>",
    "event_id": "<event_id>"
  }
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 error
error object 錯誤的詳細數據。

請參閱下一個表格中的巢狀屬性。

錯誤屬性

欄位 類型 描述
type 字串 錯誤的類型。 例如,“invalid_request_error”和 “server_error”是錯誤類型。
code 字串 錯誤碼,如果有的話。
message 字串 人類可以看懂的錯誤訊息。
param 字串 與錯誤相關的參數,如果有的話。
event_id 字串 如果適用,造成錯誤的用戶端事件標識碼。

RealtimeServerEventInputAudioBufferCleared

當用戶端使用 input_audio_buffer.clear 事件清除輸入音訊緩衝區時,會傳回伺服器input_audio_buffer.cleared事件。

事件結構

{
  "type": "input_audio_buffer.cleared"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 input_audio_buffer.cleared

RealtimeServerEventInputAudioBufferCommitted

當客戶端認可輸入音訊緩衝區或在伺服器 VAD 模式中自動認可時,就會傳回伺服器 input_audio_buffer.committed 事件。 屬性 item_id 是所建立使用者訊息項目的標識碼。 因此, conversation.item.created 事件也會傳送至用戶端。

事件結構

{
  "type": "input_audio_buffer.committed",
  "previous_item_id": "<previous_item_id>",
  "item_id": "<item_id>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 input_audio_buffer.committed
previous_item_id 字串 插入新項目之後的上一個項目標識碼。
item_id 字串 建立之使用者訊息項目的標識碼。

RealtimeServerEventInputAudioBufferSpeechStarted

當音訊緩衝區中偵測到語音時,會在模式中傳回server_vad伺服器input_audio_buffer.speech_started事件。 每當音訊新增至緩衝區時,就會發生此事件(除非偵測到語音)。

注意

用戶端可能會想要使用此事件來中斷音訊播放,或為使用者提供視覺回饋。

用戶端應該會在語音停止時收到 input_audio_buffer.speech_stopped 事件。 屬性 item_id 是語音停止時所建立之使用者訊息項目的標識碼。 item_id除非用戶端在 VAD 啟用期間手動認可音訊緩衝區,否則 也會包含在 input_audio_buffer.speech_stopped 事件中。

事件結構

{
  "type": "input_audio_buffer.speech_started",
  "audio_start_ms": 0,
  "item_id": "<item_id>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 input_audio_buffer.speech_started
audio_start_ms 整數 第一次偵測到語音時,從寫入緩衝區的所有音訊開始到緩衝區的毫秒數。 這個屬性會對應至傳送至模型的音訊開頭,因此包含 prefix_padding_ms 工作階段中設定的 。
item_id 字串 語音停止時所建立之使用者訊息項目的標識碼。

RealtimeServerEventInputAudioBufferSpeechStopped

當伺服器 input_audio_buffer.speech_stopped 偵測到音訊緩衝區中的語音結束時,伺服器事件會以 server_vad 模式傳回。

伺服器也會傳送 conversation.item.created 事件,其中包含從音訊緩衝區建立的使用者訊息專案。

事件結構

{
  "type": "input_audio_buffer.speech_stopped",
  "audio_end_ms": 0,
  "item_id": "<item_id>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 input_audio_buffer.speech_stopped
audio_end_ms 整數 語音停止時會話啟動的毫秒數。 這個屬性會對應至傳送至模型的音訊結尾,因此包含在 min_silence_duration_ms 工作階段中設定的 。
item_id 字串 建立之使用者訊息項目的標識碼。

RealtimeServerEventRateLimitsUpdated

伺服器 rate_limits.updated 事件會在回應的開頭髮出,以指出更新的速率限制。

建立回應時,某些令牌會保留給輸出令牌。 此處顯示的速率限制會反映保留,該保留會在回應完成之後據此調整。

事件結構

{
  "type": "rate_limits.updated",
  "rate_limits": [
    {
      "name": "<name>",
      "limit": 0,
      "remaining": 0,
      "reset_seconds": 0
    }
  ]
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 rate_limits.updated
rate_limits RealtimeServerEventRateLimitsUpdatedRateLimitsItem 的 陣列 速率限制信息的清單。

RealtimeServerEventResponseAudioDelta

更新模型產生的音訊時,會傳回伺服器 response.audio.delta 事件。

事件結構

{
  "type": "response.audio.delta",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0,
  "delta": "<delta>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.audio.delta
response_id 字串 回應的標識碼。
item_id 字串 項目的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。
delta 字串 Base64 編碼的音訊數據差異。

RealtimeServerEventResponseAudioDone

當模型產生的音訊完成時,會傳回伺服器 response.audio.done 事件。

當回應中斷、不完整或取消時,也會傳回此事件。

事件結構

{
  "type": "response.audio.done",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.audio.done
response_id 字串 回應的標識碼。
item_id 字串 項目的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。

RealtimeServerEventResponseAudioTranscriptDelta

更新模型產生的音訊輸出轉譯時,會傳回伺服器 response.audio_transcript.delta 事件。

事件結構

{
  "type": "response.audio_transcript.delta",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0,
  "delta": "<delta>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.audio_transcript.delta
response_id 字串 回應的標識碼。
item_id 字串 項目的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。
delta 字串 文字記錄差異。

RealtimeServerEventResponseAudioTranscriptDone

當模型產生的音訊輸出轉譯完成串流處理時,就會傳回伺服器 response.audio_transcript.done 事件。

當回應中斷、不完整或取消時,也會傳回此事件。

事件結構

{
  "type": "response.audio_transcript.done",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0,
  "transcript": "<transcript>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.audio_transcript.done
response_id 字串 回應的標識碼。
item_id 字串 項目的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。
轉錄 字串 音訊的最終文字記錄。

RealtimeServerEventResponseContentPartAdded

當新的內容元件在回應產生期間新增至小幫手訊息專案時,就會傳回伺服器 response.content_part.added 事件。

事件結構

{
  "type": "response.content_part.added",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.content_part.added
response_id 字串 回應的標識碼。
item_id 字串 新增內容元件之專案的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。
組件 RealtimeContentPart 已新增的內容元件。

元件屬性

欄位 類型 描述
type RealtimeContentPartType

RealtimeServerEventResponseContentPartDone

當內容部分在小幫手訊息專案中進行串流處理時,就會傳回伺服器 response.content_part.done 事件。

當回應中斷、不完整或取消時,也會傳回此事件。

事件結構

{
  "type": "response.content_part.done",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.content_part.done
response_id 字串 回應的標識碼。
item_id 字串 項目的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。
組件 RealtimeContentPart 完成的內容部分。

元件屬性

欄位 類型 描述
type RealtimeContentPartType

RealtimeServerEventResponseCreated

建立新的回應時,會傳回伺服器 response.created 事件。 這是建立回應的第一個事件,其中回應處於 初始狀態 in_progress

事件結構

{
  "type": "response.created"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.created
回覆 RealtimeResponse 回應物件。

RealtimeServerEventResponseDone

當回應完成串流處理時,會傳回伺服器 response.done 事件。 不論最終狀態為何,一律會發出此事件。 事件中包含的 response.done 回應物件包含回應中的所有輸出專案,但省略原始音訊數據。

事件結構

{
  "type": "response.done"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.done
回覆 RealtimeResponse 回應物件。

RealtimeServerEventResponseFunctionCallArgumentsDelta

當模型產生的函數調用自變數更新時,會傳回伺服器 response.function_call_arguments.delta 事件。

事件結構

{
  "type": "response.function_call_arguments.delta",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "call_id": "<call_id>",
  "delta": "<delta>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.function_call_arguments.delta
response_id 字串 回應的標識碼。
item_id 字串 函數調用項目的識別碼。
output_index 整數 回應中輸出專案的索引。
call_id 字串 函數調用的標識碼。
delta 字串 自變數會以 JSON 字串表示差異。

RealtimeServerEventResponseFunctionCallArgumentsDone

當模型產生的函數調用自變數完成串流處理時,就會傳回伺服器 response.function_call_arguments.done 事件。

當回應中斷、不完整或取消時,也會傳回此事件。

事件結構

{
  "type": "response.function_call_arguments.done",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "call_id": "<call_id>",
  "arguments": "<arguments>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.function_call_arguments.done
response_id 字串 回應的標識碼。
item_id 字串 函數調用項目的識別碼。
output_index 整數 回應中輸出專案的索引。
call_id 字串 函數調用的標識碼。
參數 string 最後的自變數會以 JSON 字串表示。

RealtimeServerEventResponseOutputItemAdded

在響應產生期間建立新專案時,會傳回伺服器 response.output_item.added 事件。

事件結構

{
  "type": "response.output_item.added",
  "response_id": "<response_id>",
  "output_index": 0
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.output_item.added
response_id 字串 項目所屬之回應的標識碼。
output_index 整數 回應中輸出專案的索引。
項目 RealtimeConversationResponseItem 已加入的專案。

RealtimeServerEventResponseOutputItemDone

當專案完成串流處理時,會傳回伺服器 response.output_item.done 事件。

當回應中斷、不完整或取消時,也會傳回此事件。

事件結構

{
  "type": "response.output_item.done",
  "response_id": "<response_id>",
  "output_index": 0
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.output_item.done
response_id 字串 項目所屬之回應的標識碼。
output_index 整數 回應中輸出專案的索引。
項目 RealtimeConversationResponseItem 已進行串流處理的專案。

RealtimeServerEventResponseTextDelta

更新模型產生的文字時,會傳回伺服器 response.text.delta 事件。 文字會對應至 text 助理訊息項目的內容部分。

事件結構

{
  "type": "response.text.delta",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0,
  "delta": "<delta>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.text.delta
response_id 字串 回應的標識碼。
item_id 字串 項目的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。
delta 字串 文字差異。

RealtimeServerEventResponseTextDone

當模型產生的文字完成串流處理時,會傳回伺服器 response.text.done 事件。 文字會對應至 text 助理訊息項目的內容部分。

當回應中斷、不完整或取消時,也會傳回此事件。

事件結構

{
  "type": "response.text.done",
  "response_id": "<response_id>",
  "item_id": "<item_id>",
  "output_index": 0,
  "content_index": 0,
  "text": "<text>"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 response.text.done
response_id 字串 回應的標識碼。
item_id 字串 項目的標識碼。
output_index 整數 回應中輸出專案的索引。
content_index 整數 項目內容數位中內容元件的索引。
text 字串 最終文字內容。

RealtimeServerEventSessionCreated

當您建立與即時 API 的新連線時,伺服器 session.created 事件是第一個伺服器事件。 此事件會建立並傳回具有預設會話組態的新會話。

事件結構

{
  "type": "session.created"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 session.created
session RealtimeResponseSession 會話物件。

RealtimeServerEventSessionUpdated

用戶端更新會話時,會傳回伺服器 session.updated 事件。 如果發生錯誤,伺服器會改為傳送 error 事件。

事件結構

{
  "type": "session.updated"
}

屬性

欄位 類型 描述
type 字串 事件類型必須是 session.updated
session RealtimeResponseSession 會話物件。

元件

RealtimeAudioFormat

允許的值:

  • pcm16
  • g711_ulaw
  • g711_alaw

RealtimeAudioInputTranscriptionModel

允許的值:

  • whisper-1

RealtimeAudioInputTranscriptionSettings

欄位 類型 描述
機型 RealtimeAudioInputTranscriptionModel 預設 whisper-1 模型目前是唯一支援音訊輸入轉譯的模型。

RealtimeClientEvent

欄位 類型 描述
type RealtimeClientEventType 用戶端事件的型別。
event_id 字串 事件的唯一標識碼。

RealtimeClientEventType

允許的值:

  • session.update
  • input_audio_buffer.append
  • input_audio_buffer.commit
  • input_audio_buffer.clear
  • conversation.item.create
  • conversation.item.delete
  • conversation.item.truncate
  • response.create
  • response.cancel

RealtimeContentPart

欄位 類型 描述
type RealtimeContentPartType 內容部分的類型。

RealtimeContentPartType

允許的值:

  • input_text
  • input_audio
  • text
  • audio

RealtimeConversationItemBase

要加入至交談的專案。

RealtimeConversationRequestItem

欄位 類型 描述
type RealtimeItemType 專案的型別。
id 字串 專案的唯一標識碼。

RealtimeConversationResponseItem

欄位 類型 描述
object 字串 交談回應專案。

允許的值: realtime.item
type RealtimeItemType 專案的型別。
id 字串 專案的唯一標識碼。

此屬性可為 Null。

RealtimeFunctionTool

即時端點所使用的函式工具定義。

欄位 類型 描述
type 字串 工具的型別。

允許的值: function
NAME 字串 函數的名稱。
description 字串 函式的描述。
parameters object 函式的參數。

RealtimeItemStatus

允許的值:

  • in_progress
  • completed
  • incomplete

RealtimeItemType

允許的值:

  • message
  • function_call
  • function_call_output

RealtimeMessageRole

允許的值:

  • system
  • user
  • assistant

RealtimeRequestAssistantMessageItem

欄位 類型 描述
角色 (role) 字串 訊息的角色。

允許的值: assistant
content RealtimeRequestTextContentPart 的 陣列 訊息的內容。

RealtimeRequestAudioContentPart

欄位 類型 描述
type 字串 內容部分的類型。

允許的值: input_audio
轉錄 字串 音訊的文字記錄。

RealtimeRequestFunctionCallItem

欄位 類型 描述
type 字串 專案的型別。

允許的值: function_call
NAME 字串 函數調用項目的名稱。
call_id 字串 函數調用項目的識別碼。
參數 string 函數調用專案的自變數。
status RealtimeItemStatus 項目的狀態。

RealtimeRequestFunctionCallOutputItem

欄位 類型 描述
type 字串 專案的型別。

允許的值: function_call_output
call_id 字串 函數調用項目的識別碼。
output 字串 函數調用項目的輸出。

RealtimeRequestMessageItem

欄位 類型 描述
type 字串 專案的型別。

允許的值: message
角色 (role) RealtimeMessageRole 訊息的角色。
status RealtimeItemStatus 項目的狀態。

RealtimeRequestMessageReferenceItem

欄位 類型 描述
type 字串 專案的型別。

允許的值: message
id 字串 訊息項目的標識碼。

RealtimeRequestSession

欄位 類型 描述
方式 陣列 會話支援的形式。

允許值︰textaudio

例如, "modalities": ["text", "audio"] 是啟用文字和音訊格式的預設設定。 若要只開啟文字,請設定 "modalities": ["text"]。 您無法只啟用音訊。
指示 字串 引導模型文字和音訊回應的指示(系統訊息)。

以下是一些範例指示,可協助引導文字和音訊回應的內容和格式:
"instructions": "be succinct"
"instructions": "act friendly"
"instructions": "here are examples of good responses"

以下是一些協助引導音訊行為的範例指示:
"instructions": "talk quickly"
"instructions": "inject emotion into your voice"
"instructions": "laugh frequently"

雖然模型不一定會遵循這些指示,但它們會提供所需行為的指引。
voice RealtimeVoice 用於會話之模型回應的語音。

一旦語音用於模型的音訊回應會話,就無法變更。
input_audio_format RealtimeAudioFormat 輸入音訊的格式。
output_audio_format RealtimeAudioFormat 輸出音訊的格式。
input_audio_transcription RealtimeAudioInputTranscriptionSettings 音訊輸入轉譯的設定。

此屬性可為 Null。
turn_detection RealtimeTurnDetection 工作階段的回合偵測設定。

此屬性可為 Null。
tools RealtimeTool 的 陣列 會話模型可用的工具。
tool_choice RealtimeToolChoice 工作階段的工具選擇。
溫度 數值 模型的取樣溫度。 允許的溫度值限制為 [0.6, 1.2]。 預設為 0.8。
max_response_output_tokens 整數或 “inf” 每個小幫手響應的輸出令牌數目上限,包含工具呼叫。

指定介於 1 到 4096 之間的整數,以限制輸出令牌。 否則,請將值設定為 「inf」 ,以允許令牌數目上限。

例如,若要將輸出令牌限制為 1000,請設定 "max_response_output_tokens": 1000。 若要允許權杖數目上限,請設定 "max_response_output_tokens": "inf"

預設為 "inf"

RealtimeRequestSystemMessageItem

欄位 類型 描述
角色 (role) 字串 訊息的角色。

允許的值: system
content RealtimeRequestTextContentPart 的 陣列 訊息的內容。

RealtimeRequestTextContentPart

欄位 類型 描述
type 字串 內容部分的類型。

允許的值: input_text
text 字串 文字內容。

RealtimeRequestUserMessageItem

欄位 類型 描述
角色 (role) 字串 訊息的角色。

允許的值: user
content RealtimeRequestTextContentPartRealtimeRequestAudioContentPart 的陣列 訊息的內容。

RealtimeResponse

欄位 類型 描述
object 字串 回應物件。

允許的值: realtime.response
id 字串 回應的唯一標識碼。
status RealtimeResponseStatus 回應的狀態。

預設狀態值為 in_progress
status_details RealtimeResponseStatusDetails 回應狀態的詳細數據。

此屬性可為 Null。
output RealtimeConversationResponseItem 的 陣列 回應的輸出專案。
用法 object 回應的使用統計數據。 每個即時 API 會話都會維護交談內容,並將新專案附加至交談。 先前回合的輸出(文字和音訊令牌)是後續回合的輸入。

接下來請參閱巢狀屬性。
+ total_tokens 整數 回應中的令牌總數,包括輸入和輸出文字和音訊令牌。

對象的屬性 usage
+ input_tokens 整數 回應中使用的輸入令牌數目,包括文字和音訊令牌。

對象的屬性 usage
+ output_tokens 整數 回應中傳送的輸出令牌數目,包括文字和音訊令牌。

對象的屬性 usage
+ input_token_details object 回應中使用的輸入令牌詳細數據。

對象的屬性 usage
br>
接下來請參閱巢狀屬性。
+ cached_tokens 整數 回應中使用的快取令牌數目。

對象的屬性 input_token_details
+ text_tokens 整數 回應中使用的文字標記數目。

對象的屬性 input_token_details
+ audio_tokens 整數 回應中使用的音訊令牌數目。

對象的屬性 input_token_details
+ output_token_details object 回應中使用的輸出令牌詳細數據。

對象的屬性 usage

接下來請參閱巢狀屬性。
+ text_tokens 整數 回應中使用的文字標記數目。

對象的屬性 output_token_details
+ audio_tokens 整數 回應中使用的音訊令牌數目。

對象的屬性 output_token_details

RealtimeResponseAudioContentPart

欄位 類型 描述
type 字串 內容部分的類型。

允許的值: audio
轉錄 字串 音訊的文字記錄。

此屬性可為 Null。

RealtimeResponseBase

回應資源。

RealtimeResponseFunctionCallItem

欄位 類型 描述
type 字串 專案的型別。

允許的值: function_call
NAME 字串 函數調用項目的名稱。
call_id 字串 函數調用項目的識別碼。
參數 string 函數調用專案的自變數。
status RealtimeItemStatus 項目的狀態。

RealtimeResponseFunctionCallOutputItem

欄位 類型 描述
type 字串 專案的型別。

允許的值: function_call_output
call_id 字串 函數調用項目的識別碼。
output 字串 函數調用項目的輸出。

RealtimeResponseMessageItem

欄位 類型 描述
type 字串 專案的型別。

允許的值: message
角色 (role) RealtimeMessageRole 訊息的角色。
content 陣列 訊息的內容。

陣列專案: RealtimeResponseTextContentPart
status RealtimeItemStatus 項目的狀態。

RealtimeResponseOptions

欄位 類型 描述
方式 陣列 會話支援的形式。

允許值︰textaudio

例如, "modalities": ["text", "audio"] 是啟用文字和音訊格式的預設設定。 若要只開啟文字,請設定 "modalities": ["text"]。 您無法只啟用音訊。
指示 字串 引導模型文字和音訊回應的指示(系統訊息)。

以下是一些範例指示,可協助引導文字和音訊回應的內容和格式:
"instructions": "be succinct"
"instructions": "act friendly"
"instructions": "here are examples of good responses"

以下是一些協助引導音訊行為的範例指示:
"instructions": "talk quickly"
"instructions": "inject emotion into your voice"
"instructions": "laugh frequently"

雖然模型不一定會遵循這些指示,但它們會提供所需行為的指引。
voice RealtimeVoice 用於會話之模型回應的語音。

一旦語音用於模型的音訊回應會話,就無法變更。
output_audio_format RealtimeAudioFormat 輸出音訊的格式。
tools RealtimeTool 的 陣列 會話模型可用的工具。
tool_choice RealtimeToolChoice 工作階段的工具選擇。
溫度 數值 模型的取樣溫度。 允許的溫度值限制為 [0.6, 1.2]。 預設為 0.8。
max__output_tokens 整數或 “inf” 每個小幫手響應的輸出令牌數目上限,包含工具呼叫。

指定介於 1 到 4096 之間的整數,以限制輸出令牌。 否則,請將值設定為 「inf」 ,以允許令牌數目上限。

例如,若要將輸出令牌限制為 1000,請設定 "max_response_output_tokens": 1000。 若要允許權杖數目上限,請設定 "max_response_output_tokens": "inf"

預設為 "inf"

RealtimeResponseSession

欄位 類型 描述
object 字串 會話物件。

允許的值: realtime.session
id 字串 會話的唯一標識碼。
機型 字串 用於會話的模型。
方式 陣列 會話支援的形式。

允許值︰textaudio

例如, "modalities": ["text", "audio"] 是啟用文字和音訊格式的預設設定。 若要只開啟文字,請設定 "modalities": ["text"]。 您無法只啟用音訊。
指示 字串 引導模型文字和音訊回應的指示(系統訊息)。

以下是一些範例指示,可協助引導文字和音訊回應的內容和格式:
"instructions": "be succinct"
"instructions": "act friendly"
"instructions": "here are examples of good responses"

以下是一些協助引導音訊行為的範例指示:
"instructions": "talk quickly"
"instructions": "inject emotion into your voice"
"instructions": "laugh frequently"

雖然模型不一定會遵循這些指示,但它們會提供所需行為的指引。
voice RealtimeVoice 用於會話之模型回應的語音。

一旦語音用於模型的音訊回應會話,就無法變更。
input_audio_format RealtimeAudioFormat 輸入音訊的格式。
output_audio_format RealtimeAudioFormat 輸出音訊的格式。
input_audio_transcription RealtimeAudioInputTranscriptionSettings 音訊輸入轉譯的設定。

此屬性可為 Null。
turn_detection RealtimeTurnDetection 工作階段的回合偵測設定。

此屬性可為 Null。
tools RealtimeTool 的 陣列 會話模型可用的工具。
tool_choice RealtimeToolChoice 工作階段的工具選擇。
溫度 數值 模型的取樣溫度。 允許的溫度值限制為 [0.6, 1.2]。 預設為 0.8。
max_response_output_tokens 整數或 “inf” 每個小幫手響應的輸出令牌數目上限,包含工具呼叫。

指定介於 1 到 4096 之間的整數,以限制輸出令牌。 否則,請將值設定為 「inf」 ,以允許令牌數目上限。

例如,若要將輸出令牌限制為 1000,請設定 "max_response_output_tokens": 1000。 若要允許權杖數目上限,請設定 "max_response_output_tokens": "inf"

RealtimeResponseStatus

允許的值:

  • in_progress
  • completed
  • cancelled
  • incomplete
  • failed

RealtimeResponseStatusDetails

欄位 類型 描述
type RealtimeResponseStatus 回應的狀態。

RealtimeResponseTextContentPart

欄位 類型 描述
type 字串 內容部分的類型。

允許的值: text
text 字串 文字內容。

RealtimeServerEvent

欄位 類型 描述
type RealtimeServerEventType 伺服器事件的型別。
event_id 字串 事件的唯一標識碼。

RealtimeServerEventRateLimitsUpdatedRateLimitsItem

欄位 類型 Description
NAME 字串 此專案包含相關信息的速率限制屬性名稱。
limit 整數 此速率限制屬性的最大設定限制。
剩餘 整數 針對此速率限制屬性所設定的限制,可用的剩餘配額。
reset_seconds 數值 剩餘的時間,以秒為單位,直到重設此速率限制屬性為止。

RealtimeServerEventType

允許的值:

  • session.created
  • session.updated
  • conversation.created
  • conversation.item.created
  • conversation.item.deleted
  • conversation.item.truncated
  • response.created
  • response.done
  • rate_limits.updated
  • response.output_item.added
  • response.output_item.done
  • response.content_part.added
  • response.content_part.done
  • response.audio.delta
  • response.audio.done
  • response.audio_transcript.delta
  • response.audio_transcript.done
  • response.text.delta
  • response.text.done
  • response.function_call_arguments.delta
  • response.function_call_arguments.done
  • input_audio_buffer.speech_started
  • input_audio_buffer.speech_stopped
  • conversation.item.input_audio_transcription.completed
  • conversation.item.input_audio_transcription.failed
  • input_audio_buffer.committed
  • input_audio_buffer.cleared
  • error

RealtimeServerVadTurnDetection

欄位 類型 描述
type 字串 回合偵測的類型。

允許的值: server_vad
threshold 數值 伺服器 VAD 回合偵測的啟用閾值。 在嘈雜的環境中,您可能需要增加閾值,以避免誤判。 在無訊息的環境中,您可能需要降低閾值,以避免誤判。

預設為 0.5。 您可以將 臨界值設定為 和 1.0之間的0.0值。
prefix_padding_ms 字串 在偵測到的語音開始之前,要包含的語音音訊持續時間(以毫秒為單位)。

預設為 300
silence_duration_ms 字串 偵測語音結束的無聲持續時間(以毫秒為單位)。 您想要儘快偵測語音結束,但不要太快避免切斷語音的最後一部分。

如果您將此值設定為較低的數位,模型會更快速地回應,但可能會切斷語音的最後一個部分。 如果您將此值設定為較高的數位,模型會等候較長的時間來偵測語音結束,但回應可能需要較長的時間。

RealtimeSessionBase

即時會話物件組態。

RealtimeTool

即時工具定義的基底表示法。

欄位 類型 描述
type RealtimeToolType 工具的型別。

RealtimeToolChoice

即時tool_choice參數的可用表示法組合,包含字串常值選項,例如 'auto' 和已定義工具的結構化參考。

RealtimeToolChoiceFunctionObject

即時tool_choice選取具名函式工具的表示法。

欄位 類型 描述
type 字串 tool_choice的類型。

允許的值: function
函數 object 要選取的函式工具。

接下來請參閱巢狀屬性。
+ 名稱 字串 函式工具的名稱。

對象的屬性 function

RealtimeToolChoiceLiteral

即時端點的可用模式層級、字串常值tool_choice選項。

允許的值:

  • auto
  • none
  • required

RealtimeToolChoiceObject

即時tool_choice選取具名工具的基底表示法。

欄位 類型 描述
type RealtimeToolType tool_choice的類型。

RealtimeToolType

即時工具的支援工具類型歧視性。 目前僅支援「函式」工具。

允許的值:

  • function

RealtimeTurnDetection

欄位 類型 描述
type RealtimeTurnDetectionType 回合偵測的類型。

允許的值: server_vad

RealtimeTurnDetectionType

允許的值:

  • server_vad

RealtimeVoice

允許的值:

  • alloy
  • shimmer
  • echo