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

# Bloco Condição

> Crie ramificações no fluxo baseadas em decisões da IA ou regras fixas

## O que é o Bloco Condição?

O bloco **Condição** permite criar ramificações no fluxo do agente — ou seja, caminhos diferentes dependendo de uma situação. Ele funciona de duas formas:

* **Modo LLM**: A inteligência artificial analisa a conversa e decide qual caminho seguir
* **Modo Determinístico**: Uma regra fixa avalia uma variável e direciona automaticamente (sem usar IA)

### Quando usar cada modo?

| Modo | Quando usar | Exemplo |
| - | - | - |
| **LLM** | Quando a decisão depende do *contexto da conversa* | "O cliente quer comprar ou tirar dúvida?" |
| **Determinístico** | Quando a decisão depende de um *dado objetivo* | "O cliente é do plano premium?" |

***

## Modo LLM (IA decide)

No modo LLM, o agente de IA analisa a conversa em tempo real e escolhe automaticamente qual caminho seguir. Você cria as ramificações e descreve cada uma — a IA usa essas descrições para decidir.

### Como funciona

```
Mensagem do cliente → IA analisa o contexto → Escolhe a ramificação
                                                     │
                                                     ├─ "Quer saber preço" → Bloco Cotação
                                                     │
                                                     ├─ "Dúvida geral" → Base de Conhecimento
                                                     │
                                                     └─ Else (outros) → IA responde livremente
```

### Configuração

<Steps>
  <Step title="Escolha o modo LLM">
    No painel de configuração, selecione o modo **LLM** (é o padrão).
  </Step>

  <Step title="Nomeie a condição">
    Dê um nome descritivo (ex: "Intenção do cliente", "Tipo de solicitação").
  </Step>

  <Step title="Crie as ramificações">
    Clique em **+ Adicionar ramificação** e configure cada uma:

    | Campo | Descrição | Exemplo |
    | - | - | - |
    | **Label** | Nome curto exibido no bloco | "Quer saber preço" |
    | **Descrição** | Explicação para a IA entender quando usar | "Cliente pergunta sobre valores, preços, cotações ou tarifas" |
  </Step>

  <Step title="Configure a saída padrão (Else)">
    Defina o que acontece quando nenhuma ramificação corresponde. Esta é a saída "Else" — o caminho para todos os outros casos.
  </Step>

  <Step title="Conecte cada saída a um bloco">
    No canvas, arraste conexões de cada saída para o bloco correspondente (Cotação, FAQ, Transferência, etc.).
  </Step>
</Steps>

### Boas práticas para o modo LLM

<Tip>
  Quanto mais detalhada a descrição de cada ramificação, mais precisa será a decisão da IA. Pense em todas as variações que o cliente pode usar.
</Tip>

| Descrição ruim | Descrição boa |
| - | - |
| "Preço" | "Cliente pergunta sobre valores, preços, cotações, tarifas, quanto custa, ou quer fazer orçamento" |
| "Suporte" | "Cliente reporta problema, erro, bug, ou precisa de ajuda técnica com produto já adquirido" |

### Exemplos por segmento

<Tabs>
  <Tab title="Hotel">
    | Ramificação | Descrição |
    | - | - |
    | Quer reservar | Cliente quer fazer cotação, reserva, saber preços de hospedagem |
    | Dúvidas | Pergunta sobre instalações, serviços, localização |
    | Problema | Reporta insatisfação, reclamação, problema com estadia |
    | **Else** | Outros assuntos |
  </Tab>

  <Tab title="E-commerce">
    | Ramificação | Descrição |
    | - | - |
    | Compra | Quer comprar, saber preço, ver catálogo |
    | Rastreio | Quer status do pedido, prazo de entrega |
    | Troca/Devolução | Quer trocar ou devolver produto |
    | **Else** | Outros assuntos |
  </Tab>

  <Tab title="Clínica">
    | Ramificação | Descrição |
    | - | - |
    | Agendamento | Quer marcar consulta, exame |
    | Resultado | Quer saber resultado de exame |
    | Cancelamento | Quer cancelar ou remarcar |
    | **Else** | Outros assuntos |
  </Tab>
</Tabs>

***

## Modo Determinístico (Regra fixa)

No modo Determinístico, o bloco avalia uma **variável** usando uma **regra fixa** — sem envolver a IA. A variável vem de um bloco **Buscar Dados** conectado antes dele.

### Como funciona

```
[Buscar Dados] → armazena valor em "fetched.plano"
        ↓
[Condição Determinística]
        ↓
   fetched.plano = "premium" ?
        ↓
   ┌────┴────┐
   │         │
 true      false
   │         │
[VIP]    [Normal]
```

<Note>
  O modo Determinístico **não usa IA** para decidir. A avaliação é instantânea e sempre produz o mesmo resultado para o mesmo valor — por isso chamamos de "determinístico".
</Note>

### Configuração

<Steps>
  <Step title="Escolha o modo Determinístico">
    No painel de configuração, selecione o modo **Determinístico**.
  </Step>

  <Step title="Configure a regra">
    Preencha os três campos da regra:

    | Campo | Descrição | Exemplo |
    | - | - | - |
    | **Variável** | A variável do bloco Buscar Dados | `fetched.plano` |
    | **Operador** | Como comparar o valor | Igual a |
    | **Valor** | O que comparar | `premium` |
  </Step>

  <Step title="Conecte as saídas">
    O bloco tem duas saídas fixas:

    * **True** (verdadeiro): a regra foi atendida
    * **False** (falso): a regra não foi atendida

    Conecte cada saída ao bloco desejado.
  </Step>
</Steps>

### Operadores disponíveis

| Operador | Significado | Exemplo | Resultado |
| - | - | - | - |
| **Igual a** | Valor é exatamente igual | `fetched.plano` igual a `premium` | true se plano é "premium" |
| **Diferente de** | Valor é qualquer outro | `fetched.status` diferente de `ativo` | true se status não é "ativo" |
| **Contém** | Texto contém a palavra | `fetched.nome` contém `hotel` | true se nome inclui "hotel" |
| **Está vazio** | Valor não existe ou é vazio | `fetched.plano` está vazio | true se plano não foi preenchido |
| **Não está vazio** | Valor existe | `fetched.plano` não está vazio | true se plano tem algum valor |
| **Maior que** | Número é maior | `fetched.idade` maior que `18` | true se `idade > 18` |
| **Menor que** | Número é menor | `fetched.score` menor que `5` | true se `score < 5` |
| **Maior ou igual** | Número é maior ou igual | `fetched.total` maior ou igual `100` | true se `total >= 100` |
| **Menor ou igual** | Número é menor ou igual | `fetched.dias` menor ou igual `30` | true se `dias <= 30` |

<Tip>
  Para os operadores **Está vazio** e **Não está vazio**, não é necessário preencher o campo "Valor". Eles verificam apenas se a variável tem ou não conteúdo.
</Tip>

### Variável com prefixo `fetched.`

A variável usada na regra deve obrigatoriamente começar com `fetched.` — que é o prefixo definido no bloco **Buscar Dados** anterior. O sistema adiciona esse prefixo automaticamente.

**Exemplos:**

| Bloco Buscar Dados | Variável na Condição |
| - | - |
| `fetched.plano` | `fetched.plano` |
| `fetched.cliente_habitue` | `fetched.cliente_habitue` |
| `fetched.status_pagamento` | `fetched.status_pagamento` |

### Preview da regra

O painel mostra um preview em tempo real da regra configurada:

```
Se fetched.plano Igual a premium
Saídas: true (condição verdadeira) / false (condição falsa)
```

***

## Exemplos Práticos

### Cadeia completa: Buscar Dados + Condição

O uso mais comum do modo Determinístico é em conjunto com o bloco Buscar Dados:

<Tabs>
  <Tab title="Hotel - Cliente VIP">
    ```
    [Início]
        ↓
    [Buscar Dados]
    Fonte: Atributo do Contato
    Chave: cliente_habitue
    Variável: fetched.cliente_habitue
        ↓
    [Condição Determinística]
    Se fetched.cliente_habitue Igual a "true"
        ↓
    ┌────┴────┐
    │         │
    true      false
    │         │
    ↓         ↓
    [Handoff]  [Roteador]
    Equipe VIP  Fluxo normal
    ```
  </Tab>

  <Tab title="SaaS - Plano do cliente">
    ```
    [Início]
        ↓
    [Buscar Dados]
    Fonte: Atributo do Contato
    Chave: plano
    Variável: fetched.plano
        ↓
    [Condição Determinística]
    Se fetched.plano Igual a "enterprise"
        ↓
    ┌────┴────┐
    │         │
    true      false
    │         │
    ↓         ↓
    [Handoff]  [IA responde]
    Suporte    Atendimento
    dedicado   padrão
    ```
  </Tab>

  <Tab title="Financeiro - Status de pagamento">
    ```
    [Roteador]
    Rota: "Financeiro"
        ↓
    [Buscar Dados]
    Fonte: Atributo da Conversa
    Chave: status_pagamento
    Variável: fetched.status
        ↓
    [Condição Determinística]
    Se fetched.status Igual a "inadimplente"
        ↓
    ┌────┴────┐
    │         │
    true      false
    │         │
    ↓         ↓
    [Handoff]  [IA responde]
    Cobrança   Normalmente
    ```
  </Tab>
</Tabs>

***

## Perguntas Frequentes

<AccordionGroup>
  <Accordion title="Qual a diferença entre Condição e Roteador?">
    | Aspecto | Condição | Roteador |
    | - | - | - |
    | **Saídas** | 2-N ramificações (modo LLM) ou true/false (determinístico) | Múltiplas rotas por intenção |
    | **Decisão** | Pode ser por IA ou regra fixa | Sempre por IA |
    | **Uso principal** | Ramificações simples e decisões baseadas em dados | Classificação de intenções do cliente |

    Em geral, use o **Roteador** como primeiro ponto de decisão (o que o cliente quer) e o **Condição** para decisões internas (verificar dados, planos, status).
  </Accordion>

  <Accordion title="Posso usar o modo LLM e Determinístico no mesmo fluxo?">
    Sim. Você pode ter múltiplos blocos Condição no fluxo, cada um no modo mais adequado. Por exemplo: um bloco Condição Determinístico no início (para verificar o plano do cliente) e blocos Condição LLM depois do Roteador (para decisões que dependem da conversa).
  </Accordion>

  <Accordion title="O modo Determinístico funciona sem o bloco Buscar Dados?">
    Não é recomendado. O modo Determinístico foi projetado para avaliar variáveis que vêm do bloco Buscar Dados (com prefixo `fetched.`). Sem ele, não haverá valor na variável para avaliar.
  </Accordion>

  <Accordion title="O que acontece se a variável estiver vazia no modo Determinístico?">
    Se a variável não tiver valor, operadores como "Igual a" retornam **false** (pois vazio não é igual a nenhum valor). Use o operador **Está vazio** se quiser tratar esse caso específico.
  </Accordion>

  <Accordion title="Quantas ramificações posso ter no modo LLM?">
    Não há limite técnico, mas recomendamos no máximo 4-5 ramificações para que a IA consiga decidir com precisão. Se precisar de muitas ramificações, considere usar o bloco **Roteador** que foi projetado para classificação de intenções.
  </Accordion>
</AccordionGroup>

***

## Próximos passos

<CardGroup cols={2}>
  <Card title="Bloco Buscar Dados" icon="database" href="/administradores/flow-builder/bloco-buscar-dados">
    Configure a fonte de dados para a condição determinística.
  </Card>

  <Card title="Bloco Roteador" icon="arrows-split-up-and-left" href="/administradores/flow-builder/blocos-disponiveis#bloco-roteador">
    Direcione conversas por intenção do cliente.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.