> ## 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 que se ejecuta antes de que el agente hable — para preparar el contexto

## Para qué sirve la Lógica

La tab **Lógica** te permite escribir código Python que se ejecuta en momentos clave del ciclo del agente. Desde acá podés calcular valores y preparar variables que después usás en el Mensaje Inicial o en las Instrucciones del 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="Tab Lógica con Código Inicial y Código Pre Instrucciones" width="1440" height="900" data-path="images/construccion/agentes/logica/01-logica.png" />

***

## Los dos bloques de código

<AccordionGroup>
  <Accordion title="Código Inicial" icon="play">
    Se ejecuta **una sola vez** cuando el agente se activa por primera vez.

    Ideal para:

    * Calcular la fecha actual y guardarla en el contexto.
    * Preparar variables derivadas del archivo de campaña.
    * Inicializar contadores o banderas 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
    ```

    En este ejemplo, `context["agent_name"] = "Ana"` define el nombre con el que se presenta el agente. Esa variable se inyecta automáticamente en el prompt — es la misma `{agent_name}` que podés usar en el Mensaje Inicial o las Instrucciones (ver [Identidad](/construccion/agentes/identidad)) — así que durante toda la conversación el agente se llama "Ana".
  </Accordion>

  <Accordion title="Código Pre Instrucciones" icon="rotate">
    Se ejecuta **antes de cada interacción** con el LLM — es decir, en cada turno de la conversación.

    Ideal para:

    * Actualizar contadores o banderas según lo que pasó en el turno anterior.
    * Recalcular variables derivadas a medida que avanza la conversación.
    * Registrar métricas o logs por turno.

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

***

## El diccionario `context`

Todos los valores del agente — variables de campaña, estado de la conversación, configuración dinámica — viven en el diccionario `context`. Podés leer y escribir libremente, y cualquier variable que guardes ahí queda disponible para usar con `{variable}` en el Mensaje Inicial y en las Instrucciones del agente.

***

## Ejemplo completo

```python theme={null}
# Código Inicial — se ejecuta una vez al activarse el agente
from datetime import date

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

```python theme={null}
# Código Pre Instrucciones — se ejecuta antes de cada turno
context["turnos_transcurridos"] = context.get("turnos_transcurridos", 0) + 1
```

Con `turnos_transcurridos` disponible en el contexto, podés referenciarlo directamente en las Instrucciones del agente, por ejemplo:

```
Si ya pasaron más de 5 turnos ({turnos_transcurridos}) sin llegar a un acuerdo, resumí la propuesta y preguntá directamente si el contacto acepta o no.
```

<Tip>
  Para verificar que tu código funciona como esperás, usá **[Abrir conversación](/construccion/probar-tu-bot)** — podés cargar variables de prueba y ver en tiempo real cómo se comporta el agente con los valores que calculaste en Lógica.
</Tip>
