Topik ini menjelaskan alur interaksi multimodal real-time antara server dan klien.
Mode VAD
Untuk mengaktifkan mode VAD, atur parameter session.turn_detection dari client event ke "server_vad". Dalam mode ini, server melakukan Voice Activity Detection (VAD) pada audio masuk dan memberikan respons saat mendeteksi adanya suara. Mode ini merupakan mode default dan dirancang untuk skenario di mana klien terus-menerus mengirim audio ke server.
- Server mengirim event
input_audio_buffer.speech_startedsaat mendeteksi awal percakapan. - Klien dapat menambahkan audio ke buffer kapan saja dengan mengirim event
input_audio_buffer.append. - Server mengirim event
input_audio_buffer.speech_stoppedsaat mendeteksi akhir percakapan. - Server melakukan commit terhadap input audio buffer dengan mengirim event
input_audio_buffer.committed. - Server mengirim event
conversation.item.created, yang berisi item message pengguna yang dibuat dari buffer audio.
Alur pemanggilan tool
Dalam mode VAD, ketika respons yang dihasilkan server memerlukan pemanggilan tool, alur interaksi berikut terjadi:
- Setelah mendeteksi akhir percakapan dan menghasilkan respons, server menentukan bahwa pemanggilan tool diperlukan.
- Server mengirim event
response.function_call_arguments.delta, yang berisi data inkremental untuk argumen pemanggilan tool. - Server mengirim event
response.function_call_arguments.doneuntuk menandakan bahwa seluruh argumen pemanggilan tool telah dikirim. - Klien mengeksekusi pemanggilan tool dan memperoleh hasilnya.
- Klien mengirim event
conversation.item.createyang berisi hasil pemanggilan tool. - Server secara otomatis menghasilkan respons berdasarkan hasil pemanggilan tool tersebut.
Mode Manual
Untuk mengaktifkan Mode Manual, atur parameter session.turn_detection dari client event ke null. Dalam mode ini, klien meminta respons dari server dengan secara eksplisit mengirim event input_audio_buffer.commit dan response.create. Mode ini cocok untuk skenario push-to-talk, seperti mengirim pesan suara dalam aplikasi chat.
- Klien dapat menambahkan audio ke buffer dengan mengirim event
input_audio_buffer.append. - Klien melakukan commit terhadap input audio buffer dengan mengirim event
input_audio_buffer.commit. Commit ini membuat item message pengguna baru dalam percakapan. - Server merespons dengan mengirim event
input_audio_buffer.committed. - Klien mengirim
response.createevent untuk memicu model menghasilkan respons akhir. - Server merespons dengan mengirim event
conversation.item.created.
Alur pemanggilan tool
Dalam Mode Manual, ketika respons yang dihasilkan server memerlukan pemanggilan tool, alur interaksi berikut terjadi:
- Setelah klien mengirim event
response.create, server menghasilkan respons dan mendeteksi bahwa pemanggilan tool diperlukan. - Server mengirim event
response.function_call_arguments.delta, yang berisi data inkremental untuk argumen pemanggilan tool. - Server mengirim event
response.function_call_arguments.doneuntuk menandakan bahwa transfer argumen pemanggilan tool telah selesai. - Klien mengeksekusi pemanggilan tool dan memperoleh hasilnya.
- Klien mengirim hasil pemanggilan tool menggunakan event
conversation.item.create. - Klien mengirim event
response.createuntuk memicu model menghasilkan respons akhir. - Server menghasilkan respons berdasarkan hasil pemanggilan tool dan mengirimkannya ke klien menggunakan event
response.audio.deltaatauresponse.text.delta.