web_search, use uma resposta pai para delegar tarefas de pesquisa focadas a respostas filhas.
Cada filho realiza suas próprias buscas e retorna um memo compacto.
O pai consome apenas esses memos, o que permite que o fluxo de trabalho geral pesquise de forma muito mais agressiva sem sobrecarregar o contexto do pai.
Este é uma versão especializada do padrão geral de subagentes.
Aqui, o pai é um orquestrador de pesquisa e os filhos são pesquisadores.
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 memos de pesquisa compactos
-> seu app envia todos os memos 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.
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 realizar várias buscas próprias.
- O pai vê apenas o memo do filho, não cada resultado bruto de 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. Seu trabalho é decompor o pedido, lançar múltiplos subagentes em paralelo e decidir se outra rodada é necessária. Os filhos devem pesquisar diretamente. Seu trabalho é realizar 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 consulta, busca repetida, avaliação de fontes, redação do memo.
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 geralmente tem naturalmente. Sem isso, um filho pode parar após uma busca fraca e retornar um memo 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 entrada e a ferramenta web_search.
Continue filhos fracos em vez de aceitá-los
Para pesquisa profunda, não aceite um resultado de filho apenas porque ele retornou texto. Se o filho fez apenas uma busca, produziu um memo 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 memos 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, espere 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 memos 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 memo 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 memo.
- 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 de pais e filhos depois. - Se você estiver agindo em nome de um usuário final, envie o mesmo valor de
X-On-Behalf-Ofnas requisições de pai e filho.
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.
- Memos de filhos muito grandes: o pai ganha pouco porque o filho passa contexto bruto demais.
- Fan-in precoce: retomar o pai antes de todos os filhos de um lote terminarem torna o fluxo de trabalho 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.