Contenido del curso

APIs con Serverless Framework y ChatGPT

Resumen

¿Te imaginas construir una API en menos de una hora usando Serverless Framework y ChatGPT como copiloto? Esa es justamente la propuesta: combinar inteligencia artificial generativa con un framework que despliega infraestructura en la nube para crear una API que genera poemas sobre lenguajes de programación, sin servidores que mantener y dentro del free tier de AWS.

¿Qué es Serverless Framework y en qué se diferencia de serverless?

Antes de tocar código, conviene separar dos términos que suenan idénticos pero no lo son.

¿Qué es serverless? Es un ecosistema de servicios en la nube donde no administras el servidor: ni la CPU, ni la RAM, ni el disco. Configuras y listo, el proveedor mantiene la aplicación viva [09:30].

Serverless Framework, en cambio, es una herramienta agnóstica al cloud provider y al lenguaje de programación. Puedes desplegar lo mismo en AWS, Azure, GCP o Cloudflare, y escribir tu lógica en Python, JavaScript, Java u otros lenguajes [11:30]. Su sintaxis se basa en un archivo YAML donde defines código, infraestructura, permisos de IAM y bases de datos.

¿Por qué combinar ChatGPT con Serverless Framework?

ChatGPT acelera la parte tediosa: escribir el boilerplate, recordar sintaxis, armar esquemas de validación. Serverless Framework hace más con menos al automatizar el despliegue. Juntos, te permiten pasar de una idea a una API en producción en minutos, siempre que sepas guiar a la IA con instrucciones precisas.

La clave está en una frase que vale la pena tatuarse: ChatGPT no tiene un propósito, el propósito se lo das tú [16:00]. La herramienta se equivoca, asume cosas que no le dijiste y a veces inventa. Sin conocimiento técnico para corregirla, el código puede romperse en producción.

¿Qué archivos necesitas para una API serverless mínima?

Solo tres, y eso ya es un cambio enorme frente a las APIs de hace una década que requerían decenas de archivos.

  • serverless.yml: define la estructura de la aplicación, el provider, la región, las funciones Lambda y los eventos HTTP.
  • handler.py: contiene la lógica que ejecutará la función Lambda en cada petición.
  • schema_poema.json: valida la lógica de negocio del body directamente en API Gateway, sin tocar código.

¿Qué es una Lambda? Es un servicio de AWS que ejecuta código serverless en la nube, agnóstico al lenguaje, sin que tengas que aprovisionar un servidor.

¿Cómo validar el body de un POST con JSON Schema?

El esquema que generamos pide tres campos obligatorios: romantico como booleano, numero_max_palabras como entero entre 30 y 80, y lenguaje_programacion como un enum con los lenguajes más usados.

Aquí aparece el primer detalle donde ChatGPT falla por falta de contexto: genera el esquema en draft 07, pero API Gateway solo soporta draft 04 [29:00]. Si copias y pegas sin revisar, la validación no funciona. Una corrección rápida en el prompt y listo.

¿Cómo escribir prompts efectivos para generar código serverless?

La regla es ser explícito. Si no le dices a ChatGPT que use Python, asumirá Node.js. Si no le pides que evite librerías de terceros, te meterá requests en lugar de urllib, que ya viene por defecto en Python [38:00].

Estos fueron los puntos que marcaron la diferencia al pedir el handler.py:

  1. Indicar el runtime exacto: Python 3.8.
  2. Prohibir librerías externas: nada de cliente de OpenAI ni Requests.
  3. Aclarar que la lógica de negocio ya viene validada desde API Gateway.
  4. Especificar el modelo: text-davinci-003, el motor de lenguaje detrás de ChatGPT.
  5. Pedir que extraiga el body del evento sin validar tipos.

¿Qué es un prompt? Es el texto con el que le das instrucciones a una IA generativa. Mientras más específico y contextual sea, mejor será la respuesta.

¿Dónde guardar las API keys de OpenAI de forma segura?

Nunca en el repositorio. La práctica recomendada es usar Parameter Store dentro de AWS Systems Manager (SSM), un servicio que almacena secretos y los inyecta como variables de ambiente en tu Lambda [33:00]. En el serverless.yml se referencian con la función ${ssm:openai_key} y Serverless Framework las resuelve en el despliegue.

¿Qué servicios de AWS usas sin darte cuenta al desplegar con Serverless Framework?

Al ejecutar serverless deploy se activan al menos cuatro servicios de forma implícita [44:00]:

  • CloudFormation: orquesta el despliegue de infraestructura como código.
  • Lambda: ejecuta tu función generar_poema.
  • API Gateway: expone el endpoint HTTP y valida el JSON Schema.
  • S3: almacena el código empaquetado y las versiones de la Lambda.

El despliegue completo de la aplicación tardó 109 segundos y devolvió un endpoint listo para recibir peticiones POST desde cualquier cliente como Postman.

¿Qué hacer cuando ChatGPT genera código que falla?

En el primer request real, OpenAI respondió con un 400 Bad Request porque el objeto data que ChatGPT armó incluía campos como penalty_top que no existen en la API. La solución no fue volver a preguntarle: fue ir a la documentación oficial de OpenAI, copiar la estructura correcta del endpoint completions y ajustar model, prompt y max_tokens a mano [50:00].

Esta es la lección más valiosa: la IA acelera, pero no reemplaza el criterio técnico. Saber leer logs, hacer debugging en CloudWatch y consultar documentación sigue siendo trabajo humano.

¿Cómo extender esta API serverless a un proyecto más complejo?

La base que construimos es solo el punto de partida. Algunas extensiones naturales que puedes pedirle a ChatGPT con prompts específicos:

  • Agregar un custom authorizer con un pool de Cognito para autenticar peticiones.
  • Integrar DynamoDB para guardar los poemas generados.
  • Sumar colas SQS para procesar peticiones de forma asíncrona.
  • Configurar Route 53 con estrategias de disaster recovery basadas en latencia.
  • Cambiar el caso de uso: en lugar de poemas, dedicatorias, descripciones de productos o rutinas de gimnasio.

Si te quedaste con ganas de más, cuéntame en los comentarios qué API se te ocurre construir con esta combinación y qué prompt usarías para arrancar.