Introducción
¿Alguna vez has pensado cuánto tiempo y esfuerzo puede ahorrarte una pipeline CI/CD que utilice un modelo de lenguaje avanzado para la revisión de código? En este artículo descubriremos paso a paso cómo integrarChatGPTconGitHub Actions, diseñar prompts eficaces, gestionar costos y latencia, y mantener todo bajo control. Si deseas reducir los bugs, acelerar los lanzamientos y aprovechar la inteligencia artificial, ¡continúa leyendo!
1. Configurar un workflow de GitHub Actions que llame a la API de ChatGPT
1.1 Crear un token de acceso a OpenAI
- Ve aOpenAI API keys.
- Crea una nueva clave y guárdala en.github/secrets/OPENAI_API_KEY.
1.2 Estructurar el workflow YAML
A continuación un ejemplo de workflow que realiza la revisión de código al final de una prueba:
name: Review Code with ChatGPT
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
review:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
continue-on-error: true
- name: Gather diff
id: diff
run: |
echo "diff=$(git diff --name-only HEAD~1)" >> $GITHUB_OUTPUT
- name: Call ChatGPT API
id: chatgpt
uses: actions/github-script@v6
with:
script: |
const openai = require('openai');
openai.apiKey = process.env.OPENAI_API_KEY;
const prompt = `Revisiona il seguente codice e indica bug, vulnerabilità e migliorie: ${process.env.DIFF}`;
const response = await openai.Completion.create({
model: 'gpt-4o-mini',
prompt: prompt,
max_tokens: 500
});
console.log(response.choices[0].text);
core.setOutput('review', response.choices[0].text);
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
DIFF: ${{ steps.diff.outputs.diff }}
- name: Post review as comment
uses: actions/github-script@v6
with:
script: |
const review = core.getInput('review');
await github.issues.createComment({
issue_number: context.issue.number,
body: `**Revisione ChatGPT**\n\n${review}`
});1.3 Gestionar los parámetros de la llamada
Para evitar costos excesivos, establecemax_tokensytemperaturesegún el contexto. Usagpt-4o-minipara un buen equilibrio rendimiento/costo.
2. Diseñar prompts eficaces para la revisión de código
2.1 Estructura básica
Un prompt bien formulado es la clave para obtener resultados consistentes:
- Contexto: lenguaje, framework, convenciones.
- Objetivo: bugs, vulnerabilidades, buenas prácticas.
- Ejemplo de código(o diff).
- Solicita la salida en formato Markdown.
2.2 Ejemplo de prompt avanzado
Revisiona el siguiente fragmento de código JavaScript (Node.js, Express 4). Identifica bugs, vulnerabilidades (como XSS, injection), y sugiere mejoras de estilo y rendimiento. Responde en Markdown con secciones:
• Bug
• Vulnerabilidad
• Mejoras
• Referencias bibliográficas2.3 Versionado de los prompts
Guarda los prompts en un repositorio dedicado (prompts/). Usagit commitpara rastrear los cambios y añade una etiqueta de versión (v1.0) para garantizar consistencia entre la pipeline y los prompts.
3. Gestión de costos y latencia en entornos CI/CD
3.1 Monitorizar los costos
- Utiliza elOpenAI Usage Dashboardpara seguir los gastos diarios.
- Configura unpresupuestoy unaalerta de gastoen GitHub Actions con
actions/setup-node@v3.8.0y scripts de control.
3.2 Optimizar la latencia
- Agrupa varios archivos en un único prompt.
- Limita
max_tokensa 300'400 para respuestas rápidas. - Cachea los resultados para pull requests recurrentes mediante
actions/cache@v3.
4. Buenas prácticas para el monitoreo de resultados
4.1 Registro y visualización
Conserva los logs de ChatGPT como artefactos:
- name: Save review log
uses: actions/upload-artifact@v3
with:
name: chatgpt-review
path: ./review.txt4.2 Validación automática
Parseadores JSON para extraer las secciones y crearcheck runscon laGitHub Checks API, mostrando los resultados directamente en la PR.
4.3 Bucle de retroalimentación con los desarrolladores
- Solicita aprobación manual si el modelo detecta bugs críticos.
- Incorpora un comentario interactivo donde los desarrolladores puedan contradecir o confirmar la revisión.
Conclusión
Integrar ChatGPT en GitHub Actions ya no es una idea futurista: con unos pocos pasos puedes automatizar la revisión de código, reducir los bugs y optimizar tu pipeline CI/CD. Recuerda versionar los prompts, monitorizar costos y latencia, y mantener un bucle de retroalimentación con los desarrolladores. Empieza hoy a aprovechar la inteligencia artificial para transformar a tu equipo de desarrollo en una realidad más eficiente y fiable.
Take'away prácticos
- Configura
OPENAI_API_KEYcomo secret. - Escribe prompts claros, contextualizados y versionados.
- Limita
max_tokensy usa modelosminipara costos controlados. - Archiva los resultados y crea check runs para visibilidad inmediata.
- Integra un mecanismo de retroalimentación para mejorar continuamente los prompts.
Preguntas frecuentes
¿Cuál es el modelo más económico para la revisión de código?
El modelogpt-4o-miniofrece un buen equilibrio entre calidad y costo, con tokens a un precio inferior respecto a los modelos estándar.
¿Cómo puedo limitar el uso de tokens para evitar costos elevados?
Establece un límite demax_tokens(p. ej., 300'400) y agrupa varios archivos en un único prompt para reducir el número de llamadas a la API.