Saltar al contenido principal

Prompt Arena: Tu Banco de Pruebas para Ingeniería de Prompts de Código

Herramienta interactiva para comparar y rankear la efectividad de diferentes prompts de ingeniería en la generación de código mediante LLMs.

GitHub Repository

Prompt Arena: Tu Banco de Pruebas para Ingeniería de Prompts de Código #

Prompt Arena - Herramienta interactiva

La calidad de un prompt es determinante para obtener resultados óptimos de los LLMs en tareas de programación. Prompt Arena nace como una solución para evaluar objetivamente diferentes formulaciones de prompts y crear un entorno competitivo para su mejora continua.

Un Campo de Batalla para tus Prompts #

Prompt Arena es una herramienta interactiva diseñada para comparar y rankear la efectividad de diferentes prompts de ingeniería cuando se aplican a la generación de código mediante LLMs. Permite enfrentar dos prompts, usar modelos locales (vía Ollama) o APIs (vía OpenRouter) para generar código para un problema específico, y evaluar el resultado para actualizar un ranking Elo de los prompts.

¿Por qué esta herramienta? #

La calidad del prompt es crucial para obtener buenos resultados de los LLMs, especialmente en tareas de generación de código. Sin embargo, saber qué prompt es "mejor" puede ser subjetivo y llevar mucho tiempo de prueba y error. Prompt Arena busca:

  • Objetivizar la comparación de prompts mediante evaluación estática y un sistema de ranking.
  • Facilitar la experimentación rápida con diferentes formulaciones de prompts.
  • Crear un "campo de batalla" lúdico donde los prompts compiten y evolucionan.
  • Proporcionar una plataforma para aprender y descubrir qué estructuras de prompt son más efectivas para problemas de codificación.

Tecnologías y Stack #

El proyecto utiliza un stack moderno centrado en Python:

  • Interfaz de Usuario: Gradio, permitiendo una experiencia interactiva y visual.
  • Modelos de Datos: Pydantic para una estructuración robusta de los datos.
  • Clientes LLM:
    • Integración con la API de OpenRouter (acceso a diversos modelos).
    • Conexión con servidores Ollama locales (para usar modelos como Llama 3, Mistral, etc., de forma privada).
  • Evaluación de Código:
    • ast.parse para validación de sintaxis Python.
    • pyflakes para detección de errores comunes y linting.
  • Sistema de Ranking: Algoritmo Elo para medir la fuerza relativa de los prompts.
  • Cliente HTTP: httpx para las comunicaciones con las APIs de LLM.

Características Principales #

Las funcionalidades que destacan en Prompt Arena incluyen:

  • Duelos de Prompts: Introduce dos prompts y observa cuál genera mejor código para un problema dado.
  • Banco de Problemas Extensible: Problemas de programación cargados desde una estructura de directorios fácil de ampliar (app/core/data/problems/).
  • Flexibilidad de LLMs: Elección entre modelos de OpenRouter o modelos locales servidos con Ollama.
  • Generación y Evaluación Automatizada: El sistema genera código con cada prompt y lo evalúa estáticamente.
  • Ranking Elo Dinámico: Los prompts (identificados por su hash) ganan o pierden puntos Elo según los resultados de la evaluación.
  • Interfaz Web Interactiva: Fácil de usar gracias a Gradio, permitiendo una experimentación ágil.
  • Código Modular y Organizado: Estructura clara del proyecto con módulos separados para las distintas funcionalidades.

Uso Básico #

Empezar a utilizar Prompt Arena es sencillo:

  1. Clona el repositorio y configura el entorno virtual.
  2. Instala las dependencias: pip install -r requirements.txt.
  3. Configura tus claves de API (OpenRouter) y opcionalmente la URL de Ollama en un archivo .env.
  4. Ejecuta la aplicación: python app/app.py.
  5. Abre la interfaz de Gradio en tu navegador y ¡que comience la batalla de prompts!

Aprendizajes y Contribuciones #

Este proyecto aporta varias contribuciones significativas:

  • Una herramienta práctica para mejorar sistemáticamente las habilidades de ingeniería de prompts para la generación de código.
  • Implementación de un sistema de ranking Elo aplicado a un contexto novedoso (calidad de prompts).
  • Integración fluida con múltiples backends de LLM (OpenRouter y Ollama) y herramientas de análisis de código Python.
  • Un excelente ejemplo de cómo usar Gradio para crear rápidamente interfaces interactivas para herramientas de ML/IA.

Estado Actual y Futuras Mejoras #

Actualmente Prompt Arena está funcional con evaluación estática de código. El roadmap incluye:

  • Evaluación funcional del código (ejecución de tests).
  • Persistencia de ratings Elo y leaderboard.
  • Más métricas de evaluación de código.

Al proporcionar un método sistemático para comparar y mejorar prompts, Prompt Arena ayuda a los desarrolladores a optimizar sus interacciones con modelos de lenguaje y a generar código de mejor calidad de manera más consistente.