Fluxo de interação multimodal em tempo real
O fluxo de interação multimodal em tempo real entre o servidor e o cliente.
Referência: Multimodal em tempo real.
modo VAD
Para ativar o modo VAD, defina o session.turn_detection.type parâmetro do evento do cliente para "server_vad". Neste modo, o servidor executa a Detecção de Atividade de Voz (VAD) no áudio recebido e responde quando detecta fala. Este modo é o padrão e foi projetado para cenários em que o cliente envia áudio continuamente para o servidor.
- O servidor envia o
input_audio_buffer.speech_startedevento quando detecta o início da fala. - O cliente pode anexar áudio ao buffer a qualquer momento enviando um
input_audio_buffer.appendevento. - O servidor envia o
input_audio_buffer.speech_stoppedevento quando detecta o final da fala. - O servidor confirma o buffer de áudio de entrada enviando um
input_audio_buffer.committedevento. - O servidor envia um
conversation.item.createdevento, que contém 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 requer 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 é necessária uma chamada de ferramenta.
- O servidor envia um
response.function_call_arguments.deltaevento, que contém dados incrementais para os argumentos de chamada de ferramenta. - O servidor envia um
response.function_call_arguments.doneevento para indicar que todos os argumentos de chamada de ferramenta foram enviados. - O cliente executa a chamada da ferramenta e obtém o resultado.
- O cliente envia um
conversation.item.createevento que contém o resultado da chamada da ferramenta. - O cliente envia um
response.createevento para acionar uma resposta com base no resultado da chamada da ferramenta.
Modo manual
Para ativar o modo Manual, defina o session.turn_detection parâmetro do evento do cliente para nulo. Neste modo, o cliente solicita uma resposta do servidor enviando explicitamente input_audio_buffer.commit e response.create eventos. Este modo é adequado para cenários push-to-talk, como envio de mensagens de voz em aplicativos de bate-papo.
- O cliente pode anexar áudio ao buffer enviando um
input_audio_buffer.appendevento. - O cliente confirma o buffer de áudio de entrada enviando um
input_audio_buffer.commitevento. Este commit cria um novo item de mensagem do usuário na conversa. - O servidor responde enviando um
input_audio_buffer.committedevento. - O cliente envia um
response.createevento para acionar o modelo para gerar a resposta final. - O servidor responde enviando um
conversation.item.createdevento.
Fluxo de chamada de ferramenta
No modo Manual, quando uma resposta gerada pelo servidor requer uma chamada de ferramenta, ocorre o seguinte fluxo de interação:
- Após o cliente enviar um
response.createevento, o servidor gera uma resposta e detecta que uma chamada de ferramenta é necessária. - O servidor envia um
response.function_call_arguments.deltaevento, que contém dados incrementais para os argumentos de chamada de ferramenta. - O servidor envia um
response.function_call_arguments.doneevento para indicar que a transferência dos argumentos de chamada de ferramenta foi concluída. - O cliente executa a chamada da ferramenta e obtém o resultado.
- O cliente envia o resultado da chamada da ferramenta usando um
conversation.item.createevento. - O cliente envia um
response.createevento para acionar o modelo para gerar a resposta final. - O servidor gera uma resposta com base no resultado da chamada da ferramenta e a envia ao cliente usando
response.audio.deltaouresponse.text.deltaeventos.
<a id="qwen38-mcp-flow" />
Qwen3.8-Omni-Flash-Realtime PCM
Function Calling e MCP podem ser configurados juntos em session.tools. Eles não podem ser usados com pesquisa na web (enable_search). QwenCloud não cobra uma taxa adicional de invocação da ferramenta MCP. A inferência do modelo permanece sujeita à precificação do modelo.
Descoberta de ferramentas
Depois que o cliente configurar servidores MCP com session.update, o serviço Realtime descobre suas ferramentas de forma assíncrona:
Nos diagramas de sequência desta seção, opt indica execução quando uma condição é atendida, alt indica ramificações alternativas selecionadas por condição, e par indica processamento paralelo.
- Enviar
session.updatecom entradas MCP emsession.tools. - Alça
mcp_list_tools.in_progress, que pode chegar antessession.updated.session.updatedconfirma a aceitação da configuração, não a disponibilidade da ferramenta. - O serviço descobre ferramentas. Ele envia
conversation.item.createdcom ummcp_list_toolsitem, seguido pormcp_list_tools.completedoumcp_list_tools.failedcom o mesmoitem_id. O item contém as ferramentas filtradas finais ou um erro.
Entrada de áudio e response.create podem continuar durante a descoberta, mas somente as respostas criadas após a conclusão da descoberta podem usar as ferramentas correspondentes.
Chamadas MCP e continuação
Quando o modelo seleciona uma ferramenta MCP, o serviço Realtime executa a chamada. Se a aprovação for necessária, o cliente primeiro responde à solicitação de aprovação:
- O servidor cria um
mcp_callitem atravésresponse.output_item.added. - Concatenar zero ou mais
response.mcp_call_arguments.deltafragmentos. Use a string JSON completa emresponse.mcp_call_arguments.donecomo autoritário. - Quando a aprovação for necessária, trate
conversation.item.createdcomitem.type="mcp_approval_request". Decida se deseja permitir a chamada e responda comconversation.item.create,item.type="mcp_approval_response", a aprovação exataitem.ide booleanoapprove. A aprovação é exigida por padrão. - Chamadas aprovadas ou configuradas para não exigir aprovação, emitem
response.mcp_call.in_progress. O serviço executa a chamada MCP e emiteresponse.mcp_call.completedouresponse.mcp_call.failed. O tempo limite de rejeição ou aprovação é emitidofailedsem execução. - Consumir
response.output_item.donepara o item de chamada final. O pairesponse.donechega depois que cada item MCP nessa resposta atinge um estado terminal. Éresponse.outputinclui instantâneos finais: chamadas bem-sucedidas têmcompletedeoutput; chamadas falhadas têmfailedeerror. - Para gerar uma resposta modelo a partir dos resultados do MCP, envie um
response.createdepois do pairesponse.done. Não anexe resultados do MCP: eles já estão na conversa. Não use o manualfunction_call_outputfluxo de retorno para essas chamadas MCP executadas pelo servidor.
Consulte campos de configuração do cliente, respostas de aprovação e eventos e itens do servidor.
Limites de uso
As seguintes restrições padrão do MCP se aplicam a cada sessão:
| Artigo | Valor padrão |
|---|---|
| Servidores MCP | 8 |
| Ferramentas MCP | 128 |
| Tempo limite de descoberta da ferramenta | 30 segundos |
| Tempo limite de aprovação | 60 segundos |
| Tempo limite de execução da ferramenta | 30 segundos |
| Tamanho único de resposta upstream | 2 MB |
| Tamanho cumulativo do resultado da ferramenta | 8 MB |
| Chamadas cumulativas de ferramentas | 256 |