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 chamandoweb_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.Execute o filho com web_search
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 comprevious_response_id.
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 chamadasspawn_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.
- O pai cria um plano de pesquisa.
- O pai emite um lote de chamadas
spawn_subagent. - Seu app executa todos os filhos em paralelo.
- Filhos fracos continuam para outra rodada.
- Seu app envia todos os memorandos finais dos filhos juntos.
- 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
Regras práticas para pesquisa profunda
- Use
parallel_tool_calls: trueno 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: trueativado 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-Ofnas 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.