> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evo-ai.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Workflow Agent

> Construa workflows complexos com interface visual usando LangGraph e React Flow para orquestração avançada de agentes

## Visão Geral

O **Workflow Agent** é o tipo mais avançado e flexível de agente na plataforma Evo AI. Utilizando **LangGraph** como engine de execução e **React Flow** para interface visual, permite criar workflows complexos com múltiplos tipos de nodes, condições, delays e controle de fluxo sofisticado.

Diferentemente dos outros tipos de agentes (Sequential, Parallel, Loop), o Workflow Agent oferece controle granular sobre cada etapa do processo, permitindo criar lógicas de negócio complexas com ramificações condicionais, loops customizados e orquestração avançada.

<Note>
  **Baseado em LangGraph**: Implementação usando [LangGraph](https://langchain-ai.github.io/langgraph/) para execução de workflows e React Flow para interface visual de construção.
</Note>

## Características Principais

<CardGroup cols={2}>
  <Card title="Interface Visual" icon="sitemap">
    Construção drag-and-drop com React Flow para workflows intuitivos
  </Card>

  <Card title="LangGraph Engine" icon="gear">
    Execução robusta baseada em LangGraph para workflows complexos
  </Card>

  <Card title="Múltiplos Node Types" icon="shapes">
    Agent, Message, Condition e Delay nodes para máxima flexibilidade
  </Card>

  <Card title="Teste Integrado" icon="flask">
    Teste individual de agentes e teste completo do workflow
  </Card>
</CardGroup>

## Tipos de Nodes

### 1. Agent Node

<AccordionGroup>
  <Accordion icon="robot" title="Agent Node - Núcleo do Workflow">
    **Função:** Executa agentes (novos ou existentes) como parte do workflow

    **Configurações:**

    * **Selecionar Agente Existente**: Escolha de agentes já criados na plataforma
    * **Criar Novo Agente**: Criação inline de agente específico para o workflow
    * **Editar Agente**: Modificação de agentes existentes
    * **Input Mapping**: Mapeamento de dados de entrada
    * **Output Key**: Chave para armazenar resultado no contexto

    **Exemplo de uso:**

    ```
    Agent Node: "Analisador de Sentimento"
    - Agent: sentiment_analyzer (existente)
    - Input: texto do output anterior
    - Output Key: sentiment_analysis
    ```

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow05_agent_node.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=50691eba4aba0711d2eccc9f27c509c2" alt="Agent Node no Canvas" width="1644" height="811" data-path="images/prints/workflow05_agent_node.png" />

    **Formulário de configuração:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow06_agent_form.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=92593476d5e1d9fff287283c3725ec3e" alt="Configurando Agent Node" width="714" height="1373" data-path="images/prints/workflow06_agent_form.png" />
  </Accordion>
</AccordionGroup>

### 2. Message Node

<AccordionGroup>
  <Accordion icon="message" title="Message Node - Controle de Etapas">
    **Função:** Envia mensagens diretas como agente no fluxo, ideal para controle de etapas

    **Configurações:**

    * **Type**: Tipo da mensagem (atualmente apenas "Texto" disponível)
    * **Content**: Conteúdo da mensagem a ser enviada

    **Tipo disponível:**

    * **Texto**: Mensagem em formato texto simples

    **Exemplo de configuração:**

    ```
    Type: Texto
    Content: Iniciando análise de qualidade do conteúdo recebido
    ```

    **Casos práticos:**

    * **Instruções para próximos nodes**: Orientações específicas para agentes subsequentes
    * **Mensagens de status**: Informações sobre progresso do workflow
    * **Dados estruturados**: Informações formatadas para processamento
    * **Controle de contexto**: Mensagens que definem contexto entre etapas
    * **Notificações**: Avisos sobre estados ou condições específicas
    * **Logs de processo**: Registros de etapas importantes do workflow

    **Exemplos práticos:**

    **Instrução para Análise:**

    ```
    Type: Texto
    Content: Analise o documento focando em aspectos de qualidade e conformidade
    ```

    **Status de Progresso:**

    ```
    Type: Texto
    Content: Etapa de validação concluída com sucesso, prosseguindo para aprovação
    ```

    **Contexto para Próxima Etapa:**

    ```
    Type: Texto
    Content: Documento classificado como alta prioridade, aplicar processo acelerado
    ```

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow07_message_node.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=41eeff3deae6eac5a58ea6f7512b3267" alt="Message Node no Canvas" width="1684" height="726" data-path="images/prints/workflow07_message_node.png" />

    **Formulário de configuração:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow09_message_form.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=d34ac5dbabc446964680e2397dcf877c" alt="Configurando Message Node" width="644" height="1377" data-path="images/prints/workflow09_message_form.png" />
  </Accordion>
</AccordionGroup>

### 3. Condition Node

<AccordionGroup>
  <Accordion icon="code-branch" title="Condition Node - Controle de Fluxo">
    **Função:** Verifica output do node anterior e direciona execução baseado em condições

    **Condition Type:**

    * **Previous output**: Valida o resultado retornado pelo node anterior (único tipo disponível)

    **Configurações:**

    * **Output Field**: Campo do output anterior para verificar (Content ou Status)
    * **Operator**: Operador de comparação
    * **Comparison Value**: Valor para comparação
    * **Preview**: Visualização da condição configurada

    **Campos de Output disponíveis:**

    * **Content**: Conteúdo da resposta do node anterior
    * **Status**: Status de execução do node anterior

    **Operadores disponíveis:**

    **Verificação de Existência:**

    * **is defined**: Verifica se o campo está definido
    * **is not defined**: Verifica se o campo não está definido

    **Comparação de Igualdade:**

    * **is equal to**: Campo é igual ao valor especificado
    * **is not equal to**: Campo não é igual ao valor especificado

    **Verificação de Conteúdo:**

    * **contains**: Campo contém o texto especificado
    * **does not contain**: Campo não contém o texto especificado
    * **starts with**: Campo inicia com o texto especificado
    * **ends with**: Campo termina com o texto especificado

    **Comparação Numérica:**

    * **is greater than**: Campo é maior que o valor numérico
    * **is greater than or equal to**: Campo é maior ou igual ao valor
    * **is less than**: Campo é menor que o valor numérico
    * **is less than or equal to**: Campo é menor ou igual ao valor

    **Expressões Regulares:**

    * **matches the regex**: Campo corresponde à expressão regular
    * **does not match the regex**: Campo não corresponde à regex

    **Exemplos de configuração:**

    **Verificação de Status Completo:**

    ```
    Condition Type: Previous output
    Output Field: Content
    Operator: contains
    Comparison Value: completed
    Preview: Content contains "completed"
    ```

    **Verificação de Score de Qualidade:**

    ```
    Condition Type: Previous output
    Output Field: Content
    Operator: contains
    Comparison Value: "score": 8
    Preview: Content contains "score": 8
    ```

    **Verificação de Status de Execução:**

    ```
    Condition Type: Previous output
    Output Field: Status
    Operator: is equal to
    Comparison Value: success
    Preview: Status is equal to "success"
    ```

    **Verificação com Regex:**

    ```
    Condition Type: Previous output
    Output Field: Content
    Operator: matches the regex
    Comparison Value: "confidence":\s*([0-9.]+)
    Preview: Content matches the regex "confidence":\s*([0-9.]+)
    ```

    **Como configurar:**

    1. Selecione **"Previous output"** como Condition Type
    2. Escolha o **Output Field** (Content ou Status)
    3. Selecione o **Operator** apropriado
    4. Digite o **Comparison Value**
    5. Verifique o **Preview** da condição
    6. Configure os caminhos True/False conectando as saídas

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow10_condition_node.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=d32199e3425109d25961c29ecb16c194" alt="Condition Node no Canvas" width="2202" height="1026" data-path="images/prints/workflow10_condition_node.png" />

    **Formulário de configuração:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow11_condition_form.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=e5c4f8ca7f8880d14cb4cbb5f58e21d5" alt="Configurando Condition Node" width="628" height="1388" data-path="images/prints/workflow11_condition_form.png" />

    **Dialog de adição de condição:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow12_condition_dialog.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=9576d7dcef47f07b7c8883e595f54e5b" alt="Dialog para Adicionar Condição" width="1156" height="1156" data-path="images/prints/workflow12_condition_dialog.png" />
  </Accordion>
</AccordionGroup>

### 4. Delay Node

<AccordionGroup>
  <Accordion icon="clock" title="Delay Node - Controle de Tempo">
    **Função:** Adiciona delays simples no workflow para controle de timing

    **Configurações:**

    * **Delay Value**: Valor numérico do delay
    * **Time Unit**: Unidade de tempo (segundos, minutos, horas, dias)
    * **Description**: Descrição opcional do propósito do delay

    **Unidades de Tempo disponíveis:**

    * **Segundos**: Para delays curtos (1-59 segundos)
    * **Minutos**: Para delays médios (1-59 minutos)
    * **Horas**: Para delays longos (1-23 horas)
    * **Dias**: Para delays muito longos (1+ dias)

    **Exemplos de configuração:**

    **Delay para Rate Limiting:**

    ```
    Delay Value: 30
    Time Unit: Segundos
    Description: Rate limiting entre chamadas de API
    ```

    **Delay para Processamento:**

    ```
    Delay Value: 5
    Time Unit: Minutos
    Description: Aguardar processamento externo completar
    ```

    **Delay para Priorização:**

    ```
    Delay Value: 1
    Time Unit: Horas
    Description: Delay para leads de baixa prioridade
    ```

    **Delay para Agendamento:**

    ```
    Delay Value: 1
    Time Unit: Dias
    Description: Aguardar próximo dia útil para processamento
    ```

    **Casos práticos:**

    * **Rate limiting**: Evitar sobrecarga de APIs externas
    * **Aguardar processamento**: Tempo para sistemas externos processarem
    * **Simular tempo humano**: Delays realistas em automações
    * **Controle de throughput**: Gerenciar velocidade de processamento
    * **Agendamento**: Delays para horários específicos
    * **Priorização**: Delays diferentes baseados em prioridade

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow13_delay_node.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=58c5a855d26b105c06eda925df426878" alt="Delay Node no Canvas" width="1484" height="671" data-path="images/prints/workflow13_delay_node.png" />

    **Formulário de configuração:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow14_delay_form.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=b07dd5d7b345b1417888d692c910d816" alt="Configurando Delay Node" width="636" height="1392" data-path="images/prints/workflow14_delay_form.png" />
  </Accordion>
</AccordionGroup>

## Criando um Workflow Agent

### Passo a Passo na Plataforma

<AccordionGroup>
  <Accordion icon="robot" title="1. Iniciar criação">
    1. Na tela principal do Evo AI, clique em **"New Agent"**
    2. No campo **"Type"**, selecione **"Workflow Agent"**
    3. Você verá a interface visual do React Flow

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow01_menu.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=64dcfcda5a4cf501d80203206f9ddd93" alt="Menu de Criação de Workflow Agent" width="799" height="836" data-path="images/prints/workflow01_menu.png" />
  </Accordion>

  <Accordion icon="gear" title="2. Configurar informações básicas">
    **Name:** Nome descritivo do workflow

    ```
    Exemplo: pipeline_aprovacao_conteudo
    ```

    **Description:** Resumo do workflow complexo

    ```
    Exemplo: Workflow completo para aprovação de conteúdo com 
    análise automática, revisão condicional e aprovação final
    ```

    **Goal:** Objetivo do workflow

    ```
    Exemplo: Automatizar processo de aprovação de conteúdo garantindo 
    qualidade através de múltiplas verificações e aprovações condicionais
    ```
  </Accordion>

  <Accordion icon="sitemap" title="3. Construir workflow visual">
    **Interface React Flow:**

    **Palette de Nodes:** Arraste nodes da palette para o canvas

    * 🤖 **Agent Node** - Para executar agentes
    * 💬 **Message Node** - Para mensagens diretas
    * 🔀 **Condition Node** - Para lógica condicional
    * ⏱️ **Delay Node** - Para delays temporais

    **Conexões:** Conecte nodes arrastando das saídas para entradas

    **Configuração:** Clique duplo em qualquer node para configurar

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow02_canva.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=6b32598f2b4d9917bfdc76a8ef2283b1" alt="Interface Visual do Canvas" width="2490" height="1488" data-path="images/prints/workflow02_canva.png" />

    **Menu de Content Nodes:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow03_dragdrop_menu_content.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=967725abb9a87cd419d4a9796b761933" alt="Menu de Content Nodes" width="862" height="668" data-path="images/prints/workflow03_dragdrop_menu_content.png" />

    **Menu de Logic Nodes:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow04_dragdrop_menu_logic.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=6153b95de38c04c3699e90b07140cccd" alt="Menu de Logic Nodes" width="870" height="654" data-path="images/prints/workflow04_dragdrop_menu_logic.png" />
  </Accordion>

  <Accordion icon="gear" title="4. Configurar nodes individuais">
    **Para cada node no workflow:**

    **Agent Nodes:**

    * Selecione agente existente ou crie novo
    * Configure input mapping
    * Defina output key

    **Message Nodes:**

    * Escreva conteúdo da mensagem
    * Use variáveis do contexto
    * Configure tipo de mensagem

    **Condition Nodes:**

    * Defina lógica de verificação
    * Configure caminhos true/false
    * Teste condições

    **Delay Nodes:**

    * Configure duração
    * Defina condições de skip
    * Configure delays dinâmicos
  </Accordion>

  <Accordion icon="link" title="5. Conectar e validar fluxo">
    **Conexões entre nodes:**

    * Arraste da saída de um node para entrada do próximo
    * Valide que todas as conexões fazem sentido
    * Configure múltiplas saídas para Condition Nodes

    **Validação automática:**

    * Verificação de loops infinitos
    * Validação de tipos de dados
    * Checagem de nodes órfãos
    * Verificação de caminhos completos

    **Start e End nodes:**

    * Todo workflow precisa de um Start node
    * Configure End nodes para diferentes cenários
  </Accordion>
</AccordionGroup>

## Exemplos Práticos

### 1. Pipeline de Aprovação de Conteúdo

<AccordionGroup>
  <Accordion icon="file-check" title="Estrutura do Workflow">
    **Objetivo:** Automatizar aprovação de conteúdo com múltiplas verificações

    **Fluxo do workflow:**

    ```
    START
      ↓
    [Message: Instrução Inicial]
      ↓
    [Agent: Analisador de Qualidade]
      ↓
    [Condition: Score >= 8.0?]
      ├─ TRUE → [Agent: Aprovação Automática] → [Message: Conteúdo Aprovado] → END
      └─ FALSE → [Agent: Revisão Manual]
                   ↓
                 [Condition: Aprovado na Revisão?]
                   ├─ TRUE → [Message: Conteúdo Aprovado] → END
                   └─ FALSE → [Agent: Solicitação de Correções]
                               ↓
                             [Delay: 1 hora]
                               ↓
                             [volta para Analisador de Qualidade]
    ```

    **Configuração detalhada:**

    **1. Message Node: "Instrução Inicial"**

    ```
    Type: Texto
    Content: Iniciando análise de qualidade do conteúdo recebido
    ```

    **2. Agent Node: "Analisador de Qualidade"**

    ```
    Agent: content_quality_analyzer
    Input: conteúdo e critérios de qualidade
    Output Key: quality_analysis
    ```

    **3. Condition Node: "Score >= 8.0?"**

    ```
    Condition Type: Previous output
    Output Field: Content
    Operator: contains
    Comparison Value: score >= 8.0
    Preview: Content contains "score": 8
    ```

    **4. Agent Node: "Aprovação Automática"**

    ```
    Agent: auto_approver
    Input: conteúdo e análise de qualidade
    Output Key: approval_result
    ```

    **5. Agent Node: "Revisão Manual"**

    ```
    Agent: manual_reviewer
    Input: conteúdo e problemas identificados
    Output Key: manual_review
    ```

    **6. Condition Node: "Aprovado na Revisão?"**

    ```
    Condition Type: Previous output
    Output Field: Status
    Operator: is equal to
    Comparison Value: approved
    Preview: Status is equal to "approved"
    ```

    **7. Delay Node: "1 hora"**

    ```
    Delay Value: 1
    Time Unit: Horas
    Description: Aguardar antes de nova análise
    ```
  </Accordion>
</AccordionGroup>

### 2. Workflow de Análise de Leads

<AccordionGroup>
  <Accordion icon="user-check" title="Estrutura do Workflow">
    **Objetivo:** Processar leads com análise inteligente e roteamento automático

    **Fluxo do workflow:**

    ```
    START
      ↓
    [Agent: Enriquecedor de Dados]
      ↓
    [Agent: Pontuador de Leads]
      ↓
    [Condition: Score > 70?]
      ├─ TRUE → [Condition: Score > 90?]
      │           ├─ TRUE → [Agent: Roteador VIP] → [Delay: 5 min] → [Agent: Notificador] → END
      │           └─ FALSE → [Agent: Roteador Normal] → [Delay: 30 min] → [Agent: Notificador] → END
      └─ FALSE → [Message: Lead Descartado] → END
    ```

    **Nodes principais:**

    **1. Agent Node: "Enriquecedor de Dados"**

    * Enriquece dados do lead com informações públicas
    * Output: dados\_enriquecidos

    **2. Agent Node: "Pontuador de Leads"**

    * Calcula score baseado em critérios
    * Input: dados\_enriquecidos
    * Output: lead\_score

    **3. Condition Node: "Score > 70?"**

    * Filtra leads de baixa qualidade
    * Condition: score maior que 70

    **4. Condition Node: "Score > 90?"**

    * Identifica leads VIP
    * Condition: score maior que 90

    **5. Agent Nodes: "Roteadores"**

    * Roteador VIP: Para vendedores sênior
    * Roteador Normal: Para vendedores padrão

    **6. Delay Nodes: "Priorização"**

    * VIP: 5 minutos (alta prioridade)
    * Normal: 30 minutos (prioridade padrão)
  </Accordion>
</AccordionGroup>

### 3. Workflow de Processamento de Documentos

<AccordionGroup>
  <Accordion icon="file" title="Estrutura do Workflow">
    **Objetivo:** Processar documentos com validação e aprovação automática

    **Fluxo complexo com loops:**

    ```
    START
      ↓
    [Agent: Extrator de Dados]
      ↓
    [Agent: Validador de Formato]
      ↓
    [Condition: Formato Válido?]
      ├─ FALSE → [Message: Erro de Formato] → END
      └─ TRUE → [Agent: Analisador de Conteúdo]
                  ↓
                [Condition: Conteúdo Completo?]
                  ├─ FALSE → [Agent: Solicitador de Dados]
                  │            ↓
                  │          [Delay: Aguardar Resposta]
                  │            ↓
                  │          [Condition: Dados Recebidos?]
                  │            ├─ TRUE → [volta para Analisador de Conteúdo]
                  │            └─ FALSE → [Message: Timeout] → END
                  └─ TRUE → [Agent: Verificador de Compliance]
                              ↓
                            [Condition: Compliance OK?]
                              ├─ TRUE → [Agent: Aprovador Final] → [Message: Documento Aprovado] → END
                              └─ FALSE → [Agent: Rejeitador] → [Message: Documento Rejeitado] → END
    ```
  </Accordion>
</AccordionGroup>

## Funcionalidades de Teste

### Teste Individual de Agentes

<AccordionGroup>
  <Accordion icon="flask" title="Agent Form Test">
    **Teste de agentes individuais dentro do workflow:**

    **Como usar:**

    1. Clique em qualquer Agent Node no workflow
    2. Selecione **"Test Agent"** no menu contextual
    3. Configure inputs de teste
    4. Execute teste isolado
    5. Analise outputs e performance

    **Benefícios:**

    * Validação rápida de agentes individuais
    * Debug de problemas específicos
    * Teste de diferentes inputs
    * Verificação de outputs esperados

    **Interface de teste:**

    ```
    Agent Test: content_quality_analyzer

    Input:
    {
      "content": "Texto de exemplo para análise...",
      "criteria": ["grammar", "clarity", "engagement"]
    }

    Expected Output:
    {
      "score": 8.5,
      "issues": [],
      "recommendations": [...]
    }
    ```
  </Accordion>
</AccordionGroup>

### Teste Completo do Workflow

<AccordionGroup>
  <Accordion icon="play" title="Test Workflow">
    **Teste do workflow completo com dados reais:**

    **Como usar:**

    1. Clique em **"Test Workflow"** na barra superior
    2. Configure inputs iniciais do workflow
    3. Execute teste completo
    4. Acompanhe execução em tempo real
    5. Analise resultados finais

    **Funcionalidades do teste:**

    * **Execução passo a passo**: Veja cada node sendo executado
    * **Visualização de dados**: Acompanhe dados fluindo entre nodes
    * **Breakpoints**: Pause execução em nodes específicos
    * **Logs detalhados**: Registros completos de execução
    * **Performance metrics**: Tempo de execução por node

    **Interface de teste:**

    ```
    Workflow Test: pipeline_aprovacao_conteudo

    Status: Running
    Current Node: Agent - Analisador de Qualidade
    Progress: 3/8 nodes completed

    Execution Log:
    ├── [14:32:15] Start - Workflow iniciado
    ├── [14:32:16] Message - Instrução enviada
    ├── [14:32:17] Agent - Análise iniciada
    └── [14:32:20] Agent - Análise em progresso...

    Data Flow:
    ├── input_content: "Artigo sobre IA..."
    ├── start_message: "Iniciando análise..."
    └── quality_analysis: { score: 7.5, ... }
    ```

    **Interface de teste do workflow:**

    <img src="https://mintcdn.com/evoai/Aa4kqZ7vw51IF__0/images/prints/workflow15_test.png?fit=max&auto=format&n=Aa4kqZ7vw51IF__0&q=85&s=5af3c834f076d7f989e859d50437c215" alt="Testando Workflow Completo" width="974" height="1503" data-path="images/prints/workflow15_test.png" />
  </Accordion>
</AccordionGroup>

## Monitoramento e Debugging

### Dashboard de Execução

<AccordionGroup>
  <Accordion icon="chart-line" title="Monitoramento em Tempo Real">
    **Acompanhamento visual da execução:**

    **Visualização no React Flow:**

    * Nodes ativos destacados em verde
    * Nodes completados marcados com ✓
    * Nodes com erro marcados com ✗
    * Fluxo de dados visualizado nas conexões

    **Métricas por node:**

    ```
    Node Performance:
    ├── Agent: Analisador de Qualidade
    │   ├── Executions: 1,247
    │   ├── Avg Duration: 3.2s
    │   ├── Success Rate: 98.5%
    │   └── Last Error: 2 days ago
    ├── Condition: Score >= 8.0
    │   ├── True Path: 65% (812 times)
    │   ├── False Path: 35% (435 times)
    │   └── Avg Evaluation: 0.1s
    └── Delay: 1 hora
        ├── Skipped: 15% (delays pulados)
        ├── Executed: 85%
        └── Avg Delay: 3600s
    ```

    **Alertas e notificações:**

    * Falhas de execução
    * Timeouts de nodes
    * Loops infinitos detectados
    * Performance degradada
  </Accordion>

  <Accordion icon="bug" title="Debugging Avançado">
    **Ferramentas de debug específicas:**

    **1. Breakpoints Visuais**

    ```
    - Clique em qualquer node para adicionar breakpoint
    - Execução pausa antes do node
    - Inspecione estado atual do contexto
    - Continue execução passo a passo
    ```

    **2. Data Inspector**

    ```
    - Visualize dados em cada ponto do workflow
    - Histórico de transformações
    - Validação de tipos de dados
    - Detecção de dados corrompidos
    ```

    **3. Execution Replay**

    ```
    - Replay de execuções anteriores
    - Comparação entre execuções
    - Identificação de regressões
    - Análise de padrões de falha
    ```

    **4. Performance Profiler**

    ```
    - Identificação de gargalos
    - Análise de uso de recursos
    - Otimização de nodes lentos
    - Sugestões de melhoria
    ```
  </Accordion>
</AccordionGroup>

## Configurações Avançadas

### Otimização de Performance

<AccordionGroup>
  <Accordion icon="rocket" title="Otimização de Execução">
    **Estratégias para workflows eficientes:**

    **Paralelização Inteligente:**

    ```
    - Identifique nodes que podem executar em paralelo
    - Configure parallel branches no workflow
    - Use merge nodes para sincronizar resultados
    ```

    **Caching de Resultados:**

    ```
    - Cache outputs de nodes determinísticos
    - Configure TTL baseado na natureza dos dados
    - Invalide cache quando necessário
    ```

    **Resource Management:**

    ```
    - Limite recursos por node
    - Configure pools de conexão
    - Gerencie memória entre execuções
    ```
  </Accordion>

  <Accordion icon="shield" title="Resiliência e Confiabilidade">
    **Configurações para workflows robustos:**

    **Error Handling:**

    ```
    - Configure retry policies por node
    - Implemente fallback paths
    - Use circuit breakers para nodes externos
    ```

    **State Management:**

    ```
    - Persista estado entre execuções
    - Configure checkpoints automáticos
    - Implemente recovery mechanisms
    ```

    **Monitoring e Alerting:**

    ```
    - Configure alertas para falhas
    - Monitore SLAs de execução
    - Implemente health checks
    ```
  </Accordion>

  <Accordion icon="key" title="Output Key - Resultado do Workflow">
    **Campo `Output Key` na interface:**

    O Output Key permite que o Workflow Agent salve o resultado final do workflow complexo em uma variável específica no estado compartilhado, tornando-o disponível para outros agentes ou processos.

    **Como funciona:**

    * Configure o campo `Output Key` com um nome descritivo
    * O resultado final do workflow (último node executado) será salvo automaticamente
    * Outros agentes podem acessar usando placeholders `{{output_key_name}}`
    * Funciona em workflows aninhados, loops e sistemas multi-agente

    **Exemplos de configuração:**

    ```markdown theme={null}
    Output Key: "aprovacao_conteudo_resultado"
    → Salva resultado final em state.aprovacao_conteudo_resultado

    Output Key: "processamento_lead_completo"
    → Salva resultado final em state.processamento_lead_completo

    Output Key: "pipeline_dados_resultado"
    → Salva resultado final em state.pipeline_dados_resultado
    ```

    **Resultado do workflow:**

    ```json theme={null}
    {
      "workflow_summary": {
        "total_nodes": 12,
        "executed_nodes": 10,
        "skipped_nodes": 2,
        "execution_time": "2m 15s",
        "final_status": "completed"
      },
      "final_result": {
        "decision": "approved",
        "confidence": 0.95,
        "details": {...}
      },
      "execution_path": [
        "start_node",
        "validation_node", 
        "analysis_node",
        "decision_node",
        "end_node"
      ]
    }
    ```

    **Uso em outros agentes:**

    ```markdown theme={null}
    # Nas instruções de agentes subsequentes:
    "Analise o pedido: {{user_input}} e use o resultado da aprovação: {{aprovacao_conteudo_resultado}}"
    "Baseado no processamento: {{processamento_lead_completo}}"
    "Analise os dados processados: {{pipeline_dados_resultado}}"
    ```

    **Boas práticas:**

    * Use snake\_case: `workflow_resultado`, `processo_completo`
    * Seja específico: `aprovacao_credito_workflow` em vez de `workflow`
    * Documente estrutura do resultado final
    * Considere incluir metadados de execução (path, timing, status)
    * Use nomes que reflitam o processo de negócio
    * Configure o último node para produzir resultado estruturado
  </Accordion>
</AccordionGroup>

## Melhores Práticas

<AccordionGroup>
  <Accordion icon="lightbulb" title="Design de Workflows">
    **Princípios para workflows eficazes:**

    * **Modularidade**: Divida workflows complexos em sub-workflows
    * **Idempotência**: Garanta que re-execuções sejam seguras
    * **Observabilidade**: Adicione logging e monitoramento adequados
    * **Error handling**: Trate falhas graciosamente
    * **Performance**: Otimize caminhos críticos
  </Accordion>

  <Accordion icon="users" title="Colaboração e Manutenção">
    **Práticas para equipes:**

    * **Documentação**: Documente propósito de cada node
    * **Versionamento**: Use controle de versão para workflows
    * **Testing**: Implemente testes automatizados
    * **Code review**: Revise workflows antes de produção
    * **Monitoring**: Monitore performance e confiabilidade
  </Accordion>
</AccordionGroup>

## Casos de Uso Comuns

<CardGroup cols={2}>
  <Card title="Aprovação de Conteúdo" icon="file-check">
    **Workflows de Qualidade:**

    * Análise automática de qualidade
    * Aprovação condicional
    * Loops de correção
  </Card>

  <Card title="Processamento de Leads" icon="user-check">
    **Qualificação Inteligente:**

    * Enriquecimento de dados
    * Scoring automático
    * Roteamento inteligente
  </Card>

  <Card title="Automação de Processos" icon="gear">
    **Business Process Automation:**

    * Workflows de aprovação
    * Processamento de documentos
    * Integração de sistemas
  </Card>

  <Card title="Análise de Dados" icon="chart-bar">
    **Pipelines de Dados:**

    * ETL complexos
    * Análise multi-etapa
    * Relatórios automáticos
  </Card>
</CardGroup>

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Sequential Agent" icon="arrow-right" href="/agents/sequential">
    Compare com workflows sequenciais simples
  </Card>

  <Card title="Parallel Agent" icon="arrow-right-arrow-left" href="/agents/parallel">
    Entenda execução paralela básica
  </Card>

  <Card title="Loop Agent" icon="recycle" href="/agents/loop">
    Explore loops iterativos simples
  </Card>

  <Card title="A2A Agent" icon="network-wired" href="/agents/a2a">
    Integre agentes externos em workflows
  </Card>
</CardGroup>

***

O Workflow Agent é a ferramenta mais poderosa para criar automações complexas. Use-o quando precisar de controle granular sobre cada etapa do processo e lógica de negócio sofisticada com múltiplas condições e caminhos de execução.
