Cette rubrique décrit le flux d'interaction multimodale en temps réel entre le serveur et le client.
Mode VAD
Pour activer le mode VAD, définissez le paramètre session.turn_detection de l'événement client sur "server_vad". Dans ce mode, le serveur effectue une détection d'activité vocale (VAD) sur le flux audio entrant et réagit dès qu'il identifie une parole. Il s'agit du mode par défaut, conçu pour les scénarios où le client transmet l'audio au serveur en continu.
- Le serveur émet l'événement
input_audio_buffer.speech_startedlorsqu'il détecte le début d'une parole. - Le client peut ajouter des données audio au tampon à tout moment en envoyant un événement
input_audio_buffer.append. - Le serveur signale la fin de la parole via l'événement
input_audio_buffer.speech_stopped. - Le serveur valide le tampon audio d'entrée en envoyant un événement
input_audio_buffer.committed. - Le serveur transmet ensuite un événement
conversation.item.createdcontenant l'élément de message utilisateur généré à partir du tampon audio.
Flux d'appel d'outil
En mode VAD, si une réponse générée par le serveur nécessite un appel d'outil, le flux d'interaction suivant se produit :
- Une fois la fin de la parole détectée et la réponse générée, le serveur détermine qu'un appel d'outil est nécessaire.
- Le serveur envoie un événement
response.function_call_arguments.deltacontenant les données incrémentielles des arguments de l'appel d'outil. - Le serveur transmet un événement
response.function_call_arguments.donepour indiquer que tous les arguments ont été envoyés. - Le client exécute l'appel d'outil et obtient le résultat.
- Le client envoie un événement
conversation.item.createcontenant le résultat de l'appel d'outil. - Le serveur génère automatiquement une réponse basée sur ce résultat.
Mode manuel
Pour activer le mode manuel, définissez le paramètre session.turn_detection de l'événement client sur null. Dans cette configuration, le client sollicite explicitement une réponse du serveur en envoyant les événements input_audio_buffer.commit et response.create. Ce mode convient particulièrement aux scénarios de type « push-to-talk », comme l'envoi de messages vocaux dans les applications de messagerie.
- Le client peut ajouter des données audio au tampon en envoyant un événement
input_audio_buffer.append. - Le client valide le tampon audio d'entrée en envoyant un événement
input_audio_buffer.commit. Cette validation crée un nouvel élément de message utilisateur dans la conversation. - Le serveur répond en envoyant un événement
input_audio_buffer.committed. - Le client envoie un événement
response.createpour déclencher la génération de la réponse finale par le modèle. - Le serveur répond en envoyant un événement
conversation.item.created.
Flux d'appel d'outil
En mode manuel, lorsqu'une réponse générée par le serveur requiert un appel d'outil, le processus suivant s'applique :
- Après réception d'un événement
response.createprovenant du client, le serveur génère une réponse et identifie la nécessité d'un appel d'outil. - Le serveur transmet les données incrémentielles des arguments via un événement
response.function_call_arguments.delta. - Un événement
response.function_call_arguments.donesignale la fin du transfert des arguments. - Le client exécute l'appel d'outil et obtient le résultat.
- Le client transmet le résultat obtenu en utilisant un événement
conversation.item.create. - Le client envoie un événement
response.createpour déclencher la génération de la réponse finale par le modèle. - Le serveur produit une réponse fondée sur le résultat de l'outil et la transmet au client via des événements
response.audio.deltaouresponse.text.delta.