O GPT-Live delega o raciocínio e o uso de ferramentas a um backend enquanto gerencia a conversa por voz. O trabalho no backend pode ser executado pelo modelo Responses configurado ou, com a delegação pelo cliente, por qualquer modelo, agente ou serviço operado pelo seu aplicativo. Em ambos os modos, seu aplicativo é responsável pelas permissões, confirmações, registros de negócio e estado das tarefas.
Saiba mais sobre como orientar o modelo em tempo real para delegação e uso de ferramentas no guia de criação de prompts.
Escolha um modo de delegação
Com a delegação via Responses, o GPT-Live chama o modelo Responses que você escolher, fornece o contexto da conversa e retorna os resultados do backend à conversa em tempo real. Com a delegação pelo cliente, seu aplicativo prepara o contexto, executa um agente ou fluxo de trabalho e envia os resultados de volta ao GPT-Live.
Comece pela delegação via Responses quando o fluxo de trabalho gerenciado atender às suas necessidades. Escolha a delegação pelo cliente quando precisar de mais controle sobre o contexto do backend, a execução ou os resultados retornados ao GPT-Live.
| Critério | Prefira a delegação via Responses quando… | Prefira a delegação pelo cliente quando… |
|---|---|---|
| Esforço de implementação | Você quer que o GPT-Live prepare as requisições ao backend, gerencie as conexões e retorne os resultados à conversa. | Você quer criar e operar esses componentes por conta própria. |
| Revisão dos resultados do backend | A saída do backend pode retornar diretamente ao GPT-Live. | Seu aplicativo precisa validar, ocultar informações, combinar ou descartar resultados antes que cheguem ao GPT-Live. |
| Capacidades do backend | As configurações e ferramentas do Responses compatíveis com o GPT-Live atendem ao seu fluxo de trabalho. | Você precisa de outro backend, de vários modelos ou de capacidades da API que vão além da configuração gerenciada. |
| Controle do contexto | O contexto da conversa fornecido pelo GPT-Live atende ao seu aplicativo. | Você precisa escolher exatamente quais informações de histórico, memória e estado do aplicativo cada requisição ao backend recebe. |
| Política de execução | Um modelo configurado e um ciclo de uso de ferramentas atendem à tarefa. | Você precisa de roteamento personalizado entre código e modelos, alternativas em caso de falha, pontos de verificação ou orçamentos entre as etapas do backend. |
Por exemplo, um assistente de viagens pode enviar perguntas sobre o status de voos a um serviço de companhia aérea e alterações de itinerário a um agente de planejamento separado. O aplicativo escolhe qual backend chamar e qual resultado verificado retornar ao GPT-Live.
Em ambos os modos, seu aplicativo gerencia o estado das tarefas e aplica as permissões e confirmações obrigatórias antes de executar suas ferramentas personalizadas. Revisar os resultados do backend é uma decisão separada: isso não aprova cada palavra dita pelo GPT-Live nem garante silêncio durante a validação. Consulte Controle a reprodução quando necessário.
A delegação pelo cliente também exige que seu aplicativo mantenha o contexto da conversa. O evento de delegação contém metadados, não o texto da tarefa; use os eventos de transcrição e o estado do aplicativo para preparar a requisição ao backend.
Compare a latência, o sucesso das tarefas e o custo com sua própria carga de trabalho ao avaliar seu agente de voz. Para obter orientações específicas para sua arquitetura atual, consulte Migre para o GPT-Live.
Escolha o modo ao criar a sessão; para mudar de modo, inicie uma nova sessão.
Configure a delegação via Responses
Adicione esta configuração de delegação ao criar sua sessão Live. Escolha o modelo do Responses independentemente do modelo de voz:
export const session = {
model: "gpt-live-1",
delegation: {
type: "responses",
responses: {
model: "gpt-5.6-terra",
instructions: "[Your backend prompt]",
},
},
};Comece com o GPT-5.6 Terra ou experimente o GPT-5.6 Luna para cargas de trabalho sensíveis ao custo. Compare a qualidade das respostas e a latência nas suas tarefas antes de escolher um modelo de backend.
Registre as ferramentas compatíveis em delegation.responses.tools. Use delegation.responses.tool_choice para controlar quais ferramentas o backend pode usar: "auto" permite que ele escolha, "required" exige uma chamada de ferramenta e "none" impede chamadas de ferramenta. Você também pode selecionar uma função pelo nome. Defina delegation.responses.parallel_tool_calls como true para permitir consultas independentes em paralelo ou como false quando as chamadas precisarem ser executadas sequencialmente. Seu aplicativo continua responsável por executar suas funções personalizadas e garantir o cumprimento das dependências e aprovações. Essas configurações não obrigam o modelo ao vivo a delegar.
A configuração do Responses exige um model de backend na criação. Ela aceita definições de function e entradas de web_search em tools. Também disponibiliza max_output_tokens (no mínimo 16, quando definido), service_tier e as configurações de reasoning e text compatíveis com o modelo de backend selecionado. Consulte Reduza a latência do backend para conhecer as configurações que você pode ajustar.
Se o modo Fast estiver disponível para seu modelo e projeto, considere usá-lo em chamadas sensíveis à latência. Para o GPT-Live, selecione-o com delegation.responses.service_tier: "priority".
À medida que a conversa muda, envie session.update com alterações em session.delegation.responses para atualizar o modelo de backend, as instruções, as ferramentas disponíveis, tool_choice ou outras configurações compatíveis sem iniciar uma nova sessão Live. As configurações omitidas mantêm seus valores. Definir delegation como null seleciona o modo cliente e não permite redefinir uma sessão Responses em execução; a tentativa de alternar entre modos falha com immutable_field_update.
Essas configurações usam conceitos conhecidos do Responses, mas o Live oferece suporte a um subconjunto da API Responses independente. O Live fornece o contexto da conversa e inicia o trabalho delegado. Configure o backend pela sessão; o comando response.create do Live usa essa configuração e não aceita um corpo de requisição da API Responses independente.
Direcione a conversa ao vivo pelo seu aplicativo
A delegação via Responses gerencia o fluxo de trabalho do backend, mas seu aplicativo ainda pode enviar contexto diretamente ao modelo GPT-Live. Se você monitorar a chamada por um WebSocket auxiliar ou pela conexão principal de eventos, poderá usar session.instructions.append, session.thinking.append ou session.commentary.append com delegation_id: null. Por exemplo, uma proteção baseada na transcrição pode acrescentar uma instrução para redirecionar a conversa. Isso direciona o modelo ao vivo; não altera o prompt do backend do Responses nem cancela o trabalho já em andamento.
Processe a delegação via Responses
Para trabalho executado pelo Responses, session.delegation.created contém target: "responses" e um response_id. Os eventos subsequentes do Responses chegam dentro de um envelope response.event:
{
"type": "response.event",
"event_id": "event_response_1",
"delegation_id": "item_9tA2cB6n2V8c4X1z7Q5r9",
"event": {
"type": "response.output_text.delta",
"sequence_number": 4,
"item_id": "msg_123",
"output_index": 0,
"content_index": 0,
"delta": "The forecast is",
"logprobs": []
}
}Encaminhe os eventos com base em envelope.event.type e preserve o delegation_id externo. Não trate todo valor response.* de nível superior como um evento do Responses sem envelope. Aceite eventos aninhados adicionais do ciclo de vida do Responses.
A fala ao vivo e o trabalho delegado continuam de forma independente. Uma resposta concluída pelo backend não significa, por si só, que o usuário ouviu a resposta. Use a transcrição de saída e o áudio do Live para a parte falada da interação.
Conclua uma chamada de função executável pelo cliente
Leia as chamadas de função concluídas nos eventos aninhados response.output_item.done. O item de função finalizado contém call_id, name e arguments; um evento de conclusão dos argumentos, por si só, não é suficiente para identificar a chamada.
Acompanhe o ID da resposta do evento aninhado response.created junto com o delegation_id externo e colete as chamadas de função dessa resposta em response.output_item.done. Os snapshots encaminhados do ciclo de vida contêm deliberadamente response.output: [], inclusive em response.completed; o array tools está vazio, instructions é null e input é omitido. Uma lista de saída final vazia não significa que não há chamadas de função pendentes. Use as chamadas coletadas para determinar quais resultados devem ser enviados antes de continuar.
Depois de executar a operação autorizada, acrescente o resultado como um item do Responses:
export function sendUpdate(connection) {
connection.send({
type: "response.item.create",
event_id: "tool_result_1",
item: {
type: "function_call_output",
call_id: "call_123",
output: '{"status":"confirmed","order_id":"order_123"}',
},
});
}Em seguida, continue explicitamente a resposta:
export function sendUpdate(connection) {
connection.send({
type: "response.create",
event_id: "continue_1",
});
}Envie todos os resultados necessários das chamadas de ferramenta pendentes antes de continuar. Acrescentar o resultado de uma função não dá continuidade automática à resposta. response.item.create não tem uma confirmação de sucesso separada; continue processando os erros e os eventos aninhados subsequentes do ciclo de vida da resposta.
response.create é um comando do Live para criar ou continuar trabalho delegado ao Responses, usando o backend configurado na sessão. Não anexe a esse evento um corpo de requisição de criação da API Responses, uma substituição do modelo de backend ou delegation_id. Ambos os comandos exigem delegação via Responses.
Configure a delegação ao cliente
Defina delegation ao criar sua sessão Live:
export const session = {
model: "gpt-live-1",
delegation: {
type: "client",
},
};Isso seleciona a delegação ao cliente para a sessão. Configure o backend separadamente: seu aplicativo escolhe o modelo ou serviço, as instruções, as ferramentas e como encaminhar o trabalho. Se você usar a API Responses nesse backend, defina o modelo e as ferramentas nas suas próprias requisições ao Responses. A sessão Live não configura nem executa essas ferramentas do backend.
Quando o GPT-Live solicita ajuda, seu aplicativo monta a requisição ao backend com base no contexto da conversa e do aplicativo, executa o trabalho e decide quais resultados retornar. Garanta o cumprimento das permissões e das confirmações obrigatórias antes de executar suas ferramentas. Mantenha o histórico completo da conversa no seu aplicativo para fornecer o contexto relevante a cada requisição ao backend.
Mantenha o contexto da conversa no seu aplicativo
Na delegação ao cliente, colete as transcrições e mantenha o estado atual da tarefa por conta própria.
Monitore session.input_transcript.delta e session.output_transcript.delta. Esses eventos contêm o texto da transcrição em delta, junto com os registros de tempo start_ms e end_ms. Mantenha histórico suficiente para entender respostas curtas como “sim”, correções como “quinta-feira, não sexta-feira” e detalhes fornecidos anteriormente. Um fragmento de transcrição não equivale a um turno completo do usuário, e as transcrições podem conter erros.
O evento separado session.delegation.created contém um registro de tempo offset_ms e metadados de delegação, incluindo delegation.id e delegation.target. Ele não contém a fala do usuário nem o texto da tarefa. Use os eventos de transcrição e o estado do aplicativo para entender o que o usuário quer. Salve delegation.id para associar as atualizações a essa solicitação.
Mantenha registros longos e a saída completa das ferramentas no backend. Se você criar uma sessão substituta, restaure o contexto relevante a partir do seu aplicativo e verifique quais ações já foram executadas antes de repetir qualquer trabalho.
Receba uma delegação ao cliente
session.delegation.created identifica uma delegação:
{
"type": "session.delegation.created",
"event_id": "event_delegation",
"offset_ms": 1000,
"delegation": {
"id": "item_9tA2bF3h7K9m2P5q8R1s4",
"type": "delegation",
"target": "client"
}
}Leia event.delegation.id. O objeto de delegação contém metadados, não o texto da tarefa. Mantenha a transcrição e o contexto da aplicação necessários para seu próprio processador de trabalho delegado. Os IDs atuais têm o prefixo item_, como ilustrado aqui; trate o ID completo como opaco e retorne-o sem alterações, em vez de construir um ID ou analisar sua estrutura.
Retorne um resultado usando esse ID:
export function sendUpdate(connection) {
connection.send({
type: "session.commentary.append",
event_id: "result_123",
delegation_id: "item_9tA2bF3h7K9m2P5q8R1s4",
content: "The order shipped today and should arrive tomorrow.",
});
}Use session.thinking.append para adicionar informações ao raciocínio interno do modelo sem que sejam faladas em voz alta no momento da adição. Use session.commentary.append para um resultado que o modelo deve falar em voz alta; o modelo é treinado para parafrasear o texto adicionado. Todas as adições contêm uma string simples e exigem delegation_id, inclusive quando seu valor é null. Um ID não nulo deve identificar uma delegação ao cliente conhecida.
Adições sucessivas de resultados podem dar continuidade à mesma delegação ao cliente. A confirmação da adição chega após o momento estimado de injeção do contexto; ela não comprova que o modelo consumiu ou falou o resultado, nem que uma ação externa foi concluída com sucesso.
Comece com seu prompt de backend existente
Use seu prompt de agente de texto existente como ponto de partida. Mantenha as instruções de tarefa e as regras de negócio no backend e adapte as instruções que pressupõem um chat de texto ou controle direto da fala. Explique como lidar com transcrições de voz e retornar resultados úteis. Faça sua aplicação cumprir as permissões e exigir as confirmações necessárias.
## Voice conversation context
You are helping an assistant in a live voice conversation. Transcripts
can contain mistakes, unfinished phrases, and later corrections. Use
the latest context and verified records. If a needed detail is still
unclear, ask for that detail instead of guessing.
## Task instructions
[Your task instructions, business rules, available tools,
and confirmation requirements.]
## Return the result
Return the relevant facts, whether the task is complete, and what comes next.
Use confirmed values. Do not invent a successful action.Mantenha no backend os grandes volumes de dados estruturados, as saídas extensas de ferramentas e o Markdown destinado à exibição. Forneça ao GPT-Live os fatos relevantes e deixe que ele escolha como comunicá-los. Um resultado conciso de ferramenta não precisa de uma chamada adicional ao modelo para ser reescrito para fala.
Com a delegação ao cliente, retorne o resultado diretamente ao GPT-Live. Com a delegação ao Responses, siga o fluxo de resultados de funções para continuar o trabalho no backend.
Os exemplos de eventos do SDK abaixo usam connection, uma conexão WebSocket principal do Live ou uma conexão sideband já estabelecida, conforme os guias de conexão. Chame a função auxiliar após session.started em uma conexão principal; uma conexão sideband vinculada já pertence a uma sessão em execução.
Envie o tipo certo de atualização
Escolha um evento com base em como o GPT-Live deve usar o conteúdo:
| O que você quer enviar | Evento |
|---|---|
| Instruções de nível de sistema para o modelo ao vivo, como uma saudação, um aviso de transparência ou uma orientação para parar de falar | session.instructions.append |
| Informações para raciocínio interno, que não são faladas ao serem adicionadas, mas podem ser usadas em perguntas relevantes do usuário | session.thinking.append |
| Informações que o modelo deve falar em voz alta, parafraseando o texto adicionado | session.commentary.append |
Os três usam content como uma string simples, com limite de 500 tokens por adição. Inclua delegation_id: use o ID original da delegação ao cliente para uma atualização sobre essa tarefa, ou null para contexto geral da sessão. Um ID não nulo deve identificar uma delegação ao cliente conhecida. As instruções continuam se aplicando à sessão ao vivo; um ID não as transforma em um prompt de backend separado.
Uma instrução adicionada pode interromper a fala ou o comportamento atual do modelo. Use-a quando a aplicação precisar redirecionar a conversa; aplique no estado da aplicação qualquer bloqueio relacionado a ferramentas ou ações.
Para atualizar o progresso sem falar em voz alta durante uma tarefa gerenciada pelo cliente:
export function sendUpdate(connection) {
connection.send({
type: "session.thinking.append",
event_id: "availability_progress",
delegation_id: "item_123",
content: "Checking Thursday availability. No appointment has been booked.",
});
}Para uma reserva confirmada, envie o resultado que o usuário deve ouvir:
export function sendUpdate(connection) {
connection.send({
type: "session.commentary.append",
event_id: "appointment_result",
delegation_id: "item_123",
content: "Your appointment is confirmed for Thursday at 2:00 PM",
});
}Envie esse resultado somente depois que a reserva tiver sido efetivamente realizada. Para uma instrução que se aplique à sessão inteira, use session.instructions.append com delegation_id: null.
Por exemplo, depois que sua aplicação bloquear uma solicitação com base em seus mecanismos de proteção, você pode redirecionar a conversa:
export function sendUpdate(connection) {
connection.send({
type: "session.instructions.append",
event_id: "guardrail_block_17",
delegation_id: null,
content:
"Stop speaking about that request. Briefly explain that you cannot help with it, then wait for the user.",
});
}A instrução não cancela o trabalho no backend. Bloqueie a ação afetada e gerencie qualquer trabalho já em execução na sua aplicação.
As confirmações correspondentes são session.thinking.appended, session.commentary.appended e session.instructions.appended. Associe o client_event_id dessas confirmações ao event_id que você enviou. A confirmação aguarda o momento estimado de injeção do contexto, não o término da fala ou da reprodução. Consulte quando o contexto chega ao modelo para saber mais sobre os tempos e o tratamento de erros.
O contexto que não é falado ainda pode afetar o que o modelo diz depois. Ele não é um espaço privado para segredos ou raciocínio oculto. Envie fatos úteis e resumos breves do progresso.
Mantenha as atualizações precisas e úteis
Durante tarefas mais longas, envie uma atualização quando houver uma mudança relevante: uma etapa terminar, um atraso importar ou o usuário precisar responder a uma pergunta.
Use session.thinking.append para atualizações de progresso em segundo plano no modo cliente. Use session.commentary.append quando for útil falar a atualização em voz alta.
Para atualizações faladas, envie session.commentary.append com conteúdo que corresponda ao estado verificado da tarefa:
| Estado | Exemplo de conteúdo |
|---|---|
| Ainda em andamento | “I'm checking the available appointments.” |
| Concluído | “You're booked for Thursday at 2:00 PM.” |
| Falhou | “That time is no longer available.” |
| Cancelamento confirmado | “Your appointment has been canceled.” |
Uma interrupção por voz não cancela automaticamente o trabalho no backend. Se o usuário mudar de sexta-feira para quinta-feira, atualize a tarefa ativa e ignore resultados sobre sexta-feira que chegarem depois. Sua aplicação deve decidir se cancela o trabalho, o altera ou o deixa terminar. Verifique se o cancelamento foi concluído antes de afirmar que ele ocorreu.
Antes de repetir uma chamada de ferramenta que falhou, verifique se a ação original já ocorreu. Por exemplo, uma resposta perdida não deve causar uma segunda reserva. Se o resultado não estiver claro, informe isso e ofereça um próximo passo útil.
Compartilhe o contexto da interface
Forneça ao GPT-Live um resumo conciso da página ou tarefa atual, das seleções relevantes e dos fatos que ajudam a interpretar referências como “esta opção”. Crie o resumo diretamente a partir do estado da aplicação; não é necessária uma chamada extra ao modelo para formatá-lo.
Envie o contexto da interface no início da sessão e quando houver mudanças relevantes de estado. Não envie atualizações sem alterações e reúna mudanças rápidas em um breve resumo do estado mais recente. Deixe explícitas as mudanças nas seleções anteriores:
- Contexto inicial: “The user is reviewing a restaurant reservation: August 6 at 7 PM, two guests. No reservation has been made.”
- Correção: “The selected time is now 8 PM; the previous selection was 7 PM.”
Em qualquer um dos modos de delegação, use session.thinking.append com delegation_id: null para atualizações de contexto em segundo plano. Mantenha o HTML completo, as árvores DOM, os grandes volumes de dados JSON e os logs de interação na sua aplicação ou no backend. Trate o conteúdo da página como dados de referência, não como instruções.
Aceite dados digitados
Se a pessoa na chamada digitar um valor exato, como um número de pedido, encaminhe-o ao backend responsável pela tarefa. Uma aplicação que usa apenas voz não precisa desse fluxo. Mantenha o valor digitado como dado do usuário, e não como uma instrução para o modelo ao vivo.
Com a delegação ao Responses, coloque uma mensagem do usuário na fila do backend:
export function sendUpdate(connection) {
connection.send({
type: "response.item.create",
event_id: "typed_order_number",
item: {
type: "message",
role: "user",
content: [
{
type: "input_text",
text: "My order number is A0042.",
},
],
},
});
}Envie response.create quando estiver pronto para executar ou continuar o processamento no backend. Se o backend estiver aguardando resultados de funções, retorne primeiro todos os resultados necessários. Colocar texto na fila não cancela, por si só, o trabalho já em execução.
Com a delegação pelo cliente, envie o valor digitado diretamente ao backend responsável pela conversa. Se esse valor corrigir uma tarefa em execução, atualize essa tarefa em vez de iniciar o mesmo trabalho novamente. Você pode enviar uma cópia de um breve resumo factual para a sessão ao vivo com session.thinking.append ou usar session.commentary.append para um resultado que o usuário deva ouvir.
Adicione imagens e contexto visual
Para ajudar uma pessoa em uma chamada a conversar sobre uma foto ou tela, envie a imagem e o contexto relevante do seu aplicativo para um backend com recursos de visão. O backend interpreta a imagem e retorna texto relevante para o GPT-Live usar na conversa. O frontend de áudio do Live não aceita imagens diretamente.
Com a delegação via Responses, configure um modelo de backend com recursos de visão. Coloque na fila um item de entrada de imagem compatível com Responses usando response.item.create e, em seguida, envie response.create para executar ou retomar o trabalho no backend. Retorne todos os resultados de funções pendentes necessários antes de continuar. Consulte Como lidar com a delegação via Responses.
Com a delegação pelo cliente, envie a entrada visual ao backend que processa as solicitações delegadas, junto com a conversa e o estado do aplicativo relevantes. Retorne conclusões concisas usando o fluxo de resultados do cliente.
Mantenha a entrada de imagens do backend separada de session.input, que fornece o histórico de texto ao frontend do Live na inicialização. Consulte Imagens e visão para saber quais formatos de imagem são aceitos e quais são as limitações dos modelos.
Reduza a latência do backend
Reduza o tempo entre uma solicitação de trabalho ao backend e um resultado útil para a conversa. Meça a latência em cada etapa para localizar atrasos. Compare o tempo até uma resposta falada útil e o sucesso das tarefas nos mesmos cenários. Consulte o Cookbook de avaliação de agentes de voz para obter orientações de avaliação.
Delegação via Responses
O Live gerencia conexões WebSocket persistentes com Responses, prepara antecipadamente a conexão e a configuração já conhecida da solicitação e reutiliza o estado de respostas anteriores quando disponível. Você não precisa implementar essas etapas para o backend hospedado. A reutilização depende da conexão ativa e de um estado compatível; ela não garante um acerto de cache nem uma latência específica.
Ajuste o backend por meio de delegation.responses:
model: escolha o modelo responsável pelo raciocínio e pela seleção de ferramentas independentemente do modelo de voz.reasoning.effort: equilibre o tempo de raciocínio e a qualidade da tarefa usando valores compatíveis com esse modelo.service_tier: useauto,default,flexoupriority, conforme o suporte do modelo e o acesso do projeto.autosegue a configuração do projeto. Avalie o desempenho e o custo do nível escolhido.
Atualize as configurações compatíveis durante a sessão com session.update. Suas ferramentas personalizadas continuam sendo executadas no seu aplicativo, portanto chamadas lentas a serviços, filas e armazenamento de resultados de ferramentas em buffer podem atrasar a resposta mesmo quando o Live gerencia a conexão com Responses. Retorne prontamente cada resultado de ferramenta necessário e continue a resposta do backend.
Delegação pelo cliente
Seu aplicativo é responsável por todo o fluxo, desde o recebimento da delegação até o retorno de um resultado. Prepare esse fluxo enquanto a sessão de voz estiver em andamento:
- Reutilize as conexões do backend. Mantenha o cliente da API e seu pool de conexões ativos entre as delegações. Para chamadas repetidas a Responses, considere uma conexão WebSocket de Responses persistente.
- Prepare a configuração já conhecida. Inicialize instruções, ferramentas e conexões antes que a primeira solicitação precise delas. O modo WebSocket de Responses também permite preparar antecipadamente o estado já conhecido da solicitação antes da geração; siga as orientações de configuração.
- Transmita resultados úteis de forma incremental. Retorne trechos coerentes e verificados com
session.commentary.append. Usesession.thinking.appendpara informar o progresso sem anunciá-lo em voz alta. Preserve o ID da delegação pelo cliente e o limite de 500 tokens por adição. Mantenha o raciocínio privado no backend e confirme as ações antes de anunciar o sucesso. - Mantenha estáveis as entradas reutilizáveis. Preserve as instruções, as definições e a ordem das ferramentas e os prefixos do histórico que não mudaram. Acrescente novas informações após o conteúdo reutilizável quando seu backend oferecer suporte a cache e continuação.
- Evite o armazenamento desnecessário em buffer. Encaminhe um resultado útil assim que estiver pronto. Armazene em buffer apenas o suficiente para classificar a saída e formar um trecho coerente. Prefira metadados estruturados de fase; se usar prefixos de texto para distinguir progresso de resultados, espere o prefixo completo antes de encaminhar o texto.
Meça o tempo até a primeira resposta falada útil ao comparar esse fluxo com a delegação via Responses.
Reaja a fragmentos de transcrição
O processamento de fragmentos de transcrição no seu aplicativo é opcional e funciona com qualquer um dos modos de delegação. Os fragmentos de transcrição do usuário e do assistente chegam por WebSocket ou pelo canal de dados WebRTC. Você pode processá-los com a lógica do aplicativo ou com um modelo leve para iniciar o trabalho antes da chegada de um evento de delegação, ou usar a própria transcrição para acionar trabalho sob responsabilidade do aplicativo.
Use esse padrão para:
- Reduzir a espera. Inicie uma consulta especulativa quando houver informações suficientes, por exemplo, verificando a disponibilidade enquanto o usuário continua descrevendo suas preferências.
- Executar mecanismos de proteção. Verifique a transcrição à medida que ela avança para identificar solicitações ou respostas que precisem de intervenção. Consulte Aplique mecanismos de proteção à conversa.
- Adaptar a conversa. Identifique expressões que sugiram confusão ou frustração e, em seguida, ajuste a experiência ou envie uma instrução específica.
- Atualizar a interface. Destaque controles relevantes, preencha os campos sugeridos ou mostre os resultados à medida que ficarem disponíveis.
Para aplicativos de navegador, use o canal de dados WebRTC para legendas e atualizações locais da interface. Quando o processamento da transcrição ocorrer no seu servidor, seja para mecanismos de proteção, verificações com modelos leves ou chamadas especulativas de ferramentas, use um WebSocket de canal lateral para receber eventos e orientar diretamente a mesma sessão do GPT-Live.
Processe o texto acumulado quando chegarem novas informações relevantes. Um fragmento pode estar incompleto, e falas posteriores podem alterar a solicitação. Descarte resultados desatualizados, coordene o processamento com o trabalho delegado subsequente para evitar ações duplicadas e aplique suas verificações habituais de permissão e confirmação antes de ações com consequências relevantes.
Para enviar informações de volta à conversa:
| Intenção | Evento |
|---|---|
| Alterar o comportamento do modelo ao vivo ou redirecionar a conversa | session.instructions.append |
| Fornecer contexto sem anunciá-lo em voz alta para as respostas seguintes | session.thinking.append |
| Fornecer informações que o modelo deve dizer em voz alta | session.commentary.append |
Para atualizações fora de uma delegação pelo cliente, use delegation_id: null. Essas adições orientam o modelo ao vivo; seu aplicativo controla as alterações na interface, a execução de ferramentas e o cancelamento. Consulte Envie o tipo certo de atualização para ver exemplos de adições.
Otimizações compartilhadas
Os dois modos de delegação se beneficiam das mesmas melhorias no backend:
- Escolha o modelo e o esforço de raciocínio adequados à tarefa. Compare configurações que atendam aos seus requisitos de precisão. Use um esforço de raciocínio menor quando ele permitir concluir a tarefa de forma confiável.
- Mantenha as respostas concisas. Retorne os fatos e o status de que o GPT-Live precisa para continuar a conversa. Evite explicações longas e chamadas extras ao modelo apenas para reescrever os resultados para a fala.
- Reduza os atrasos das ferramentas e as chamadas desnecessárias. Inicie o trabalho autorizado quando as entradas estiverem prontas, reutilize os resultados enquanto permanecerem válidos e evite repetir uma consulta já concluída.
- Execute trabalhos independentes simultaneamente. Chamadas de consulta independentes podem ser executadas juntas. Respeite as dependências e as confirmações necessárias para as ações.
parallel_tool_callspermite que um modelo solicite várias chamadas; seu aplicativo continua responsável por agendar e executar suas funções personalizadas.
Consulte Otimização de latência para obter orientações gerais sobre Responses e Cache de prompts para saber como reutilizar entradas estáveis.
Verifique a interação completa
Teste tanto o estado do aplicativo que serve como fonte de verdade quanto o áudio reproduzido pelo cliente. Uma resposta do backend pode ser concluída enquanto a fala do resultado é interrompida, e uma confirmação de contexto indica aceitação, não reprodução. Mantenha os IDs de operação e as revisões de tarefas separados dos IDs de delegação para que reconexões, novas tentativas e resultados atrasados não repitam nem revertam uma ação.
Use Avaliação de agentes de voz para realizar testes repetíveis. Para um ciclo de ferramentas Realtime ou um backend encadeado já existente, siga Migre para o GPT-Live.