GitHub Copilot, el asistente de codificación impulsado por inteligencia artificial, ha lanzado recientemente las Copilot Extensions para mejorar su ecosistema. Esta característica, ahora en beta pública, permite a los desarrolladores crear extensiones personalizadas que se integran con Copilot. En esta publicación, te guiaremos a través del proceso de crear tu primera extensión para GitHub Copilot.
Antes de comenzar, es importante mencionar que necesitas una suscripción activa a GitHub Copilot para crear y usar extensiones de Copilot.
Una extensión de Copilot es esencialmente una aplicación de GitHub con un endpoint específico.
Nota: Al final del artículo básico os pongo un caso de uso que es muy llamativo.
Configuración del Proyecto
En esta guía, usaremos Express.js como nuestro framework web. Los conceptos básicos serán los mismos sin importar el framework que elijas. Cabe destacar que, por el momento, los únicos lenguajes compatibles con el SDK son TypeScript y JavaScript.
Crea un nuevo proyecto Node.js e instala Express.js:
mkdir my-copilot-extension
cd my-copilot-extension
npm init -y
npm install express @copilot-extensions/preview-sdk @octokit/core
Abre tu archivo principal para el servidor (por ejemplo, server.js
) e importa las dependencias necesarias:
import { Octokit } from "@octokit/core";
import express from "express";
import { Readable } from "node:stream";
const app = express();
Implementación del Endpoint
Ahora, implementaremos el endpoint que manejará las solicitudes de GitHub Copilot:
Crea una ruta raíz que reciba un formulario POST, /. Este es el endpoint con el que interactuará Copilot:
app.post("/", express.json(), async (req, res) => {
// Identificar al usuario,
// utilizando el token de la API de GitHub proporcionado en los encabezados de la solicitud.
const tokenForUser = req.get("X-GitHub-Token");
const octokit = new Octokit({ auth: tokenForUser });
const user = await octokit.request("GET /user");
console.log("User:", user.data.login);
const createAckEvent = () => `event: ack\n\n`;
const createTextEvent = (text) => `event: text\ndata: ${text}\n\n`;
const createDoneEvent = () => `event: done\n\n`;
res.send(
createAckEvent() +
createTextEvent(
`¡Bienvenido ${user.data.login}! Has realizado la siguiente pregunta: "${payload.prompt}".
Esta es una plantilla de extensión de GitHub Copilot,
ahora te toca implementar algo para responder a las preguntas.`
) +
createDoneEvent()
);
});
Exposición de tu Extensión Privada
En el código proporcionado, el servidor está configurado para ejecutarse en el puerto 3000:
app.listen(3000, () => {
console.log("Server is running on port 3000");
});
Modifica el archivo package.json
{
"name": "my-copilot-extension",
"version": "1.0.0",
"description": "",
"main": "server.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@copilot-extensions/preview-sdk": "^5.0.1",
"@octokit/core": "^6.1.2",
"express": "^4.21.1"
}
}
Comprobación del Funcionamiento
Ejecuta el servido Express.js para que comience a escuchar en el puerto configurado:
node server.js
Exposición de tu Extensión Publica
Para probar tu extensión de Copilot, necesitas hacerla accesible públicamente. Si usas Visual Studio Code (VS Code), habilita el reenvío de puertos. Alternativamente, utiliza herramientas como ngrok para exponer una URL pública.
Creación de una Aplicación de GitHub
Crea una nueva aplicación de GitHub en tu cuenta personal para propósitos de prueba.
Dirígete a la página de configuración en GitHub, y en la parte inferior izquierda, haz clic en el enlace «Configuración de desarrollador». Esto te llevará a tus aplicaciones de GitHub. También puedes navegar directamente a la página de tus aplicaciones de GitHub en https://github.com/settings/apps.
- Nombre de la Aplicación: Ingresa un nombre para tu aplicación de GitHub, por ejemplo, «mi extensión de copilot».
- URL de la Página Principal: Ingresa una URL para la página principal. Esto puede ser la misma URL de prueba por ahora.
- URL de Callback: Ingresa una URL de callback (actualmente es requerida). Esto puede ser la misma URL de prueba por ahora. Incluso si no estás usando OAuth, aún necesitas poner una URL aquí.
- Webhooks: Desactiva los webhooks si están habilitados.
- Visibilidad de la Aplicación: Asegúrate de que la aplicación sea accesible solo para ti inicialmente. Puedes habilitarla para todos cuando estés listo para hacer tu extensión de GitHub Copilot públicamente disponible.
- Haz clic en el botón «Crear aplicación de GitHub» para crear la aplicación.
Configuración de Permisos y Eventos
A continuación, configuraremos los permisos. Queremos proporcionar los permisos mínimos necesarios para que una extensión de Copilot funcione.
- Expande la sección de permisos de la cuenta y configura el permiso de «Copilot Chat» a solo lectura. El valor predeterminado es «Sin acceso».
- Haz clic en «Guardar cambios»..
Configuración de Copilot
- Configura el Tipo de Aplicación a «Agente». Está configurado como «Deshabilitado» de manera predeterminada.
- Configura la URL a la raíz de la URL pública que expusiste mediante túneles o reenvío de puertos.
Haz clic en «Guardar».
Ya tienes disponible tu extensión de Copilot.
Instalación de tu Extensión de Copilot
Antes de poder usar la extensión, debe ser instalada.
- Navega a tus aplicaciones de GitHub en tu configuración de desarrollador.
- Haz clic en el botón «Editar» para editar la aplicación.
- Ve a la sección «Instalar aplicación» de la configuración de la aplicación de GitHub.
- Haz clic en el botón «Instalar» para instalar la aplicación.
- Se te llevará a una página intermedia para confirmar la instalación de la aplicación de GitHub. Haz clic en el botón «Instalar».
Tu extensión de Copilot está instalada para tu cuenta de GitHub.
Puedes probar tu extensión de Copilot en varios entornos
- El chat de Copilot en GitHub.com
- El chat de Copilot en VS Code (imagen ilustrativa).
- El chat de Copilot en Visual Studio
Para estos entornos, sigue estos pasos:
- En el chat de GitHub Copilot, escribe «@» para ver las extensiones disponibles.
- Tu extensión debería aparecer como, por ejemplo, «@mi-extensión-de-copilot».
- Selecciona tu extensión y haz una pregunta o realiza una operación.
Y obtendrás finalmente la respuesta.
Caso de Uso: Integración de GitHub Copilot con Azure OpenAI para Cumplir con la GDPR
En sectores altamente regulados como la banca, aseguradoras y entidades médicas, el cumplimiento con la GDPR (Reglamento General de Protección de Datos) es una prioridad máxima. Una de las principales preocupaciones con el uso de servicios de inteligencia artificial como GitHub Copilot es que los datos pueden ser enviados a servidores ubicados en Estados Unidos, lo cual puede no cumplir con las estrictas normas de privacidad de la GDPR.
Sin embargo, con la introducción de las extensiones para GitHub Copilot, ahora es posible crear un endpoint privado que se integre con Azure OpenAI, permitiendo que todos los datos se procesen dentro de la infraestructura controlada y localizada de la empresa. Esto asegura que los datos no salgan de las fronteras establecidas y cumplen con las normativas de GDPR.
Descripción del Diagrama
- Desarrollador en VS Code: El desarrollador solicita ayuda a GitHub Copilot desde su entorno de desarrollo en Visual Studio Code.
- Extensión de GitHub Copilot: La extensión personalizada de Copilot recibe la solicitud y la envía al endpoint configurado en Azure OpenAI.
- Endpoint en Azure OpenAI: Este endpoint actúa como intermediario, asegurando que todas las solicitudes se mantengan dentro de la infraestructura controlada y localizada en Azure.
- IA Privada en Azure: La solicitud es procesada por una instancia privada de inteligencia artificial ubicada en Azure, garantizando que los datos no salgan de la jurisdicción establecida.
- Respuesta: La IA privada procesa la solicitud y envía la respuesta de vuelta al endpoint.
- Devuelve Resultado: El endpoint en Azure OpenAI devuelve el resultado a la extensión de GitHub Copilot.
- Respuesta al Desarrollador: La extensión de Copilot devuelve la respuesta al desarrollador en su entorno de desarrollo en VS Code.
Beneficios
- Cumplimiento con la GDPR: Al mantener todos los datos dentro de la infraestructura controlada y localizada, se asegura el cumplimiento con las normativas de privacidad de datos.
- Seguridad Mejorada: Los datos no abandonan la red corporativa, reduciendo significativamente el riesgo de brechas de seguridad.
- Flexibilidad y Control: Permite a las organizaciones utilizar las capacidades de GitHub Copilot mientras mantienen el control completo sobre sus datos sensibles.