Este tópico descreve o fluxo de interação multimodal em tempo real entre o servidor e o cliente.
Modo VAD
Para ativar o modo VAD, defina o parâmetro session.turn_detection do evento do cliente como "server_vad". Nesse modo, o servidor executa a Detecção de Atividade de Voz (VAD) no áudio recebido e responde ao identificar fala. Esta é a configuração padrão, ideal para cenários em que o cliente envia áudio continuamente ao servidor.
- O servidor envia o evento
input_audio_buffer.speech_startedao detectar o início da fala. - O cliente pode adicionar áudio ao buffer a qualquer momento enviando um evento
input_audio_buffer.append. - O servidor envia o evento
input_audio_buffer.speech_stoppedao detectar o fim da fala. - O servidor confirma o buffer de áudio de entrada enviando um evento
input_audio_buffer.committed. - O servidor envia um evento
conversation.item.createdcontendo o item de mensagem do usuário criado a partir do buffer de áudio.
Fluxo de chamada de ferramenta
No modo VAD, quando uma resposta gerada pelo servidor exige uma chamada de ferramenta, ocorre o seguinte fluxo de interação:
- Após detectar o fim da fala e gerar uma resposta, o servidor determina que uma chamada de ferramenta é necessária.
- O servidor envia um evento
response.function_call_arguments.deltacom dados incrementais dos argumentos da chamada de ferramenta. - O servidor envia um evento
response.function_call_arguments.donepara indicar que todos os argumentos da chamada de ferramenta foram enviados. - O cliente executa a chamada de ferramenta e obtém o resultado.
- O cliente envia um evento
conversation.item.createcontendo o resultado da chamada de ferramenta. - O servidor gera automaticamente uma resposta com base no resultado da chamada de ferramenta.
Modo Manual
Para ativar o modo Manual, defina o parâmetro session.turn_detection do evento do cliente como null. Nessa configuração, o cliente solicita uma resposta do servidor enviando explicitamente os eventos input_audio_buffer.commit e response.create. Esse modo é adequado para cenários de "pressionar para falar", como o envio de mensagens de voz em aplicativos de chat.
- O cliente pode adicionar áudio ao buffer enviando um evento
input_audio_buffer.append. - O cliente confirma o buffer de áudio de entrada enviando um evento
input_audio_buffer.commit. Essa confirmação cria um novo item de mensagem do usuário na conversa. - O servidor responde enviando um evento
input_audio_buffer.committed. - O cliente envia um evento
response.createpara acionar o modelo e gerar a resposta final. - O servidor responde enviando um evento
conversation.item.created.
Fluxo de chamada de ferramenta
- Após o cliente enviar um evento
response.create, o servidor gera uma resposta e detecta a necessidade de uma chamada de ferramenta. - O servidor envia um evento
response.function_call_arguments.deltacontendo dados incrementais dos argumentos da chamada de ferramenta. - O servidor envia um evento
response.function_call_arguments.donepara sinalizar que a transferência dos argumentos da chamada de ferramenta foi concluída. - O cliente executa a chamada de ferramenta e obtém o resultado.
- O cliente envia o resultado da chamada de ferramenta utilizando um evento
conversation.item.create. - O cliente envia um evento
response.createpara acionar o modelo e gerar a resposta final. - O servidor gera uma resposta baseada no resultado da chamada de ferramenta e a envia ao cliente por meio de eventos
response.audio.deltaouresponse.text.delta.