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

# Lógica

> Código Python executado antes de o agente falar — para preparar o contexto

## Para que serve a Lógica

A aba **Lógica** permite escrever código Python que é executado em momentos-chave do ciclo do agente. A partir daqui você pode calcular valores e preparar variáveis que depois usa na Mensagem Inicial ou nas Instruções do agente.

<img src="https://mintcdn.com/inceptia/2xrQ5P1QkQTHz4UH/images/construccion/agentes/logica/01-logica.png?fit=max&auto=format&n=2xrQ5P1QkQTHz4UH&q=85&s=93c175e9d8d888236808e27f8dfa42fa" alt="Aba Lógica com Código Inicial e Código Pré-Instruções" width="1440" height="900" data-path="images/construccion/agentes/logica/01-logica.png" />

***

## Os dois blocos de código

<AccordionGroup>
  <Accordion title="Código Inicial" icon="play">
    É executado **uma única vez** quando o agente é ativado pela primeira vez.

    Ideal para:

    * Calcular a data atual e salvá-la no contexto.
    * Preparar variáveis derivadas do arquivo de campanha.
    * Inicializar contadores ou flags de estado.

    ```python theme={null}
    from datetime import date

    context["agent_name"] = "Ana"
    context["today_formatted"] = date.today().strftime("%d de %B de %Y")
    context["max_attempts"] = 3
    ```

    Neste exemplo, `context["agent_name"] = "Ana"` define o nome com o qual o agente se apresenta. Essa variável é injetada automaticamente no prompt — é a mesma `{agent_name}` que você pode usar na Mensagem Inicial ou nas Instruções (veja [Identidade](/pt-BR/construccion/agentes/identidad)) — então, durante toda a conversa, o agente se chama "Ana".
  </Accordion>

  <Accordion title="Código Pré-Instruções" icon="rotate">
    É executado **antes de cada interação** com o LLM — ou seja, a cada turno da conversa.

    Ideal para:

    * Atualizar contadores ou flags de acordo com o que aconteceu no turno anterior.
    * Recalcular variáveis derivadas à medida que a conversa avança.
    * Registrar métricas ou logs por turno.

    ```python theme={null}
    context["turnos_decorridos"] = context.get("turnos_decorridos", 0) + 1
    ```
  </Accordion>
</AccordionGroup>

***

## O dicionário `context`

Todos os valores do agente — variáveis de campanha, estado da conversa, configuração dinâmica — vivem no dicionário `context`. Você pode ler e escrever livremente, e qualquer variável que você salvar ali fica disponível para uso com `{variable}` na Mensagem Inicial e nas Instruções do agente.

***

## Exemplo completo

```python theme={null}
# Código Inicial — executado uma vez ao ativar o agente
from datetime import date

context["agent_name"] = "Ana"
context["hoje"] = date.today().strftime("%d/%m/%Y")
context["turnos_decorridos"] = 0
```

```python theme={null}
# Código Pré-Instruções — executado antes de cada turno
context["turnos_decorridos"] = context.get("turnos_decorridos", 0) + 1
```

Com `turnos_decorridos` disponível no contexto, você pode referenciá-lo diretamente nas Instruções do agente, por exemplo:

```
Se já passaram mais de 5 turnos ({turnos_decorridos}) sem chegar a um acordo, resuma a proposta e pergunte diretamente se o contato aceita ou não.
```

<Tip>
  Para verificar se o seu código funciona como esperado, use **[Abrir conversa](/pt-BR/construccion/probar-tu-bot)** — você pode carregar variáveis de teste e ver em tempo real como o agente se comporta com os valores que você calculou na Lógica.
</Tip>
