Pular para o conteúdo principal
Use este padrão quando um modelo fazendo toda a pesquisa em uma única resposta começar a atingir os limites de contexto. Em vez de permitir que uma resposta consuma diretamente cada resultado de web_search, use uma resposta pai para delegar tarefas de pesquisa focadas para respostas filhas. Cada filho realiza suas próprias buscas e retorna um memorando compacto. O pai consome apenas esses memorandos, o que permite que o fluxo de trabalho geral pesquise de forma muito mais agressiva sem sobrecarregar o contexto do pai. Esta é uma versão especializada do padrão geral de subagente. Aqui, o pai é um orquestrador de pesquisa e os filhos são trabalhadores de pesquisa. Fluxo de pesquisa profunda -> resposta pai planeja a pesquisa -> pai chama spawn_subagent várias vezes -> seu app executa respostas filhas com web_search -> filhos retornam memorandos de pesquisa compactos -> seu app envia todos os memorandos filhos de volta como function_call_output -> pai retoma, decide se faz outra rodada, então responde

Por que usar subagentes para pesquisa profunda

Em um loop clássico de pesquisa profunda com agente único, uma resposta continua chamando web_search. Isso funciona até que a resposta tenha visto muitos resultados de busca e comece a ficar sem orçamento de contexto útil. Os subagentes resolvem isso dividindo o trabalho:
  • O pai mantém o plano global e a síntese final.
  • Cada filho lida com uma tarefa de pesquisa focada e pode fazer várias buscas por conta própria.
  • O pai vê apenas o memorando do filho, não cada resultado bruto da busca.
  • O pai pode delegar uma segunda ou terceira rodada se a primeira for fraca ou conflitante.

Projete o pai e o filho de forma diferente

O pai não deve pesquisar diretamente. Sua função é decompor o pedido, lançar múltiplos subagentes em paralelo e decidir se outra rodada é necessária. Os filhos devem pesquisar diretamente. Sua função é fazer o trabalho focado, superar resultados iniciais fracos e retornar evidências compactas para o pai. Uma boa divisão se parece com isto:
  • Pai: planejamento, decomposição de tarefas, resolução de conflitos, resposta final.
  • Filho: refinamento de consultas, busca repetida, avaliação de fontes, redação do memorando.

Defina a ferramenta de delegação

Mantenha o esquema da ferramenta pequeno. Passe apenas a tarefa do filho, instruções opcionais e uma possível substituição de modelo.

Dê ao pai um prompt de orquestração

O prompt do pai deve forçar a decomposição e a abrangência. Para pesquisa profunda, diga ao pai para usar vários subagentes por padrão e lançar outra rodada quando a primeira for fraca.

Dê ao filho um prompt de pesquisa mais rigoroso

O prompt do filho deve restaurar a intensidade de busca que a pesquisa profunda de agente único costuma ter naturalmente. Sem isso, um filho pode parar após uma busca fraca e retornar um memorando dizendo o que faria a seguir.
Cada filho é apenas outra requisição de Responses. Forneça a tarefa delegada como input e a ferramenta web_search.

Continue filhos fracos em vez de aceitá-los

Para pesquisa profunda, não aceite um resultado de filho só porque ele retornou texto. Se o filho pesquisou apenas uma vez, produziu um memorando curto ou disse coisas como “próximos passos” ou “preciso pesquisar mais”, continue esse mesmo filho com previous_response_id.
O helper exato countCompletedWebSearches depende se você está usando eventos transmitidos ou itens de saída armazenados. A ideia importante é contar operações de busca realmente concluídas, não apenas turnos.

Execute uma rodada do pai, depois reúna todos os memorandos filhos

O pai deve poder emitir várias chamadas spawn_subagent em um turno. Trate essas chamadas de ferramenta como um lote. Inicie todos os filhos, aguarde todos terminarem e então retome o pai uma vez com todas as saídas dos filhos.
Este é o núcleo do loop de pesquisa profunda:
  1. O pai cria um plano de pesquisa.
  2. O pai emite um lote de chamadas spawn_subagent.
  3. Seu app executa todos os filhos em paralelo.
  4. Filhos fracos continuam para outra rodada.
  5. Seu app envia todos os memorandos finais dos filhos juntos.
  6. O pai lança outra rodada ou responde.

Transmita e registre o processo de pesquisa

A pesquisa profunda é muito mais fácil de depurar se você registrar o ciclo de vida das buscas dos filhos. Logs úteis incluem:
  • resposta pai criada
  • cada tarefa delegada
  • cada consulta de busca do filho
  • cada lote de resultados de busca do filho
  • cada prévia de memorando do filho
  • quando um filho fraco é continuado para outra rodada
  • retomada do pai com o lote final de filhos
Isso permite distinguir falhas de orquestração de falhas na qualidade da pesquisa. Por exemplo, se o sistema responde mal mas os logs mostram apenas um filho com uma busca, isso é um problema de prompt ou de continuação, não de transporte.

Regras práticas para pesquisa profunda

  • Use parallel_tool_calls: true no pai para que ele possa lançar vários subagentes em um turno.
  • Mantenha as saídas dos filhos compactas. O pai deve receber resumos de evidências, não dumps brutos de pesquisa.
  • Prefira várias tarefas filhas focadas a uma tarefa filha vaga.
  • Se um filho encontrar principalmente diretórios ou páginas genéricas, continue insistindo nesse filho em vez de aceitar o primeiro memorando.
  • Não retome o pai cedo com apenas parte de um lote de filhos.
  • Mantenha store: true ativado durante o desenvolvimento para poder inspecionar as respostas do pai e dos filhos depois.
  • Se você estiver agindo em nome de um usuário final, envie o mesmo valor de X-On-Behalf-Of nas requisições do pai e dos filhos.

Armadilhas comuns

  • Poucos subagentes: o pai sintetiza antes que a pesquisa tenha real abrangência.
  • Filhos fracos: um filho retorna após uma busca fraca com “próximos passos” em vez de fazer mais buscas.
  • Memorandos filhos grandes demais: o pai ganha pouco porque o filho retorna contexto bruto demais.
  • Reunião antecipada: retomar o pai antes de todos os filhos de um lote terminarem torna o fluxo menos previsível.
  • Deriva de qualidade de fonte: filhos podem usar demais diretórios, sites de perfil e agregadores, a menos que o prompt diga explicitamente para priorizar fontes primárias.

Veja também

Revise spawn subagents using the Responses API para o padrão geral de delegação pai/filho. Revise generate a response para o formato básico de requisição de Responses.