function_call_output, e o pai continua a geração.
Uma resposta filha às vezes é chamada de subagente.
Neste guia, é apenas outra solicitação de Responses que executa uma tarefa focada.
Resposta pai
-> function_call spawn_subagent
-> seu aplicativo executa uma ou mais respostas filhas
-> resultados filhos retornados como function_call_output
-> resposta pai retoma a geração
Como o loop funciona
Neste padrão, a resposta pai pausa sempre que chamaspawn_subagent.
Seu aplicativo executa as tarefas delegadas e depois retoma o pai com os resultados.
- Crie uma resposta pai com uma ferramenta de função
spawn_subagent. - Quando o modelo chamar a ferramenta, analise os argumentos de cada chamada de ferramenta.
- Execute uma ou mais solicitações de Responses filhas para realizar as tarefas delegadas.
- Aguarde todas as respostas filhas terminarem.
- Retorne cada resultado filho como
function_call_outputusando ocall_idcorrespondente. - Retome a resposta pai com
previous_response_id. - Repita até que o pai produza uma
messagenormal do assistente.
Defina uma ferramenta para delegação
Mantenha a ferramenta focada. Passe apenas os campos que a resposta filha precisa.tool_choice: "auto" quando o modelo deve decidir quando delegar.
Use tool_choice: "required" quando toda rodada deve passar por uma ferramenta.
Receita do SDK TypeScript
Este exemplo usasdk.llm.responses.create tanto para as respostas pai quanto para as filhas.
Ele permite que o pai emita múltiplas chamadas spawn_subagent em uma rodada.
Seu aplicativo executa essas respostas filhas em paralelo, aguarda todas terminarem e então retoma o pai uma vez com todos os resultados das ferramentas.
Mantenha cada resultado filho pequeno para que o pai possa usá-lo na próxima rodada sem consumir muito contexto.
Distribua e aguarde todas as respostas filhas
Quandoparallel_tool_calls é true, o pai pode emitir vários itens function_call em uma rodada.
Trate esse conjunto de chamadas de ferramentas como um lote.
Inicie todas as respostas filhas, aguarde todas terminarem e só então retome o pai.
Isso cria uma barreira:
- A resposta pai emite vários itens
function_call. - Seu aplicativo inicia várias respostas filhas.
- Seu aplicativo aguarda todas as respostas filhas serem concluídas.
- Seu aplicativo envia todos os itens
function_call_outputde volta em uma solicitação de acompanhamento. - A resposta pai continua com o conjunto completo de resultados delegados.
X-On-Behalf-Of nas solicitações pai e filhas.
Se uma resposta filha puder demorar mais, você pode definir background: true na solicitação filha e fazer polling com sdk.llm.responses.get até que ela seja concluída.
Quando você distribuir para várias respostas filhas, aguarde até que todos os resultados estejam disponíveis antes de retomar a resposta pai.
Solicitação bruta de Responses para o passo de retomada
A transferência crítica é a solicitação de acompanhamento. Você passa todos os resultados das ferramentas eminput e aponta para a rodada anterior do pai com previous_response_id.
bash
X-On-Behalf-Of.
Tratamento básico de erros e recuperação
Em sistemas reais, esse loop falhará às vezes. Falhas comuns incluem argumentos de ferramentas malformados, timeouts em solicitações filhas, erros 5xx ascendentes, limites de taxa e saídas filhas muito fracas para serem úteis. O padrão mais seguro é:- Analise os argumentos das ferramentas de forma defensiva.
- Retente falhas transitórias de solicitações filhas algumas vezes com backoff.
- Retorne um payload estruturado de falha ao pai em vez de travar todo o lote quando uma filha falhar.
- Mantenha os resultados das filhas pequenos e explícitos para que o pai possa decidir se continua, retenta ou responde com resultados parciais.
background: true mais polling.
A lógica de recuperação permanece a mesma: aguarde a filha atingir um estado terminal, depois retorne um payload de sucesso ou um payload estruturado de falha ao pai.
Limites práticos
- Mantenha
parallel_tool_callsdefinido comotruequando o pai deve poder delegar várias respostas filhas em uma rodada. - Defina
parallel_tool_callscomofalseapenas quando as respostas filhas compartilharem estado ou precisarem ser executadas em ordem. - Defina
max_tool_callspara que uma resposta pai não possa entrar em loop infinito. - Mantenha as saídas das filhas compactas para que o pai possa incorporar o resultado sem consumir muito contexto.
- Mantenha
store: trueenquanto constrói o fluxo de trabalho para poder inspecionar respostas pai e filhas depois. - Use a página de itens de entrada de Responses na Referência da API quando precisar depurar os itens exatos enviados de volta ao modelo.