function_call_output, e o pai continua a geração.
Uma resposta filha às vezes é chamada de subagente.
Neste guia, ela é apenas outra solicitação 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 então 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 Responses filhas para realizar as tarefas delegadas.
- Aguarde a conclusão de todas as respostas filhas.
- 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.
Definir uma ferramenta para delegação
Mantenha a ferramenta focada. Passe apenas os campos de que a resposta filha precisa.tool_choice: "auto" quando o modelo deve decidir quando delegar.
Use tool_choice: "required" quando cada turno 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 várias chamadas spawn_subagent em um único turno.
Seu aplicativo executa essas respostas filhas simultaneamente, aguarda a conclusão de todas elas e então retoma o pai uma vez com cada resultado de ferramenta.
Mantenha cada resultado filho pequeno para que o pai possa usá-lo no próximo turno sem consumir muito contexto.
Distribuir e aguardar todas as respostas filhas
Quandoparallel_tool_calls é true, o pai pode emitir vários itens function_call em um único turno.
Trate esse conjunto de chamadas de ferramenta como um lote.
Inicie todas as respostas filhas, aguarde a conclusão de todas e só então retome o pai.
Isso cria uma barreira:
- A resposta pai emite muitos itens
function_call. - Seu aplicativo inicia muitas respostas filhas.
- Seu aplicativo aguarda a conclusão de todas as respostas filhas.
- 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 filha.
Se uma resposta filha puder demorar mais, você poderá definir background: true na solicitação filha e consultar com sdk.llm.responses.get até que ela seja concluída.
Quando distribuir para várias respostas filhas, aguarde até que todos os resultados filhos estejam disponíveis antes de retomar a resposta pai.
Solicitação Responses bruta para a etapa de retomada
A transferência crítica é a solicitação de acompanhamento. Você passa cada resultado de ferramenta de volta eminput e aponta para o turno pai anterior com previous_response_id.
bash
X-On-Behalf-Of.
Tratamento básico de erros e recuperação
Em sistemas reais, este loop às vezes falhará. Falhas comuns incluem argumentos de ferramenta malformados, tempos limite de solicitação filha, erros upstream 5xx, limites de taxa e saídas filhas fracas demais para serem úteis. O padrão mais seguro é:- Analise os argumentos da ferramenta de forma defensiva.
- Tente novamente falhas transitórias de solicitações filhas um pequeno número de vezes com recuo.
- Retorne uma carga estruturada de falha ao pai em vez de interromper todo o lote quando um filho falhar.
- Mantenha os resultados filhos pequenos e explícitos para que o pai possa decidir se deve continuar, tentar novamente ou responder com resultados parciais.
background: true e consulta.
A lógica de recuperação permanece a mesma: aguarde o filho alcançar um estado terminal e, em seguida, retorne ao pai uma carga de sucesso ou uma carga estruturada de falha.
Limites práticos
- Mantenha
parallel_tool_callsdefinido comotruequando o pai deve poder delegar várias respostas filhas em um único turno. - Defina
parallel_tool_callscomofalseapenas quando as respostas filhas compartilham estado ou precisam ser executadas em ordem. - Defina
max_tool_callspara que uma resposta pai não possa entrar em loop para sempre. - Mantenha as saídas filhas compactas para que o pai possa incorporar o resultado sem consumir muito contexto.
- Mantenha
store: trueenquanto cria o fluxo de trabalho para que você possa inspecionar posteriormente as respostas pai e filha. - Use a página de itens de entrada Responses na Referência da API quando precisar depurar os itens exatos enviados de volta ao modelo.