即時多模態互動流程

更新時間:
Copy as MD

本文介紹即時多模態服務端和用戶端的互動流程。

VAD 模式

用戶端事件事件的session.turn_detection 設為"server_vad"以啟用 VAD 模式。在 VAD 模式下,服務端對傳入的音頻進行語音活動檢測,並在檢測到作出響應。此模式適用於用戶端到伺服器始終發送音訊情況,也是當前的預設模式。

server_vad

  • 服務端在檢測到語音開始時發送input_audio_buffer.speech_started 事件。

  • 用戶端隨時可以選擇通過發送 input_audio_buffer.append 事件將音頻追加到緩衝區。

  • 服務端在檢測到語音結束時發送input_audio_buffer.speech_stopped事件。

  • 服務端通過發送 input_audio_buffer.committed 事件來提交輸入音頻緩衝區。

  • 服務端發送 conversation.item.created 事件,其中包含從音頻緩衝區建立的使用者訊息項。

工具調用流程

在 VAD 模式下,當服務端產生的響應需要調用工具時,遵循以下互動流程:

image.svg

  • 服務端在檢測到語音結束並產生響應時,識別到需要調用工具。

  • 服務端發送 response.function_call_arguments.delta 事件,包含工具調用參數的增量資料。

  • 服務端發送 response.function_call_arguments.done 事件,表示工具調用參數傳遞完成。

  • 用戶端執行工具調用並擷取結果。

  • 用戶端通過 conversation.item.create 事件發送工具調用結果。

  • 服務端自動基於工具調用結果產生響應。

Manual 模式

用戶端事件事件的session.turn_detection 設為 null 以啟用 Manual 模式。此模式下,用戶端通過顯式發送input_audio_buffer.commitresponse.create事件請求伺服器響應。適用於按下即說情境,如聊天軟體中的發送語音。

manual

  • 用戶端可以通過發送 input_audio_buffer.append 事件將音頻追加到緩衝區。

  • 用戶端通過發送 input_audio_buffer.commit事件來提交輸入音頻緩衝區。 該提交會在對話中建立一個新的使用者訊息項。

  • 伺服器通過發送 input_audio_buffer.committed事件進行響應。

  • 用戶端發送 response.create 事件,觸發模型產生最終響應。

  • 伺服器通過發送 conversation.item.created事件進行響應。

工具調用流程

image.svg

在 Manual 模式下,當服務端產生的響應需要調用工具時,遵循以下互動流程:

  • 用戶端發送 response.create 事件後,服務端產生響應並識別到需要調用工具。

  • 服務端發送 response.function_call_arguments.delta 事件,包含工具調用參數的增量資料。

  • 服務端發送 response.function_call_arguments.done 事件,表示工具調用參數傳遞完成。

  • 用戶端執行工具調用並擷取結果。

  • 用戶端通過 conversation.item.create 事件發送工具調用結果。

  • 用戶端發送 response.create 事件,觸發模型產生最終響應。

  • 服務端基於工具調用結果產生響應,並通過 response.audio.deltaresponse.text.delta 事件返回給用戶端。