Qwen-Omni eventos do cliente
Referência do cliente WebSocket
Eventos enviados do cliente para o servidor por meio de WebSocket.
Para uso fora do tempo real, Qwen-Omni está disponível através da API de bate-papo.
Referência: Multimodal em tempo real.
sessão.atualização
Envie este evento após conectar-se para atualizar a configuração da sessão. O serviço valida seus parâmetros e retorna a configuração atualizada (excluindo endpoint MCP e campos de credenciais para Qwen3.8-Omni-Flash-Realtime) ou um erro.
{
"event_id": "event_ToPZqeobitzUJnt3QqtWg",
"type": "session.update",
"session": {
"modalities": ["text", "audio"],
"voice": "Chelsie",
"input_audio_format": "pcm",
"output_audio_format": "pcm",
"instructions": "You are an AI customer service agent for a five-star hotel. Please answer customer inquiries about room types, facilities, prices, and reservation policies accurately and in a friendly manner. Always respond with a professional and helpful attitude. Do not provide unconfirmed information or information beyond the scope of the hotel's services.",
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"silence_duration_ms": 800
},
"enable_search": true,
"search_options": {
"enable_source": true
},
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Useful for querying the weather in a specific city.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city or district, such as Beijing, Hangzhou, or Yuhang District."
}
},
"required": ["location"]
}
}
}
],
"seed": 1314,
"max_tokens": 16384,
"repetition_penalty": 1.05,
"presence_penalty": 0.0,
"top_k": 50,
"top_p": 1.0,
"temperature": 0.9
}
}
Tipo de evento. Sempre session.update.
Configuração da sessão.
Para Qwen3.8-Omni-Flash-Realtime, session é necessário ao atualizar uma sessão. O limite total de tokens de entrada é 196.608, calculado usando as mesmas regras de Qwen3.5-Omni-Realtime.
Modalidades de saída. Valores válidos:
- `["text"]` — Somente texto.
- `["text", "audio"]` (Padrão) — Texto e áudio.
Voz para saída de áudio. Aceita vozes predefinidas ou vozes clonadas (Qwen3.5-Omni-Realtime somente) criado por meio da [API de clonagem de voz](/developer-guides/speech/voice-cloning). Consulte a lista de vozes para vozes predefinidas suportadas. Padrões:
- Qwen3.5-Omni-Realtime:Tina
Qwen3.8-Omni-Flash-Realtime o padrão é `Tina`. Consulte [Saída de voz](#session-audio-voice) para exemplos e precedência de campos aninhados.
Configuração de entrada e saída de áudio. Consulte [Configuração de áudio](#session-audio).
O formato do áudio de entrada do usuário. Atualmente só suporta `pcm`. O áudio de entrada deve ser um fluxo de áudio PCM com taxa de amostragem de 16 kHz.
O formato do áudio de saída. Atualmente só suporta `pcm`. O áudio de saída é um fluxo de áudio PCM com taxa de amostragem de 24 kHz. Taxas de amostragem de saída personalizadas não são suportadas.
Seja para ativar um estilo de resposta coloquial. Valores válidos:
- `true` (padrão): Respostas coloquiais.
- `false`: Respostas formais e escritas. Conteúdo difícil de ler em voz alta pode não ter um bom desempenho.
- `null`: o modelo seleciona automaticamente entre o estilo coloquial e formal.
Mensagem do sistema definindo a função ou objetivo do modelo.
Configuração de detecção de atividade de voz (VAD). Definir como `null` para desativar o VAD e acionar respostas manualmente. Omita o uso de VAD com parâmetros padrão.
Tipo VAD. Valores válidos:
- `server_vad` (Padrão): Detecta o final da fala do usuário com base nos recursos acústicos.
- `semantic_vad`: detecta o final da fala do usuário com base na validade semântica. Filtra discursos sem sentido, como backchannels e ruídos de fundo. Apoiado por Qwen3.8-Omni-Flash-Realtime e o Qwen3.5-Omni-Realtime série.
Sensibilidade do DAV. Valores mais baixos detectam mais sons (incluindo ruído de fundo). Valores mais altos requerem uma fala mais clara. Faixa: \[-1,0, 1,0]. Padrão: 0,5.
Duração do silêncio (ms) após o término da fala antes que o modelo responda. Valores mais baixos fornecem respostas mais rápidas, mas podem ser acionados em pausas breves. Faixa: 200-6000. Padrão: 800.
Aplica-se apenas a `qwen3.5-omni-plus-realtime` e `qwen3.5-omni-flash-realtime` modelos em `server_vad` modo. O tempo limite de inatividade em milissegundos. Depois que o servidor terminar a reprodução do áudio e o usuário permanecer em silêncio além desse período (sem `speech.started` acionado), o modelo gera proativamente uma resposta para solicitar que o usuário continue a conversa com base no contexto atual. O tempo limite começa depois que o último áudio de resposta do modelo termina de ser reproduzido. Faixa: 5.000-30.000.
Aplica-se a Qwen3.8-Omni-Flash-Realtime e Qwen3.5-Omni-Realtime modelos. Se deve ativar a pesquisa na web. Padrão: `false`. Quando ativado, o modelo pode determinar de forma autônoma se uma pesquisa é necessária para responder às perguntas do usuário em tempo real.
tools e enable_search são incompatíveis. Não ative ambos ao mesmo tempo.
Configuração da opção de pesquisa na web. Só entra em vigor quando `enable_search` está habilitado.
Se uma lista de fontes de resultados de pesquisa deve ser retornada. Definir como `true` para habilitar.
Configuração de entrada de vídeo. Usar `video.input.representation_compact` para agregação de vídeo. Consulte [Configuração de vídeo](#session-video).
Uma lista de definições de ferramentas. Quando configurado, o modelo pode decidir se deseja chamar uma ferramenta com base na entrada do usuário.
As propriedades abaixo descrevem ferramentas personalizadas de chamada de função. Para configuração da ferramenta MCP em Qwen3.8-Omni-Flash-Realtime, veja [Qwen3.8 eventos do cliente](#session-tools-mcp).
Para uma ferramenta de chamada de função personalizada, o valor deve ser `function`.
O nome da função da ferramenta personalizada, como `get_current_weather` ou `get_current_time`.
Uma descrição dos recursos da função da ferramenta. O modelo usa este campo para decidir se deseja usar a função de ferramenta.
Uma descrição dos parâmetros de entrada da função da ferramenta. O modelo usa este campo para extrair os parâmetros de entrada. Se a função da ferramenta não exigir parâmetros de entrada, não especifique este campo.
O valor deve ser `object`.
Descreve o nome, o tipo de dados e a descrição de cada parâmetro de entrada. A chave é o nome do parâmetro. O valor é um objeto que contém `type` e `description`.
Especifica quais parâmetros de entrada são necessários.
Temperatura de amostragem para diversidade de saída. Valores mais elevados aumentam a diversidade; valores mais baixos aumentam o determinismo. Faixa: \[0, 2). Defina apenas um dos `temperature` ou `top_p`. Padrões:
- qwen3.8-omni-flash-realtime modelos: 0,6
- qwen3.5-omni-realtime modelos: 0,7
Limite de amostragem de núcleo para diversidade de saída. Valores mais elevados aumentam a diversidade; valores mais baixos aumentam o determinismo. Faixa: (0, 1,0]. Defina apenas um dos `temperature` ou `top_p`. Padrões:
- qwen3.8-omni-flash-realtime modelos: 0,95
- qwen3.5-omni-realtime modelos: 0,8
Contagem de tokens candidatos para amostragem. Valores mais altos aumentam a aleatoriedade; valores mais baixos aumentam o determinismo. Se for nulo ou >100, top\_k será desabilitado e somente top\_p será aplicado. Deve ser >=0. Padrões:
- qwen3.8-omni-flash-realtime modelos: 20
- qwen3.5-omni-realtime modelos: 20
Máximo de tokens a serem retornados. A saída é truncada além desse limite; a geração em si não é afetada. Para `qwen3.8-omni-flash-realtime`, o intervalo válido é \[1, 65536]. Para outros modelos, os valores padrão e máximo são iguais ao comprimento máximo de saída do modelo. Consulte [Lista de modelos](/developer-guides/speech/s2s-models). Use para controlar a contagem de palavras, custos ou latência.
Penalidade por repetição consecutiva. Valores mais altos reduzem a repetição. 1,0 = sem penalidade. `qwen3.8-omni-flash-realtime` também aceita 0; para outros modelos o valor deve ser maior que 0. Padrões: qwen3.8-omni-flash-realtime modelos: 0, qwen3.5-omni-realtime modelos: 1.0.
Controla a repetição. Faixa: \[-2,0, 2,0]. Padrões: qwen3.8-omni-flash-realtime modelos: 1, qwen3.5-omni-realtime modelos: 1,5. Valores positivos reduzem a repetição; valores negativos aumentam-no. Use valores mais altos para tarefas criativas e valores mais baixos para conteúdo formal.
Torna a saída determinística. Com a mesma semente e parâmetros, o modelo retorna resultados idênticos. Faixa: 0 a 2^31-1. Padrão: -1.
Configuração de áudio
áudio object (opcional)
Configuração de entrada e saída de áudio. Os campos omitidos mantêm seus padrões existentes.
As opções de formato e taxa de amostragem abaixo se aplicam a qwen3.5-omni-plus-realtime e qwen3.5-omni-flash-realtime. Para campos e restrições de entrada multicanal, consulte Entrada de áudio multicanal.
entrada.áudio object (opcional)
Configuração de áudio de entrada do usuário.
formato.de.entrada.de.áudio object (opcional)
Formato de áudio de entrada e taxa de amostragem. Configure-os enquanto a sessão estiver IDLE, antes de enviar o primeiro segmento de áudio. Eles não podem mudar após o início da entrada de áudio.
audio.input.format.type string (opcional)
Formato de áudio de entrada: pcm (padrão, PCM bruto mono de 16 bits) ou wav (PCM mono de 16 bits em um contêiner WAV).
audio.input.format.sample_rate integer (opcional)
Taxa de amostragem de entrada em Hz: 8000, 16000 (padrão), 24000, ou 48000.
saída.áudio object (opcional)
Configuração de áudio de saída do modelo.
audio.output.formato object (opcional)
Formato de áudio de saída e taxa de amostragem. Configure-os no início da sessão, antes do início da interação de áudio.
audio.output.format.type string (opcional)
Formato de áudio de saída: pcm (padrão, PCM bruto mono de 16 bits) ou wav (PCM mono de 16 bits em um contêiner WAV).
audio.output.format.sample_rate integer (opcional)
Taxa de amostragem de saída em Hz: 8000, 16000, 24000 (padrão) ou 48000.
Entrada de áudio multicanal
A seguinte configuração de áudio multicanal se aplica a Qwen3.8-Omni-Flash-Realtime através do WebSocket.
| Campo | Tipo | Obrigatório/padrão | Valores e restrições |
|---|---|---|---|
type |
corda | Opcional; pcm |
A entrada multicanal deve usar pcm. |
sample_rate |
inteiro | Opcional; 16000 |
A entrada multicanal deve usar 16.000 Hz. |
sample_format |
corda | Opcional; s16le |
Somente s16le. |
channels |
inteiro | Opcional; 1 |
Somente 1, 2, ou 4. |
packing |
corda | Opcional; interleaved |
Somente interleaved. |
channel_layout |
corda | Opcional; determinado por channels |
mono para 1 canal, raw_mic_array para 2, foa_ambix para 4. Um valor explícito deve corresponder channels. |
A entrada multicanal requer PCM, 16.000 Hz, s16le e amostras intercaladas. Configure o formato antes de enviar o primeiro segmento de áudio; esses campos não podem ser alterados após o início da entrada de áudio. Os campos omitidos usam seus padrões. Os campos fornecidos devem ter tipos e valores válidos; não envie null em vez de omitir um campo.
Configuração de dois canais:
{
"type": "session.update",
"session": {
"audio": {
"input": {
"format": {
"type": "pcm",
"sample_rate": 16000,
"sample_format": "s16le",
"channels": 2,
"packing": "interleaved",
"channel_layout": "raw_mic_array"
}
}
}
}
}
Configuração de quatro canais:
{
"type": "session.update",
"session": {
"audio": {
"input": {
"format": {
"type": "pcm",
"sample_rate": 16000,
"sample_format": "s16le",
"channels": 4,
"packing": "interleaved",
"channel_layout": "foa_ambix"
}
}
}
}
}
Configuração de canal único compatível:
{
"type": "session.update",
"session": {
"audio": {
"input": {
"format": {
"type": "pcm",
"sample_rate": 16000
}
}
}
}
}
Para áudio espacial de 2 e 4 canais, a contagem de tokens de entrada é o dobro do áudio comum. Consulte Cálculo de token.
Saída de voz
A configuração a seguir se aplica a Qwen3.8-Omni-Flash-Realtime.
session.audio.output.voice é uma string opcional para a voz de saída, cujo padrão é Tina. longanlingxin é recentemente suportado. O campo de compatibilidade opcional session.voice permanece disponível; usar session.audio.output.voice para novas integrações. Se ambos forem fornecidos, session.audio.output.voice tem precedência. Veja vozes.
{
"type": "session.update",
"session": {
"audio": {
"output": {
"voice": "longanlingxin"
}
}
}
}
Configuração de vídeo
A configuração a seguir se aplica a Qwen3.8-Omni-Flash-Realtime.
representation_compact é uma string opcional. O padrão da sessão inicial é none. none preserva a representação de vídeo completa e refinada; normal agrega-o para reduzir a computação para cenários que não exigem detalhes visuais finos. Para a mesma entrada de vídeo, normal usa um quarto dos tokens usados por none. Consulte Cálculo de token. Defina este campo antes do primeiro segmento de áudio; ele não pode mudar após o início da entrada de áudio.
{
"type": "session.update",
"session": {
"video": {
"input": {
"representation_compact": "normal"
}
}
}
}
Configuração da ferramenta MCP
A configuração a seguir se aplica a Qwen3.8-Omni-Flash-Realtime.
Os campos obrigatórios devem ser fornecidos quando o objeto que os contém estiver presente. IDs são strings opacas; não confie em seus comprimentos, prefixos ou regras de geração. Conexões, descobertas e chamadas MCP estão sujeitas a cotas e tempos limite de serviço.
Um elemento com type="mcp" configura um servidor MCP. Uma sessão pode conter chamadas de função e ferramentas MCP. tools e enable_search são mutuamente exclusivos, incluindo ferramentas MCP. Para cotas de servidores e ferramentas, tempos limite e limites de tamanho de resultados, consulte Limites de chamadas MCP.
| Campo | Tipo | Obrigatório/padrão | Restrições |
|---|---|---|---|
type |
corda | Obrigatório | mcp |
server_label |
corda | Obrigatório | Único dentro da sessão; 1-64 caracteres; apenas letras, dígitos, sublinhados e hifens. |
server_url |
corda | Obrigatório | Endereço HTTPS público na porta 443; até 4.096 caracteres; Endpoint HTTP streamável do MCP. |
authorization |
corda | Opcional | Valor de autorização de saída; até 8.192 caracteres ASCII imprimíveis. |
headers |
objeto | Opcional | Até 16 pares de cabeçalho HTTP string-to-string. |
allowed_tools |
matriz de strings | Opcional; todas as ferramentas quando omitidas | Uma matriz vazia não expõe ferramentas. Cada nome tem de 1 a 64 caracteres, apenas com letras, dígitos, sublinhados, pontos e hifens. Aplicado após a descoberta. |
require_approval |
corda | Opcional; always |
always ou never. |
server_url não deve conter um nome de usuário, senha ou fragmento. Seu domínio deve ser resolvido para endereços públicos. Os nomes de cabeçalho devem ter de 1 a 128 caracteres e usar caracteres de nome de cabeçalho HTTP padrão. Os valores de cabeçalho devem conter apenas ASCII imprimível e ter no máximo 8.192 caracteres. Os seguintes cabeçalhos são proibidos:
Prefixes: mcp-, proxy-, x-forwarded-
Names: host, authorization, connection, content-length, transfer-encoding,
accept, content-type, forwarded, cookie, origin, upgrade, te, trailer
Cada adição ou atualização de configuração do MCP requer ambos server_label e server_url; fornecer apenas um rótulo não reutiliza uma configuração. Atualize a configuração do MCP somente quando não houver nenhuma resposta ativa.
server_url, authorizatione headers são usados apenas para a conexão do lado do servidor e não são ecoados em session.updated. Não reconstrua configurações de conexão confidenciais desse evento. Substitua o ponto final do espaço reservado e a credencial neste fragmento de configuração pelos detalhes do seu servidor MCP antes de enviá-lo através de uma conexão estabelecida:
{
"type": "session.update",
"session": {
"tools": [
{
"type": "mcp",
"server_label": "amap",
"server_url": "https://example.com/mcp",
"authorization": "Bearer ***",
"allowed_tools": ["maps_weather"],
"require_approval": "always"
}
]
}
}
resposta.criar
Diz ao serviço para gerar uma resposta de modelo. No modo VAD, as respostas são automáticas e você não precisa deste evento.
O serviço responde com response.created, em seguida, eventos de item e conteúdo (conversation.item.created, response.content_part.added) e finalmente response.done.
{
"type": "response.create",
"event_id": "event_1718624400000"
}
Tipo de evento. Sempre response.create.
resposta.cancelar
Cancela uma resposta em andamento. Retorna um erro se nenhuma resposta estiver em andamento.
{
"event_id": "event_B4o9RHSTWobB5OQdEHLTo",
"type": "response.cancel"
}
Tipo de evento. Sempre response.cancel.
entrada_audio_buffer.append
Acrescenta bytes de áudio ao buffer de entrada.
{
"event_id": "event_B4o9RHSTWobB5OQdEHLTo",
"type": "input_audio_buffer.append",
"audio": "UklGR..."
}
Tipo de evento. Sempre input_audio_buffer.append.
Os dados de áudio codificados em Base64.
entrada_audio_buffer.commit
Envia o buffer de áudio de entrada como uma mensagem do usuário. Retorna um erro se o buffer estiver vazio.
-
modo VAD: Automático. Você não precisa deste evento.
-
Modo manual: necessário para criar uma mensagem de usuário.
O envio do buffer não aciona uma resposta do modelo. O serviço responde com input_audio_buffer.committed.
Se você enviou um evento input_image_buffer.append, input_audio_buffer.commit envia o buffer de imagem junto com o buffer de áudio.
{
"event_id": "event_B4o9RHSTWobB5OQdEHLTo",
"type": "input_audio_buffer.commit"
}
Tipo de evento. Sempre input_audio_buffer.commit.
entrada_audio_buffer.clear
Limpa o buffer de áudio. O serviço responde com input_audio_buffer.cleared.
{
"event_id": "event_xxx",
"type": "input_audio_buffer.clear"
}
Tipo de evento. Sempre input_audio_buffer.clear.
input_image_buffer.append
Adiciona dados de imagem ao buffer de imagem a partir de arquivos locais ou fluxos de vídeo.
Limites:
-
Formato: JPG ou JPEG. Recomendado: 480p ou 720p. Máximo: 1080p.
-
Tamanho: ≤256 KB após codificação Base64 (recomendamos imagem raw abaixo de 190 KB).
-
Codificação: Base64.
-
Frequência: 1 imagem por segundo.
-
Pré-requisito: Enviar pelo menos um
input_audio_buffer.appendevento primeiro.O buffer de imagem é enviado com o buffer de áudio por meio do evento input_audio_buffer.commit.
{
"event_id": "event_xxx",
"type": "input_image_buffer.append",
"image": "xxx"
}
Tipo de evento. Sempre input_image_buffer.append.
Os dados de imagem codificados em Base64.
Conversa, item, criar.
Retorna o resultado da execução de uma função de ferramenta ao servidor. Depois que o modelo acionar uma chamada de ferramenta, execute a função da ferramenta localmente, envie o resultado de volta usando este evento e, em seguida, envie um response.create evento para acionar o modelo para gerar a resposta final.
Esta seção descreve function_call_output itens. Para Qwen3.8-Omni-Flash-Realtime Respostas de aprovação do MCP, consulte mcp_approval_response.
{
"event_id": "event_55099cddb51b4f208cb95d1a994eef80",
"type": "conversation.item.create",
"item": {
"id": "item_2a80d7682b4e473c9c2154da135041e9",
"type": "function_call_output",
"call_id": "call_62c24725afdb4c2680ac54",
"output": "The weather in Beijing today is changing from haze to clear, with a temperature of 4/-4°C and a light breeze."
}
}
Tipo de evento. Sempre conversation.item.create.
O item de conversa a ser criado.
O ID do item de conversa. O cliente pode especificar um ID para alinhar com o estado local. Se não for fornecido, o servidor gera um.
O tipo de item de conversa descrito aqui é `function_call_output`. Qwen3.8-Omni-Flash-Realtime também suporta [`mcp_approval_response`](#qwen38-mcp-approval-response).
Corresponde ao `call_id` retornou no `response.function_call_arguments.done` evento.
O resultado da execução da função da ferramenta.
<a id="qwen38-mcp-approval-response" />
Resposta de aprovação do MCP (Qwen3.8-Omni-Flash-Realtime)
Quando require_approval é always ou omitido, o servidor pode enviar mcp_approval_request. Responder com o existente conversation.item.create evento.
| Campo | Tipo | Obrigatório | Significado |
|---|---|---|---|
event_id |
corda | Não | ID de rastreamento gerado pelo cliente. |
type |
corda | Sim | conversation.item.create |
item |
objeto | Sim | Resposta de aprovação. |
item.type |
corda | Sim | mcp_approval_response |
item.approval_request_id |
corda | Sim | Exato item.id de um não tratado mcp_approval_request. |
item.approve |
booleano | Sim | true permite execução; false rejeita e a chamada entra failed. |
{
"event_id": "event_client_xxx",
"type": "conversation.item.create",
"item": {
"type": "mcp_approval_response",
"approval_request_id": "opaque_approval_id",
"approve": true
}
}
Para Qwen3.8-Omni-Flash-Realtime, session.updated não faz eco dos campos de credenciais ou de endpoint do MCP; veja o Qwen3.8 eventos do cliente.