Contenido del curso
Interfaces de la API y streaming
Function calling y salidas estructuradas
Reducción de costos con caching y batch
Ingeniería de producción y control de calidad
Proyecto final de consultas sobre documentos
Crear la base web con FastAPI
Resumen
Crear una app con FastAPI para conectar con OpenAI es el salto natural cuando ya dominas la consola y quieres una interfaz mínima donde enviar una idea y recibir una respuesta generada por IA. Esta guía es para quienes construyen un proyecto que consume la API de OpenAI y necesitan mostrar resultados directamente en el navegador.
Hasta este punto todo el trabajo ocurría en la terminal, algo ideal para entender la API. Pero un proyecto real necesita algo más: un servidor que corra, reciba peticiones desde el navegador y devuelva HTML. Y aquí viene lo interesante, porque montarlo requiere apenas unas cuantas librerías bien elegidas.
Qué librerías necesito para levantar el servidor con FastAPI
Antes de escribir una sola línea de servidor, conviene listar las dependencias en un archivo requirements.txt. Ese archivo funciona como el inventario de todo lo que el proyecto va a instalar [00:52].
Estas son las piezas que se listan y para qué sirve cada una:
openai: el SDK que consumimos para acceder a toda la información del modelo.python-dotenv: permite leer las variables de entorno del proyecto.fastapi: el framework que genera el servidor y conecta uno o varios endpoints.uvicorn: mantiene el servidor en ejecución, una especie de watcher para que los endpoints sigan vivos.jinja2: motor de plantillas que renderiza HTML desde Python en el navegador.python-multipart: habilita formularios que reciben datos en múltiples formatos.
Con ese listado listo, el siguiente paso es instalar todo desde la terminal.
¿Para qué sirve uvicorn en una app de FastAPI? Es el servidor que mantiene tu aplicación corriendo y escuchando peticiones. Actúa como watcher: al usar la bandera
--reload, relee tus cambios automáticamente sin reiniciar manualmente.
Por qué falla el pip install la primera vez
Es común que el primer intento de instalación falle, y no por un error de código. El motivo es la ubicación de la carpeta: si pip no detecta el archivo requirements.txt, la instalación no arranca [02:14].
La solución es sencilla: muévete a la carpeta python donde vive el archivo y vuelve a ejecutar la instalación. Una vez ahí, pip install recorre el listado e instala cada librería sin problema.
Cómo estructuro el archivo server.py con FastAPI
Con las librerías instaladas, se crea el archivo server.py dentro de la carpeta app, para que siga formando parte del paquete construido en clases anteriores [03:10]. Ese archivo concentra toda la conexión con FastAPI y la generación de endpoints.
Las importaciones clave son:
FastAPIyFormdesdefastapi.responsesyHTMLResponse, indispensables para devolver HTML al navegador.- El
OpenAI clienty la funcióngenerate_text, que produce texto a partir de un prompt.
Después se instancia FastAPI dentro de una variable llamada app. A partir de ahí todo gira en torno a dos endpoints que hacen el trabajo.
Qué hacen los endpoints home y generate
El primer endpoint es el /, es decir, el home de la aplicación. Su tarea es devolver un HTML con un formulario mínimo: un text area de 60 columnas por 6 filas, un salto de línea y un botón que dice generar idea [04:20].
Ese formulario tiene un form method con acción hacia /generate, el segundo endpoint. Ahí ocurre la magia:
- Recibe la idea escrita en el primer formulario.
- Llama a la función
generate_textdelOpenAI client. - Guarda la salida como
result. - Renderiza el texto directamente en el navegador.
En otras palabras, lo mismo que antes hacías en la terminal ahora sucede en la web. La transición de consola a interfaz queda cerrada con estos dos puntos de entrada.
¿Cómo se ejecuta un servidor FastAPI desde la terminal? Con el comando
uvicorn app.server:app --reload. La bandera--reloadmantiene un watcher activo que relee cada cambio del proyecto en tiempo real.
Cómo pruebo la app en el navegador
Una vez guardado server.py, se ejecuta uvicorn app.server:app --reload en la terminal. Esto devuelve varios datos, pero lo importante es la URL donde corre el servidor [05:40].
Al hacer clic en ese enlace, el navegador muestra el HTML generado desde Python: el título, el text area y el botón de generar idea. El cliente ya está configurado como un asistente experto en generación de contenido.
Por ejemplo, puedes escribir: "Necesito un plan para generar contenido de mis redes sociales con respecto a la API de OpenAI". Al hacer clic en generar idea, el navegador indica que está procesando y luego te lleva a /generate con un título de resultado y el texto completo [06:30].
Ahí aparece un detalle honesto: la respuesta llega en markdown sin formato, porque el navegador todavía no lo interpreta bien. El plan que devuelve incluye una estructura pensada para atraer, educar y convertir audiencia interesada en AI, automatización y desarrollo, con títulos y casos de negocio, pero todo mezclado en texto plano.
¿Por qué el markdown se ve sin formato en el navegador? Porque el HTML no interpreta el markdown de forma automática. Necesitas formatear la respuesta antes de renderizarla, de lo contrario aparece como texto plano con símbolos.
La interfaz básica ya se comunica con la API de OpenAI con éxito. El siguiente reto será dar formato a esa respuesta antes de que llegue al navegador y avanzar hacia la lógica de negocio, transformando conceptos sueltos en un brief de campaña profesional.
¿Ya montaste tu primer servidor con FastAPI? Cuéntame en los comentarios qué idea probaste primero.