Ir al contenido

Primer Test con Promptfoo

Vamos a crear nuestra primera Matriz de evaluación. El objetivo es simple: probaremos si nuestro prompt es capaz de generar tweets técnicos de calidad sobre diferentes temas, y mediremos si cumple con nuestros requisitos.

  1. Crea una carpeta para pruebas

    Crea una carpeta ai-tests.

    Ventana de terminal
    mkdir ai-tests
    cd ai-tests
  2. Inicializa Promptfoo

    Este comando interactivo creará la configuración base.

    Ventana de terminal
    npx promptfoo@latest init

    Cuando te pregunte, acepta los valores por defecto (pulsa Enter).

  3. Configura la API Key

    Promptfoo necesita acceso a Gemini. Asegúrate de tener tu variable de entorno configurada en tu terminal o crea un archivo .env en esa carpeta:

    Ventana de terminal
    export GOOGLE_API_KEY=tu_api_key_aqui
    # En Windows (PowerShell): $env:GOOGLE_API_KEY="tu_api_key"

2. El archivo de configuración (promptfooconfig.yaml)

Sección titulada «2. El archivo de configuración (promptfooconfig.yaml)»

Este es el corazón de tus tests. Aquí defines qué probar (Prompts), con quién probarlo (Modelos) y cómo validarlo (Tests).

Abre promptfooconfig.yaml y reemplaza su contenido con esto:

promptfooconfig.yaml
description: "Evaluador de Tweets Técnicos"
# 1. ¿Qué prompt queremos probar?
# Usamos {{topic}} como variable dinámica
prompts:
- "Escribe un tweet técnico y atractivo sobre {{topic}}. Usa emojis pero mantén un tono profesional."
# 2. ¿Qué modelos usaremos? (Podríamos comparar varios)
providers:
- "google:gemini-2.5-flash"
- "google:gemini-3-flash-preview"
# 3. ¿Qué casos de prueba ejecutaremos?
tests:
- vars:
topic: "Python vs JavaScript"
- vars:
topic: "Docker Containers"
# Aserciones simples (Tests Unitarios)
assert:
- type: contains
value: "Docker"
- type: max-length
value: 280 # Un tweet no puede pasar de 280 caracteres

Ahora, ejecutemos el test. Promptfoo tomará tus variables, las inyectará en el prompt, llamará a Gemini y verificará las aserciones.

Ventana de terminal
npx promptfoo eval

Verás una barra de progreso en tu terminal. Al finalizar, te mostrará un resumen de cuántos tests pasaron y cuántos fallaron.

La terminal está bien, pero la magia está en la UI web.

Ventana de terminal
npx promptfoo view

Esto abrirá una página web local (generalmente en http://localhost:15500) donde verás una Matriz Comparativa:

  • Columnas: Los modelos evaluados (Gemini).
  • Filas: Los casos de prueba (Python vs JS, Docker).
  • Celdas: La respuesta exacta que generó la IA y, lo más importante, si pasó o no el test (Verde/Rojo).

Ya sabemos verificar longitud (max-length) y contenido simple (contains). Pero, ¿cómo verificamos cosas subjetivas como “El tono es ofensivo” o “La respuesta es JSON válido”?

En el próximo capítulo veremos las Aserciones Avanzadas.