---
title: Variables
---

import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Image } from '@/components/ui/image'

El bloque Variables actualiza las variables del flujo de trabajo durante la ejecución. Las variables deben inicializarse primero en la sección Variables de tu flujo de trabajo, luego puedes usar este bloque para actualizar sus valores mientras se ejecuta tu flujo de trabajo.

<div className="flex justify-center">
  <Image
    src="/static/blocks/variables.png"
    alt="Bloque de Variables"
    width={500}
    height={350}
    className="my-6"
  />
</div>

<Callout>
  Accede a las variables en cualquier parte de tu flujo de trabajo usando la sintaxis `<variable.variableName>`.
</Callout>

## Descripción general

El bloque Variables te permite:

<Steps>
  <Step>
    <strong>Actualizar variables del flujo de trabajo</strong>: Cambiar valores de variables durante la ejecución
  </Step>
  <Step>
    <strong>Almacenar datos dinámicos</strong>: Capturar salidas de bloques en variables
  </Step>
  <Step>
    <strong>Mantener el estado</strong>: Seguir contadores, indicadores y resultados intermedios
  </Step>
</Steps>

## Cómo usar Variables

### 1. Inicializar en Variables del flujo de trabajo

Primero, crea tus variables en la sección Variables del flujo de trabajo (accesible desde la configuración del flujo de trabajo):

```
customerEmail = ""
retryCount = 0
currentStatus = "pending"
```

### 2. Actualizar con el bloque Variables

Usa el bloque Variables para actualizar estos valores durante la ejecución:

```
customerEmail = <api.email>
retryCount = <variable.retryCount> + 1
currentStatus = "processing"
```

### 3. Acceder desde cualquier lugar

Referencia variables en cualquier bloque:

```
Agent prompt: "Send email to <variable.customerEmail>"
Condition: <variable.retryCount> < 5
API body: {"status": "<variable.currentStatus>"}
```

## Ejemplos de casos de uso

### Contador de bucle y estado

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">Escenario: Seguimiento del progreso a través de iteraciones de bucle</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>Inicializar en el flujo de trabajo: `itemsProcessed = 0`, `lastResult = ""`</li>
    <li>El bucle itera sobre elementos</li>
    <li>Dentro del bucle: El agente procesa el elemento actual</li>
    <li>Dentro del bucle: Variables actualiza `itemsProcessed = <variable.itemsProcessed> + 1`</li>
    <li>Dentro del bucle: Variables actualiza `lastResult = <agent.content>`</li>
    <li>Siguiente iteración: Accede a `<variable.lastResult>` para comparar con el resultado actual</li>
  </ol>
</div>

### Lógica de reintentos

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">Escenario: Seguimiento de intentos de reintento de API</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>Inicializar en el flujo de trabajo: `retryCount = 0`</li>
    <li>El bloque API intenta realizar la solicitud</li>
    <li>Si falla, Variables incrementa: `retryCount = <variable.retryCount> + 1`</li>
    <li>La condición verifica si `<variable.retryCount>` \< 3 para reintentar o fallar</li>
  </ol>
</div>

### Configuración dinámica

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">Escenario: Almacenar contexto de usuario para el flujo de trabajo</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>Inicializar en el flujo de trabajo: `userId = ""`, `userTier = ""`</li>
    <li>La API obtiene el perfil del usuario</li>
    <li>Variables almacena: `userId = <api.id>`, `userTier = <api.tier>`</li>
    <li>El agente personaliza la respuesta usando `<variable.userTier>`</li>
    <li>La API usa `<variable.userId>` para el registro</li>
  </ol>
</div>

## Salidas

- **`<variables.assignments>`**: Objeto JSON con todas las asignaciones de variables de este bloque

## Mejores prácticas

- **Inicializar en la configuración del flujo de trabajo**: Siempre crea variables en la sección Variables del flujo de trabajo antes de usarlas
- **Actualizar dinámicamente**: Usa bloques de Variables para actualizar valores basados en salidas de bloques o cálculos
- **Usar en bucles**: Perfecto para rastrear el estado a través de iteraciones
- **Nombrar descriptivamente**: Usa nombres claros como `currentIndex`, `totalProcessed`, o `lastError`
