DEV Community

Cover image for Cómo Probar Aplicaciones LLM: Guía Completa de Promptfoo (2026)
Roobia
Roobia

Posted on • Originally published at apidog.com

Cómo Probar Aplicaciones LLM: Guía Completa de Promptfoo (2026)

TL;DR

Promptfoo es un framework de evaluación y red-teaming de LLM de código abierto para que los desarrolladores prueben aplicaciones de IA de forma sistemática. Compatible con más de 90 proveedores de modelos, más de 67 plugins de ataque de seguridad y ejecución 100% local para máxima privacidad. Con más de 1.6 millones de descargas en npm y uso en producción en empresas con más de 10 millones de usuarios, se ha posicionado como estándar para pruebas de LLM. Instálelo con:

npm install -g promptfoo
promptfoo init --example getting-started
Enter fullscreen mode Exit fullscreen mode

Prueba Apidog hoy mismo

Introducción

¿Has pasado semanas construyendo un chatbot IA que funcionaba perfecto en desarrollo y luego en producción los usuarios logran que filtre datos sensibles, eluda medidas de seguridad o entregue respuestas inconsistentes? No eres el único. Lanzar aplicaciones LLM sin pruebas automatizadas produce vulnerabilidades y pérdidas de calidad difíciles (y costosas) de detectar post-lanzamiento.

Promptfoo resuelve este problema con pruebas automatizadas y sistemáticas para aplicaciones LLM. Permite evaluar prompts en múltiples modelos, hacer pruebas de "red team" de seguridad y detectar regresiones antes que lleguen a los usuarios.

En esta guía, aprenderás cómo configurar evaluaciones, escanear seguridad, integrar con CI/CD y evitar errores comunes. Al final, tendrás un set de pruebas funcional y podrás lanzar tu app LLM con confianza.

💡 Si trabajas con pruebas de API o necesitas validar el comportamiento de APIs junto con tus pruebas LLM, Apidog ofrece una plataforma unificada para diseño, pruebas y documentación de APIs. Usa promptfoo para LLM y Apidog para la capa de API.

¿Qué es Promptfoo y por qué lo necesitas?

Promptfoo es una CLI y librería Node.js para evaluar y hacer red-teaming de aplicaciones LLM. Es un framework de testing hecho para los retos propios de la IA generativa.

Promptfoo

Las herramientas tradicionales de testing no funcionan con LLM porque los resultados no son deterministas. Promptfoo soluciona esto con:

  • Aserciones semánticas que validan significado, no texto exacto.
  • Evaluaciones por LLM: un modelo califica la salida de otro.
  • Comparación multi-modelo: ejecuta el mismo prompt en GPT-4, Claude, etc.
  • Plugins de seguridad: ejecuta ataques automáticos para encontrar vulnerabilidades.

Ejecuta localmente: tus datos nunca salen de tu entorno salvo que actives funciones cloud.

El problema que resuelve Promptfoo

La mayoría de equipos hace pruebas LLM manuales (enviando prompts y revisando resultados). Esto falla por:

  1. No detecta regresiones: actualizaciones pueden romper funcionalidades existentes.
  2. Cobertura incompleta: los casos límite y adversarios se omiten.
  3. Sin métricas: no hay forma objetiva de medir o comparar.

Promptfoo automatiza la evaluación. Defines los casos una vez y los corres en cualquier modelo, obteniendo tasas de éxito/fallo, costos y métricas de latencia.

Quién usa Promptfoo

Con 1.6M de descargas npm, Promptfoo potencia aplicaciones para más de 10M de usuarios finales. Casos de uso:

  • Chatbots de soporte con respuestas consistentes.
  • Pipelines de generación de contenido.
  • Apps de salud/finanzas con requisitos estrictos.
  • Sistemas sensibles a la seguridad.

Desde marzo 2026, Promptfoo es parte de OpenAI, sigue siendo open-source y con licencia MIT.

Primeros pasos: Instala y ejecuta tu primera evaluación

Puedes instalar promptfoo globalmente o usarlo con npx.

Instalación

# Instalación global recomendada
npm install -g promptfoo

# O ejecútalo sin instalar
npx promptfoo@latest

# En macOS vía Homebrew
brew install promptfoo

# En Python vía pip
pip install promptfoo
Enter fullscreen mode Exit fullscreen mode

Configura tus claves API como variables de entorno:

export OPENAI_API_KEY=sk-abc123
export ANTHROPIC_API_KEY=sk-ant-xxx
Enter fullscreen mode Exit fullscreen mode

Crea tu primera evaluación

Inicializa un proyecto de ejemplo:

promptfoo init --example getting-started
cd getting-started
Enter fullscreen mode Exit fullscreen mode

Esto crea promptfooconfig.yaml con prompts, proveedores y pruebas de ejemplo.

Ejecuta la evaluación:

promptfoo eval
Enter fullscreen mode Exit fullscreen mode

Visualiza los resultados en la interfaz web:

promptfoo view
Enter fullscreen mode Exit fullscreen mode

La UI abre en localhost:3000 y muestra comparaciones lado a lado y estado de aprobado/fallado por aserción.

Comprendiendo el archivo de configuración

El promptfooconfig.yaml define tu suite de evaluación:

description: "Mi primera suite de evaluación"

prompts:
  - prompts/greeting.txt
  - prompts/farewell.txt

providers:
  - openai:gpt-4o
  - anthropic:claude-sonnet-4-5

tests:
  - vars:
      input: "Hola"
    assert:
      - type: contains
        value: "Hola"
      - type: latency
        threshold: 3000
Enter fullscreen mode Exit fullscreen mode
  • prompts: Archivos o texto inline.
  • providers: Modelos a evaluar.
  • tests: Casos de prueba y aserciones.

Escala a cientos de pruebas. Versiona tu configuración y ejecútala en CI en cada pull request.

Funciones principales: Qué puede hacer Promptfoo

1. Evaluaciones automatizadas

Define casos de prueba y resultados esperados. Promptfoo los ejecuta contra tus modelos.

Tipos de aserción

Más de 30 tipos integrados:

Aserción Propósito
contains Salida incluye una subcadena
equals Coincidencia exacta de cadena
regex Patrón de expresión regular
json-schema Valida estructura JSON
javascript Función JS personalizada
python Función Python personalizada
llm-rubric LLM califica la salida
similar Similitud semántica
latency Tiempo de respuesta bajo umbral
cost Costo por solicitud bajo umbral

Ejemplo con varias aserciones:

tests:
  - vars:
      question: "¿Cuál es la capital de Francia?"
    assert:
      - type: contains
        value: "París"
      - type: javascript
        value: output.length < 100
      - type: latency
        threshold: 2000
      - type: cost
        threshold: 0.001
Enter fullscreen mode Exit fullscreen mode

Evaluaciones por LLM

llm-rubric permite que un LLM califique la salida de otro, útil para tono o utilidad:

assert:
  - type: llm-rubric
    value: "La respuesta debe ser útil, inofensiva y honesta"
Enter fullscreen mode Exit fullscreen mode

Puedes usar un modelo económico para calificar y ahorrar costos.

2. Red Teaming y pruebas de seguridad

El módulo de "red team" genera entradas adversarias automáticamente para detectar vulnerabilidades.

Red Team

Vectores de ataque soportados

Categoría Lo que prueba
Inyección de Prompts Inyección directa, indirecta, de contexto
Jailbreaks DAN, cambio de persona, bypass de rol
Exfiltración de Datos SSRF, extracción de prompts del sistema, fuga de prompts
Contenido Nocivo Discurso de odio, autolesión, actividades peligrosas
Cumplimiento Fuga de PII, HIPAA, datos financieros
Audio/Visual Inyección de audio y ataques visuales

Ejecutando un escaneo de "red team"

Inicializa configuración:

promptfoo redteam init
Enter fullscreen mode Exit fullscreen mode

Ejecuta el escaneo:

promptfoo redteam run
Enter fullscreen mode Exit fullscreen mode

Ver informe:

promptfoo redteam report [directorio]
Enter fullscreen mode Exit fullscreen mode

redteam run genera sondas de ataque y evalúa vulnerabilidades, con calificaciones de severidad y recomendaciones.

Ejemplo de salida:

Resumen de Vulnerabilidades:
- Crítica: 2 (fuga de PII, extracción de prompt)
- Alta: 5 (jailbreaks, inyecciones)
- Media: 12 (sesgo, respuestas inconsistentes)
- Baja: 23 (violaciones menores de políticas)
Enter fullscreen mode Exit fullscreen mode

Soluciona problemas críticos antes de desplegar. Repite los escaneos tras cada cambio.

3. Escaneo de código en pull requests

Integración con GitHub Actions para escanear PRs:

# .github/workflows/promptfoo-scan.yml
name: Escaneo de código Promptfoo
on: [pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: promptfoo/promptfoo/code-scan-action@main
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
Enter fullscreen mode Exit fullscreen mode

Detecta claves API expuestas, prompts inseguros, falta de validación y vectores de inyección.

4. Comparación de modelos

Compara resultados lado a lado:

promptfoo eval
promptfoo view
Enter fullscreen mode Exit fullscreen mode

La UI muestra tasas de éxito/fallo, costos, latencia y diferencias cualitativas por modelo.

Proveedores soportados: Más de 90 integraciones LLM

Promptfoo soporta más de 90 proveedores. Prueba el mismo prompt en OpenAI, Anthropic, Google, Amazon y modelos locales sin cambiar código.

Principales proveedores

Proveedor Modelos principales
OpenAI GPT-4, GPT-4o, GPT-4o-mini, o1, o3
Anthropic Claude 3.5/3.7/4.5/4.6, Thinking
Google Gemini 1.5/2.0, Vertex AI
Microsoft Azure OpenAI, Phi
Amazon Bedrock (Claude, Llama, Titan)
Meta Llama 3, 3.1, 3.2 (vía varios proveedores)
Ollama Modelos locales (Llama, Mistral, Phi)

Proveedores personalizados

Escribe proveedores propios en Python o JavaScript.

Ejemplo Python:

# custom_provider.py
from typing import Any

class CustomProvider:
    async def call_api(self, prompt: str, options: dict, context: dict) -> dict:
        response = await my_async_api.generate(prompt)
        return {
            "output": response.text,
            "tokenUsage": {
                "total": response.usage.total_tokens,
                "prompt": response.usage.prompt_tokens,
                "completion": response.usage.completion_tokens
            }
        }
Enter fullscreen mode Exit fullscreen mode

Ejemplo JavaScript:

// customProvider.js
export default class CustomProvider {
  async callApi(prompt) {
    return {
      output: await myApi.generate(prompt),
      tokenUsage: { total: 50, prompt: 20, completion: 30 }
    };
  }
}
Enter fullscreen mode Exit fullscreen mode

Regístralos en la configuración:

providers:
  - id: file://custom_provider.py
    config:
      api_key: ${MY_API_KEY}
Enter fullscreen mode Exit fullscreen mode

Interfaz de línea de comandos: Comandos esenciales

La CLI cubre todo lo necesario para flujos diarios.

Comandos principales

# Ejecutar evaluaciones
promptfoo eval -c promptfooconfig.yaml

# Abrir interfaz web
promptfoo view

# Compartir resultados online
promptfoo share

# Pruebas de "red team"
promptfoo redteam init
promptfoo redteam run

# Configuración
promptfoo init
promptfoo validate [config]

# Gestión de resultados
promptfoo list
promptfoo show <id>
promptfoo delete <id>
promptfoo export <id>

# Utilidades
promptfoo cache clear
promptfoo retry <id>
Enter fullscreen mode Exit fullscreen mode

Banderas útiles

--no-cache              # Desactiva caché para resultados frescos
--max-concurrency <n>   # Limita llamadas paralelas
--output <file>         # Escribe resultados en JSON
--verbose               # Activa logs detallados
--env-file <path>       # Carga variables de entorno desde archivo
--filter <pattern>      # Ejecuta pruebas específicas
Enter fullscreen mode Exit fullscreen mode

Ejemplo: Evaluación con configuración personalizada

promptfoo eval \
  -c promptfooconfig.yaml \
  --no-cache \
  --max-concurrency 3 \
  --output results.json \
  --env-file .env
Enter fullscreen mode Exit fullscreen mode

Integración CI/CD: Automatiza tus pruebas LLM

Integra promptfoo en tu pipeline CI/CD para detectar regresiones antes de desplegar.

Ejemplo GitHub Actions

name: Pruebas LLM
on: [push, pull_request]
jobs:
  eval:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '22'
      - run: npm install -g promptfoo
      - run: promptfoo eval -c promptfooconfig.yaml
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
Enter fullscreen mode Exit fullscreen mode

Puertas de calidad

Establece umbrales de éxito/fallo:

commandLineOptions:
  threshold: 0.8  # Requiere 80% de aprobados
Enter fullscreen mode Exit fullscreen mode

CI fallará si no se cumple el umbral.

Caché en CI

Acelera ejecuciones con caché:

- uses: actions/cache@v4
  with:
    path: ~/.cache/promptfoo
    key: ${{ runner.os }}-promptfoo-${{ hashFiles('promptfooconfig.yaml') }}
Enter fullscreen mode Exit fullscreen mode

Interfaz web: Visualiza y comparte resultados

La UI (promptfoo view) permite analizar evaluaciones de forma interactiva.

Características

  • Matriz de evaluación: comparación lado a lado.
  • Filtrado: busca casos concretos por estado o proveedor.
  • Vista de diferencias: muestra cambios entre ejecuciones.
  • Compartir: enlaces compartibles para revisión en equipo.
  • Actualizaciones en tiempo real: sigue las evaluaciones en vivo.

Acceso y seguridad

Por defecto en localhost:3000 con protección CSRF. No expongas el servidor a redes no confiables. Usa promptfoo share para compartir en la nube o autoalójalo con autenticación.

Base de datos y caché

Ubicación de la caché

  • macOS/Linux: ~/.cache/promptfoo
  • Windows: %LOCALAPPDATA%\promptfoo

Usa la caché para acelerar ejecuciones repetidas. Usa --no-cache para resultados frescos.

Ubicación de la base de datos

  • Todas las plataformas: ~/.promptfoo/promptfoo.db (SQLite)

No elimines este archivo salvo que quieras perder datos históricos.

Modelo de seguridad: ¿En qué puedes confiar?

Promptfoo opera bajo modelo de confianza por configuración.

Entradas de confianza (tratadas como código)

  • Archivos de configuración (promptfooconfig.yaml)
  • Aserciones personalizadas JS/Python/Ruby
  • Configuración de proveedores
  • Funciones de transformación

Entradas no confiables (solo datos)

  • Texto del prompt
  • Variables de pruebas
  • Resultados del modelo
  • Contenido remoto obtenido durante testings

Recomendaciones de endurecimiento

  1. Ejecuta en contenedor/VM con privilegios mínimos.
  2. Usa API keys de bajo privilegio.
  3. No incluyas secretos en prompts/config.
  4. Restringe salida de red para código externo.
  5. No expongas el server web a redes no confiables.

Rendimiento: Optimiza tus evaluaciones

Consejos de optimización

  1. Usa caché para acelerar ejecuciones repetidas.
  2. Ajusta concurrencia con --max-concurrency.
  3. Filtra pruebas con --filter durante desarrollo.
  4. Subconjuntos de pruebas con --repeat para iterar rápido.

Escalado para grandes evaluaciones

  • Usa el scheduler (src/scheduler/) para ejecuciones distribuidas.
  • Generación remota para descargar cómputo.
  • Exporta resultados a Google Sheets para visibilidad.

Extensibilidad: Construye funciones personalizadas

Aserciones personalizadas

Crea aserciones propias para tu dominio:

// assertions/customCheck.js
export default function customCheck(output, context) {
  const pass = output.includes('expected');
  return {
    pass,
    score: pass ? 1 : 0,
    reason: pass ? 'Output matched' : 'Missing expected content'
  };
}
Enter fullscreen mode Exit fullscreen mode

Úsalo en la configuración:

assert:
  - type: file://assertions/customCheck.js
Enter fullscreen mode Exit fullscreen mode

Servidor MCP

Promptfoo incluye servidor MCP para integrar con asistentes IA:

promptfoo mcp
Enter fullscreen mode Exit fullscreen mode

Permite a agentes IA:

  • Ejecutar evaluaciones desde chat.
  • Acceder a capacidades de red team.
  • Consultar resultados almacenados.
  • Generar casos de prueba.

Casos de uso en el mundo real

Chatbot de soporte al cliente

  • 500 pruebas de preguntas comunes.
  • Comparación GPT-4 vs Claude.
  • Escaneos de red team para PII y jailbreaks.
  • CI bloquea despliegues si fallan evaluaciones.
  • Resultado: 90% menos issues reportados tras automatizar pruebas.

Pipeline de generación de contenido

  • LLM evalúa tono y estilo.
  • Umbrales de latencia.
  • Monitoreo de costos.
  • Comparación de proveedores.
  • Resultado: Voz de marca consistente y 40% menos costos API.

Aplicación de atención médica

  • Escaneos de red team para HIPAA.
  • Aserciones personalizadas para precisión médica.
  • Ejecución local para privacidad.
  • Registros de auditoría.
  • Resultado: Auditoría SOC 2 aprobada usando promptfoo como evidencia.

Conclusión

Promptfoo lleva el testing sistemático a las aplicaciones LLM, reemplazando pruebas manuales por evaluaciones automatizadas que detectan regresiones, seguridad y calidad antes de desplegar.

Resumen de acciones:

  • Instala con npm install -g promptfoo y arranca con promptfoo init.
  • Usa aserciones que validan más allá del texto exacto.
  • Ejecuta escaneos de "red team" para seguridad.
  • Integra con CI/CD y bloquea regresiones.
  • Compara modelos objetivamente.
  • Usa proveedores y aserciones personalizadas para máxima flexibilidad.

El futuro del desarrollo IA es data-driven. Promptfoo te da las herramientas para construir, probar y asegurar aplicaciones LLM a escala.

Si también trabajas con APIs, considera usar Apidog junto con promptfoo. Apidog cubre diseño, pruebas y documentación de APIs; promptfoo se enfoca en LLM. Juntos cubren el stack completo de pruebas para aplicaciones modernas.

Preguntas frecuentes

¿Para qué se utiliza promptfoo?

Para probar y evaluar aplicaciones LLM: ejecuta pruebas automatizadas contra prompts, compara resultados entre modelos y realiza escaneos de seguridad tipo "red team".

¿Es promptfoo gratuito?

Sí, es open source bajo licencia MIT. Gratis para uso personal y comercial. Funcionalidades cloud/soporte empresarial pueden ser de pago.

¿Cómo instalo promptfoo?

npm install -g promptfoo para instalar globalmente, o npx promptfoo@latest, brew install promptfoo, o pip install promptfoo para Python.

¿Qué modelos soporta promptfoo?

Más de 90 proveedores, incluyendo OpenAI (GPT-4, GPT-4o, o1), Anthropic (Claude 3.5/4/4.5), Google (Gemini), Microsoft (Azure OpenAI), Amazon Bedrock y modelos locales vía Ollama.

¿Cómo ejecuto un escaneo de "red team"?

promptfoo redteam init para crear la config, luego promptfoo redteam run para ejecutar, y promptfoo redteam report para ver resultados.

¿Puedo usar promptfoo en CI/CD?

Sí. Instala promptfoo en tu pipeline y ejecuta promptfoo eval con tu configuración. Aplica puertas de calidad (threshold) para que CI falle si no se cumple el mínimo de aprobados.

¿Promptfoo envía mis datos a servidores externos?

No. Por defecto todo se ejecuta localmente. Solo si activas funciones cloud tus datos salen de tu máquina. Archivos de caché y DB son locales.

¿Cómo comparo modelos con promptfoo?

Agrega varios proveedores en tu config y ejecuta promptfoo eval. Visualiza comparaciones en la UI web (promptfoo view) con datos de éxito, costo y latencia por modelo.

Top comments (0)