Pular para o conteúdo principal

Visão geral

O CrewAI pode planejar em dois níveis:
  • Planejamento do agente: o agente escreve um plano passo a passo para o próprio trabalho e depois executa e verifica cada passo. Configure com Agent(planning_config=PlanningConfig(...)).
  • Planejamento da crew: antes de a crew rodar, um CrewPlanner escreve um plano para cada tarefa e o adiciona à descrição de cada tarefa. Ative com Crew(planning=True).
Você pode usar qualquer um deles, ou os dois juntos.

Planejamento do agente

Passe um PlanningConfig para um agente para ativar o planejamento:
A presença de um PlanningConfig ativa o planejamento. Para desativá-lo, deixe planning_config sem valor.

Como funciona

Quando o agente inicia uma tarefa, ele executa um ciclo de planejar e executar:
  1. Planejar. O LLM de planejamento escreve um plano, com a instrução de ficar dentro de max_steps passos, e informa se o plano está pronto.
  2. Refinar. Se o plano não estiver pronto, o planejador o refina até que esteja pronto ou até atingir max_attempts.
  3. Executar. Cada passo vira um item de todo e roda no próprio loop de ferramentas, limitado por max_step_iterations e step_timeout.
  4. Observar. Depois de cada passo, o agente verifica o resultado. O quanto ele verifica depende de reasoning_effort.
  5. Replanejar. Dependendo de reasoning_effort, um passo que falha ou um plano que deixa de servir faz o agente escrever um novo plano, até max_replans vezes.
  6. Responder. O agente monta a resposta final a partir dos resultados dos passos.
O plano fica no estado de execução do agente. Ele não é adicionado à descrição da tarefa. A execução passo a passo precisa de um plano pronto com passos estruturados, que o planejador obtém por meio de function calling. Se o plano ainda não estiver pronto depois de max_attempts, ou se o LLM de planejamento não suportar function calling, o agente usa o loop de execução padrão.

Esforço de raciocínio

reasoning_effort controla o que acontece depois de cada passo: observe_steps substitui a revisão por LLM em qualquer nível: True a adiciona ao "low", e False a remove de "medium" e "high". Com observe_steps=True, o "low" também replaneja quando a revisão diz que um passo que falhou precisa de um novo plano.

Opções de configuração

str
padrão:"medium"
Quanto o agente verifica e se adapta depois de cada passo: "low", "medium" ou "high".
bool
padrão:"None"
Executa uma revisão por LLM depois de cada passo. None revisa apenas em "medium" e "high".
int
padrão:"None"
Número máximo de tentativas de planejamento, contando o primeiro plano. None continua refinando até o planejador marcar o plano como pronto, o que pode gerar mais chamadas ao LLM. Defina um número para limitar.
int
padrão:"20"
O limite de passos que o planejador deve respeitar. Ele é passado ao prompt como {max_steps} e não é aplicado ao plano retornado. Deve ser pelo menos 1.
int
padrão:"3"
Número máximo de replanejamentos completos antes de o agente finalizar a resposta. 0 desativa o replanejamento.
int
padrão:"15"
Número máximo de iterações do LLM em um único passo. Valores menores deixam os passos mais rápidos, porém menos completos.
int
padrão:"None"
Tempo máximo, em segundos, para um único passo, verificado antes de cada chamada ao LLM no passo. Quando ele é excedido, o passo para e retorna o que tem até então. O passo não é marcado como falho, e uma chamada ao LLM ou a uma ferramenta já em andamento não é interrompida. None significa sem limite de tempo.
str | BaseLLM
padrão:"None"
O LLM usado no planejamento e na revisão depois de cada passo. None usa o LLM do agente.
str
padrão:"None"
Prompt de sistema personalizado para o planejamento. None usa o prompt padrão.
str
padrão:"None"
Prompt personalizado para o primeiro plano. Veja Prompts personalizados abaixo.
str
padrão:"None"
Prompt personalizado para refinar um plano. Veja Prompts personalizados abaixo.
Este agente usa um modelo separado e mais barato para o planejamento e limita cada parte do ciclo:

Prompts personalizados

plan_prompt e refine_prompt são preenchidos com str.format do Python. Estes placeholders estão disponíveis: Se seus prompts não incluírem {max_steps}, o planejador não recebe nenhum limite de passos.
Qualquer outro placeholder, ou um { ou } literal, faz o planejamento falhar. O agente então registra o erro no log e roda sem plano. Escreva chaves literais como {{ e }}.

Planejamento sem tarefa

O planejamento também roda quando você chama um agente diretamente com kickoff(), sem uma Task ou uma Crew. A mensagem de entrada é usada como descrição da tarefa:

O atalho planning=True

Agent(planning=True) ativa uma configuração limitada e de baixo custo. Ela equivale a PlanningConfig(reasoning_effort="low", max_attempts=1): uma tentativa de planejamento e nenhuma revisão por LLM depois de cada passo.
Se você também passar planning_config, ele tem prioridade.

Quando o planejamento falha

Se ocorrer um erro enquanto o agente planeja, o erro é registrado no log e o agente executa a tarefa sem plano.
reasoning=True e max_reasoning_attempts estão obsoletos. Veja Reasoning para saber como migrar.

Planejamento da crew

Quando o planejamento da crew está ativado, todas as informações da crew são enviadas para um CrewPlanner antes de as tarefas rodarem. Ele planeja cada tarefa passo a passo e adiciona o plano à descrição dessa tarefa.

Usando o planejamento da crew

Adicione planning=True à sua Crew. Sempre que a crew é iniciada, o CrewPlanner escreve um plano como o da aba Result e adiciona a parte de cada tarefa à descrição dessa tarefa:

LLM de planejamento

O planejamento da crew usa gpt-5.4-mini por padrão. Defina planning_llm com o nome de um modelo ou uma instância de LLM para usar outro modelo, por exemplo Crew(..., planning=True, planning_llm="gpt-5").
Com o LLM de planejamento padrão, o planejamento da crew precisa de uma chave de API da OpenAI válida, mesmo que seus agentes usem outros provedores. Se você não tiver uma chave de API da OpenAI configurada, defina planning_llm com um modelo ao qual você tenha acesso.