即時多模態互動流程
本文介紹即時多模態服務端和用戶端的互動流程。
VAD 模式
將用戶端事件事件的session.turn_detection 設為"server_vad"以啟用 VAD 模式。在 VAD 模式下,服務端對傳入的音頻進行語音活動檢測,並在檢測到作出響應。此模式適用於用戶端到伺服器始終發送音訊情況,也是當前的預設模式。
服務端在檢測到語音開始時發送
input_audio_buffer.speech_started事件。用戶端隨時可以選擇通過發送
input_audio_buffer.append事件將音頻追加到緩衝區。服務端在檢測到語音結束時發送
input_audio_buffer.speech_stopped事件。服務端通過發送
input_audio_buffer.committed事件來提交輸入音頻緩衝區。服務端發送
conversation.item.created事件,其中包含從音頻緩衝區建立的使用者訊息項。
工具調用流程
在 VAD 模式下,當服務端產生的響應需要調用工具時,遵循以下互動流程:
服務端在檢測到語音結束並產生響應時,識別到需要調用工具。
服務端發送
response.function_call_arguments.delta事件,包含工具調用參數的增量資料。服務端發送
response.function_call_arguments.done事件,表示工具調用參數傳遞完成。用戶端執行工具調用並擷取結果。
用戶端通過
conversation.item.create事件發送工具調用結果。服務端自動基於工具調用結果產生響應。
Manual 模式
將用戶端事件事件的session.turn_detection 設為 null 以啟用 Manual 模式。此模式下,用戶端通過顯式發送input_audio_buffer.commit 和response.create事件請求伺服器響應。適用於按下即說情境,如聊天軟體中的發送語音。
用戶端可以通過發送
input_audio_buffer.append事件將音頻追加到緩衝區。用戶端通過發送
input_audio_buffer.commit事件來提交輸入音頻緩衝區。 該提交會在對話中建立一個新的使用者訊息項。伺服器通過發送
input_audio_buffer.committed事件進行響應。用戶端發送
response.create事件,觸發模型產生最終響應。伺服器通過發送
conversation.item.created事件進行響應。
工具調用流程
在 Manual 模式下,當服務端產生的響應需要調用工具時,遵循以下互動流程:
用戶端發送
response.create事件後,服務端產生響應並識別到需要調用工具。服務端發送
response.function_call_arguments.delta事件,包含工具調用參數的增量資料。服務端發送
response.function_call_arguments.done事件,表示工具調用參數傳遞完成。用戶端執行工具調用並擷取結果。
用戶端通過
conversation.item.create事件發送工具調用結果。用戶端發送
response.create事件,觸發模型產生最終響應。服務端基於工具調用結果產生響應,並通過
response.audio.delta或response.text.delta事件返回給用戶端。