Lição 2: Blocos de construção de um fluxo de trabalho: passos, estado, ramificações e loops
Objetivos de aprendizado:
- Dominar os quatro blocos de construção centrais de um fluxo de trabalho
- Entender dependências e passagem de dados entre passos
- Aprender a projetar o fluxograma de execução de um fluxo de trabalho
Pré-requisitos: Lição 1: Da conversa ao fluxo de trabalho | Próxima: Lição 3 >>
Fluxos de trabalho não são mágica, são composição
Na lição anterior vimos que um fluxo de trabalho consegue coordenar dezenas de agentes para concluir uma tarefa complexa. Mas abra um script de fluxo de trabalho e você vai encontrar código comum: funções, loops, condicionais.
O poder de um fluxo de trabalho vem da combinação de quatro blocos de construção simples:
- Passos — a unidade básica de trabalho
- Estado — dados compartilhados entre passos
- Ramificações — escolher um caminho com base em uma condição
- Loops — repetir uma operação parecida
Depois que você entende esses quatro blocos, consegue projetar um fluxo de trabalho de qualquer complexidade.1
Bloco de construção 1: passos
Um passo é a operação atômica de um fluxo de trabalho. Cada passo é ou uma chamada de Agent ou uma função determinística.2
Passos de Agent x passos de função
Quando usar um passo de Agent:
- Você precisa entender uma entrada difusa (linguagem natural, dados não estruturados)
- Você precisa gerar conteúdo criativo (documentação, código, explicações)
- Você precisa emitir um julgamento (este código tem algum problema de segurança?)
Quando usar um passo de função:
- Transformação de dados (filtrar, ordenar, formatar)
- Matemática (estatísticas, agregação)
- Checagens condicionais (lógica if-else)
- Operações de arquivo (ler, escrever, mover)
Boa prática: passos de Agent raciocinam, passos de função computam. Não faça o LLM aplicar um filtro simples em um array ou somar números — é lento, caro e pouco confiável.2
O contrato de entrada/saída de um passo
Todo passo deve ter um contrato claro de entrada e saída:
Um contrato claro deixa o fluxo de trabalho fácil de entender e de depurar. Quando o passo 5 quebra, você enxerga na hora que foi porque a saída do passo 4 veio no formato errado.3
Bloco de construção 2: estado
Estado são os dados compartilhados entre passos. É como a memória do fluxo de trabalho, guardando resultados intermediários e o progresso da execução.4
Dois tipos de estado
Estado do fluxo de trabalho:
- Toda a informação sobre a tarefa atual: em que passo você está, o resultado de cada passo, o que o próximo passo precisa
- Guardado em variáveis do script ou em um banco de dados externo
- Passado entre passos, mas não entre sessões
Estado de sessão:
- O histórico de conversa do usuário e as configurações de preferência
- O próprio Agent gerencia isso; o fluxo de trabalho não precisa se preocupar com ele4
Padrões de gerenciamento de estado
Padrão 1: variáveis do script (bom para fluxos de trabalho curtos)
Padrão 2: um objeto de estado (bom para complexidade média)
Padrão 3: armazenamento externo (bom para fluxos de trabalho de longa duração)
Checkpointing: salve o estado depois dos passos importantes, para que o fluxo de trabalho consiga retomar do ponto da falha em vez de começar tudo de novo.5
Bloco de construção 3: ramificações
Uma ramificação escolhe um caminho de execução diferente com base em uma condição.6
Ramificação simples
Ramificação a partir da decisão de um Agent
Ramificação de tratamento de erros
Bloco de construção 4: loops
Um loop permite rodar a mesma operação sobre muitos objetos parecidos. Essa é a fonte central do poder de um fluxo de trabalho.6
Loop sequencial
Loop paralelo
Aqui, limit = 5 é o limite de concorrência: rode no máximo 5 por vez, em vez de disparar todos os 100 de uma só vez com Promise.all, o que abriria conexões ou descritores de arquivo demais.
Loop com acumulação
Loop com terminação condicional
Combinando os blocos de construção: um fluxo de trabalho completo
Vamos combinar esses quatro blocos para projetar um fluxo de trabalho de “checagem de saúde de microsserviços”:
O script correspondente:
Este fluxo de trabalho usa os quatro blocos de construção:
- Passos:
listServices, checkServiceHealth, as chamadas agent()
- Estado: o objeto
state guardando o total e as listas de saudáveis/fora de saúde
- Ramificações: paralelo x sequencial conforme a quantidade de serviços, e o tipo de relatório conforme o status de saúde
- Loops: o loop paralelo com
map, o loop sequencial com for
Como pensar o design de fluxos de trabalho
Trabalhe de trás para frente, a partir do ponto final:
- Qual é a saída final? (um relatório, serviços em produção, código limpo)
- De que entrada o último passo precisa? (dados agregados, resultados validados)
- De onde vem essa entrada? (da saída do passo anterior)
- Repita até chegar ao início (entrada do usuário ou sistema de arquivos)
Identifique as oportunidades de paralelismo:
- Se vários passos não dependem uns dos outros, eles podem rodar em paralelo
- “Para cada X, faça Y” quase sempre pode ser paralelizado
- O paralelismo pode transformar dez tarefas de 5 minutos, de 50 minutos para 5
Deixe as dependências explícitas:
Próxima: Lição 3: Decompondo uma tarefa complexa em um fluxo de trabalho — estratégias para quebrar sistematicamente uma tarefa complexa em passos de fluxo de trabalho