Flask: Aplicación con IA
Aprende a combinar Flask en Python con OpenAI y modelos de lenguaje de gran escala (LLMs) para desarrollar aplicaciones inteligentes. Configura endpoints, gestiona peticiones y descubre consejos de diseño para un sistema basado en inteligencia artificial.
Aprende Flask GRATIS y certifícateEn el desarrollo de aplicaciones inteligentes con Flask y Python, resulta práctico incorporar LLMs (Large Language Models) para procesar lenguaje natural y generar respuestas coherentes en múltiples contextos. Con la librería adecuada para comunicarse con OpenAI, es posible crear servicios web que ofrezcan interacciones avanzadas, ya sea para asistentes virtuales, análisis de texto o generación de contenido.
Preparación del entorno
Para comenzar, se requiere Python (3.11 o superior recomendado) y un entorno virtual donde instalar las dependencias. En la mayoría de proyectos, se recurre a las librerías flask
y openai
(o la que provea la integración con el modelo de IA):
pip install flask openai
Es esencial contar con una variable de entorno que almacene la clave secreta del servicio de OpenAI. Un ejemplo es definir OPENAI_API_KEY
en tu archivo .env
o en el sistema de variables de tu plataforma de despliegue:
OPENAI_API_KEY=tu_clave_privada
Configuración de Flask y OpenAI
En el fichero principal de la aplicación, por ejemplo app.py
, se suele leer la variable de entorno y configurarla para la librería openai
. Al hacerlo, te aseguras de que el sistema identifique tu proyecto en cada petición a los servidores de OpenAI:
import os
import openai
from flask import Flask, request, jsonify
from openai import OpenAI
app = Flask(__name__)
# Configurar la clave de OpenAI
openai.api_key = os.getenv("OPENAI_API_KEY")
En esta configuración inicial, la aplicación Flask se integra con la librería de OpenAI, lista para procesar peticiones relacionadas con los modelos de lenguaje.
Creación de un endpoint para IA
El siguiente paso consiste en definir un endpoint que reciba peticiones y las envíe al modelo de lenguaje. Cada solicitud puede contener un prompt o texto de entrada que el LLM analizará. Un ejemplo sencillo:
@app.route('/api/generar', methods=['POST'])
def generar_respuesta():
datos = request.get_json()
prompt = datos.get('prompt', '')
if not prompt:
return jsonify({"error": "Falta el prompt"}), 400
try:
# Llamada al modelo de lenguaje: LLM
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": "Write a one-sentence bedtime story about a unicorn."
}
]
)
print(completion.choices[0].message.content)
return jsonify({"respuesta": completion.choices[0].message.content}), 200
except Exception as e:
return jsonify({"error": str(e)}), 500
En esta ruta /api/generar
:
- Se recibe el prompt mediante un objeto JSON en la petición POST.
- Se extrae la respuesta generada y se envía al cliente en formato JSON.
- Los posibles errores se capturan para retornar una respuesta con un código 500.
Diseño del prompt y consejos de uso
Para obtener resultados de calidad, conviene diseñar cuidadosamente el prompt que se envía al modelo de lenguaje. Algunas buenas prácticas:
- Contexto claro: Proporcionar al LLM la información necesaria para entender el tema o la tarea específica.
- Instrucciones concretas: Indicar al modelo el formato de salida deseado, por ejemplo, "responde en un párrafo corto" o "genera un título en español".
- Ejemplos: Incorporar ejemplos breves dentro del prompt, para guiar la interpretación del modelo y recibir respuestas coherentes.
Implementación de seguridad y control de gastos
Los modelos alojados en OpenAI y otras plataformas suelen facturar en función del uso, así que es importante:
- Gestionar el límite de peticiones con mecanismos de rate limiting o validaciones en tu aplicación Flask.
- Establecer restricciones en la longitud de las entradas o la complejidad de la tarea, para evitar consumos elevados de tokens.
- Monitorear las estadísticas de uso y facturación en tu panel de OpenAI, ajustando la configuración conforme al comportamiento real de la aplicación.
Despliegue en producción
Cuando se lanza la aplicación Flask a un entorno productivo, se recomienda:
- Configurar HTTPS para cifrar la comunicación y proteger datos sensibles.
- Asegurar la variable
OPENAI_API_KEY
en la plataforma de alojamiento, sin exponerla en repositorios públicos. - Implementar logs para vigilar la frecuencia de llamadas y el rendimiento en la generación de respuestas.
- Escalar la aplicación con servicios como Gunicorn o Docker, ajustando el número de workers según la demanda.
Ampliaciones adicionales
- Autenticación: Si tu API proporciona respuestas generadas, podrías exigir tokens o credenciales de usuario para controlar quién accede a la función de IA.
- Almacenamiento: Guardar en una base de datos los prompts y las respuestas, con fines de análisis o auditoría.
- Filtros de contenido: Revisar las respuestas generadas para moderar o filtrar contenido inapropiado si tu proyecto lo requiere.
- Integraciones: Conectar la API con frontends, chatbots, sistemas de atención al cliente o herramientas de análisis de texto.
Lecciones de este módulo de Flask
Lecciones de programación del módulo Aplicación con IA del curso de Flask.
Ejercicios de programación en este módulo de Flask
Evalúa tus conocimientos en Aplicación con IA con ejercicios de programación Aplicación con IA de tipo Test, Puzzle, Código y Proyecto con VSCode.