Pular para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://crewai-lorenze-feat-conversational-flows.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

O checkpointing salva um snapshot do estado de execução durante uma execução para que uma crew, flow ou agente possa retomar após uma falha ou ser bifurcado em uma branch alternativa.

Explicação

Como o checkpointing funciona: eventos, armazenamento e herança.

Tutorial

Um passo a passo de 5 minutos: executar, interromper, retomar.

Guias de uso

Receitas focadas em tarefas para fluxos comuns.

Referência

CheckpointConfig, eventos, provedores e CLI.

Explicação

O que é um checkpoint

Um checkpoint captura tudo o que o CrewAI precisa para recriar uma execução em andamento: o estado completo da crew, flow ou agente — configuração, memória e fontes de conhecimento dos agentes, progresso das tarefas, saídas intermediárias, estado interno e atributos — junto com os inputs do kickoff, o histórico de eventos até aquele ponto e um ID de linhagem que liga o checkpoint à execução de origem. Restaurar reconstrói esse estado e continua. Tarefas concluídas são puladas, memória e conhecimento são reidratados, e o trabalho downstream roda contra as mesmas saídas que a execução original produziu. Fazer fork executa a mesma restauração sob uma nova linhagem, para que a nova branch e a execução original gravem checkpoints lado a lado sem sobrescrever uma a outra.

Quando os checkpoints são gravados

O checkpointing é orientado a eventos. O runtime se inscreve nos eventos selecionados em on_events e grava um checkpoint sempre que um é disparado. O padrão task_completed produz um checkpoint por tarefa finalizada — um equilíbrio razoável entre granularidade e uso de disco. Eventos de alta frequência como llm_call_completed estão disponíveis para recuperação mais granular, mas gravam muito mais arquivos.

Armazenamento

Dois provedores acompanham o CrewAI:
  • JsonProvider grava um arquivo por checkpoint. Legível e fácil de inspecionar.
  • SqliteProvider grava em um único banco SQLite. Melhor para checkpointing de alta frequência.
Ambos removem os checkpoints mais antigos quando max_checkpoints está definido.
Gravações de checkpoint automáticas (acionadas por evento) são best-effort: uma falha é registrada em log e a execução continua. Chamadas manuais a state.checkpoint() e state.acheckpoint() relançam a exceção.

Modelo de herança

Crew, Flow e Agent aceitam um argumento checkpoint. Filhos herdam do pai a menos que definam seu próprio valor ou passem False para desativar. Ative o checkpointing uma vez na crew e todos os agentes participam, ou exclua um agente seletivamente.

Tutorial: Retomar uma crew com falha

Este passo a passo leva cerca de 5 minutos. Você executará uma crew de duas tarefas, a interromperá no meio e a retomará a partir do checkpoint salvo.
1

Crie a crew com checkpointing ativado

from crewai import Agent, Crew, Task

researcher = Agent(role="Researcher", goal="Research", backstory="Expert")
writer = Agent(role="Writer", goal="Write", backstory="Expert")

crew = Crew(
    agents=[researcher, writer],
    tasks=[
        Task(description="Research AI trends", agent=researcher, expected_output="bullets"),
        Task(description="Write a summary", agent=writer, expected_output="paragraph"),
    ],
    checkpoint=True,
)
2

Execute e interrompa após a primeira tarefa

result = crew.kickoff()
Pressione Ctrl+C após a primeira tarefa concluir. Em ./.checkpoints/, um arquivo <timestamp>_<uuid>.json é o checkpoint.
3

Retome a partir do checkpoint

from crewai import CheckpointConfig

result = crew.kickoff(
    from_checkpoint=CheckpointConfig(
        restore_from="./.checkpoints/<timestamp>_<uuid>.json",
    ),
)
A tarefa de pesquisa é pulada, o escritor executa contra a saída de pesquisa salva e a crew finaliza.

Guias de uso

crew = Crew(agents=[...], tasks=[...], checkpoint=True)
Grava em ./.checkpoints/ em cada task_completed.
from crewai import Crew, CheckpointConfig

crew = Crew(
    agents=[...],
    tasks=[...],
    checkpoint=CheckpointConfig(
        location="./my_checkpoints",
        on_events=["task_completed", "crew_kickoff_completed"],
        max_checkpoints=5,
    ),
)
from crewai import Crew, CheckpointConfig
from crewai.state import JsonProvider

crew = Crew(
    agents=[...],
    tasks=[...],
    checkpoint=CheckpointConfig(
        location="./my_checkpoints",
        provider=JsonProvider(),
        max_checkpoints=5,
    ),
)
O SQLite ativa o modo journal WAL para leituras concorrentes. Prefira-o para checkpointing de alta frequência.
crew = Crew(
    agents=[
        Agent(role="Researcher", ...),
        Agent(role="Writer", ..., checkpoint=False),
    ],
    tasks=[...],
    checkpoint=True,
)
fork() restaura um checkpoint sob uma nova linhagem para que a nova execução não colida com a original.
config = CheckpointConfig(restore_from="./my_checkpoints/<file>.json")
crew = Crew.fork(config, branch="experiment-a")
result = crew.kickoff(inputs={"strategy": "aggressive"})
O label branch é opcional; um é gerado se omitido.
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task, review_task],
    checkpoint=CheckpointConfig(location="./crew_cp"),
)
Gatilho padrão: task_completed.
Registre um handler em qualquer evento e chame state.checkpoint().
from __future__ import annotations

from typing import TYPE_CHECKING, Any

from crewai.events.event_bus import crewai_event_bus
from crewai.events.types.llm_events import LLMCallCompletedEvent

if TYPE_CHECKING:
    from crewai.state.runtime import RuntimeState


@crewai_event_bus.on(LLMCallCompletedEvent)
def on_llm_done(source: Any, event: LLMCallCompletedEvent, state: RuntimeState) -> None:
    path = state.checkpoint("./my_checkpoints")
    print(f"Checkpoint salvo: {path}")
Um argumento state é fornecido automaticamente quando o handler recebe três parâmetros. Veja Event Listeners para o catálogo completo de eventos.
crewai checkpoint list ./my_checkpoints
crewai checkpoint info ./my_checkpoints/<file>.json
crewai checkpoint info ./.checkpoints.db

Referência

CheckpointConfig

location
str
padrão:"\"./.checkpoints\""
Destino do armazenamento. Diretório para JsonProvider, caminho de arquivo de banco para SqliteProvider.
on_events
list[CheckpointEventType | Literal["*"]]
padrão:"[\"task_completed\"]"
Tipos de evento que disparam um checkpoint. CheckpointEventType é um Literal — seu type checker autocompleta e rejeita valores não suportados. Veja tipos de evento para a lista completa.
provider
BaseProvider
padrão:"JsonProvider()"
Backend de armazenamento. JsonProvider ou SqliteProvider.
max_checkpoints
int | None
padrão:"None"
Máximo de checkpoints a reter. Os mais antigos são removidos após cada gravação.
restore_from
Path | str | None
padrão:"None"
Checkpoint a restaurar quando passado via from_checkpoint.

Valores do campo checkpoint

Aceito por Crew, Flow e Agent.
None
padrão
Herda do pai.
True
bool
Ativa com padrões.
False
bool
Desativação explícita. Interrompe a herança.
CheckpointConfig(...)
CheckpointConfig
Configuração personalizada.

Tipos de evento

on_events aceita qualquer combinação de valores CheckpointEventType. O padrão ["task_completed"] grava um checkpoint por tarefa finalizada; ["*"] corresponde a todos os eventos.
["*"] e eventos de alta frequência como llm_call_completed gravam muitos checkpoints e podem degradar o desempenho. Combine com max_checkpoints.

Provedores de armazenamento

JsonProvider
provider
Um arquivo por checkpoint, nomeado <timestamp>_<uuid>.json dentro de location.
SqliteProvider
provider
Arquivo de banco único em location com journaling WAL.

CLI

ComandoPropósito
crewai checkpointInicia a TUI; detecta o armazenamento automaticamente.
crewai checkpoint --location <path>Inicia a TUI em uma localização específica.
crewai checkpoint list <path>Lista checkpoints.
crewai checkpoint info <path>Inspeciona um arquivo de checkpoint ou a entrada mais recente em um banco SQLite.