Despliega modelos de Machine Learning con FastAPI y Docker

RESUMEN

Despliegue de ML con FastAPI y Docker

Guía esencial para llevar modelos de Machine Learning a producción de forma escalable y eficiente en 2026.

Keywords: FastAPI, Docker, MLOps

ÍNDICE

1. Contexto y la Necesidad del Despliegue de ML

2. FastAPI: El Corazón de Nuestra API

3. Docker: Contenedores para la Consistencia

4. Integrando FastAPI y Docker para un Despliegue Robusto

5. Construyendo una API de Predicción con FastAPI y Docker

6. Consideraciones Clave para MLOps en 2026

7. Resolución de Problemas Comunes en el Despliegue

8. Guía Práctica: Desplegando tu Primer Modelo

9. Preguntas Frecuentes (FAQ)

10. Conclusión y Futuro del Despliegue de ML

INTRODUCCIÓN

1. Contexto y la Necesidad del Despliegue de ML


En el dinámico mundo de la Inteligencia Artificial y el Machine Learning, desarrollar un modelo predictivo o generativo es solo la mitad de la batalla. La verdadera magia ocurre cuando ese modelo se integra en un sistema que puede ser utilizado por usuarios finales, aplicaciones de negocio o incluso otros servicios de IA. Este proceso, conocido como despliegue de modelos de Machine Learning, es la «última milla» que convierte un prototipo de laboratorio en una solución de valor real en producción. En 2026, la demanda de modelos de IA accesibles y escalables es más alta que nunca, impulsando la necesidad de herramientas y metodologías eficientes para su despliegue.

Tradicionalmente, el despliegue de modelos de ML ha sido un desafío significativo. Los modelos suelen tener dependencias complejas, requisitos de entorno específicos y la necesidad de interactuar con sistemas de backend. Esto a menudo lleva a problemas como «funciona en mi máquina», inconsistencias de entorno, dificultades de escalabilidad y altos costos de mantenimiento. Aquí es donde entra en juego la combinación de FastAPI y Docker, ofreciendo una solución robusta y moderna a estos desafíos.

PUNTO CLAVE

El despliegue de modelos de ML es crucial para transformar la investigación en valor comercial. La combinación de FastAPI y Docker aborda la complejidad de las dependencias y la escalabilidad, siendo fundamental para el éxito de los proyectos de IA en 2026.

FastAPI, un framework web moderno de alto rendimiento para construir APIs con Python, se ha convertido en la elección preferida para muchos ingenieros de Machine Learning debido a su velocidad, facilidad de uso y características de documentación automática. Por otro lado, Docker proporciona una forma estandarizada de empaquetar aplicaciones y sus dependencias en contenedores, garantizando que el modelo funcione de manera consistente en cualquier entorno, desde el desarrollo hasta la producción.

Esta guía completa de Kwonsejo explorará cómo aprovechar al máximo estas dos poderosas herramientas para construir APIs de Machine Learning robustas, escalables y fáciles de mantener. Desglosaremos cada componente, desde la creación de la API hasta la contenerización y las mejores prácticas para MLOps (Operaciones de Machine Learning), asegurando que esté equipado para llevar sus modelos de IA al siguiente nivel en 2026.

FASTAPI

2. FastAPI: El Corazón de Nuestra API


FastAPI es un framework web de Python relativamente nuevo pero increíblemente potente, diseñado para construir APIs RESTful de alto rendimiento. Se basa en Starlette para la parte web y Pydantic para la validación de datos, lo que le permite ofrecer una experiencia de desarrollo excepcional. Su popularidad ha crecido exponencialmente en los últimos años, especialmente en el ámbito de la IA y el ML, por varias razones clave:

Ventajas Clave de FastAPI para ML

Rendimiento Excepcional

Asincronía Nativa — FastAPI soporta funciones async/await, lo que permite manejar múltiples solicitudes concurrentemente sin bloqueos, ideal para APIs de ML que a menudo implican operaciones I/O intensivas o modelos grandes. Utiliza Uvicorn como servidor ASGI, lo que lo hace tan rápido como Node.js y Go para casos de uso específicos.

Validación de Datos con Pydantic — Pydantic asegura que los datos de entrada a su API (parámetros de consulta, cuerpos de solicitud) cumplan con los tipos y estructuras esperados, reduciendo errores y mejorando la robustez. Esto es crucial para modelos de ML que esperan entradas con formatos muy específicos.

Experiencia de Desarrollador Superior

Documentación Automática — Genera automáticamente interfaces de usuario interactivas para su API (Swagger UI y ReDoc) basadas en las especificaciones OpenAPI (anteriormente Swagger). Esto facilita enormemente las pruebas y el consumo de su API, tanto para usted como para otros desarrolladores.

Tipado de Datos — Aprovecha las sugerencias de tipo de Python para autocompletado, verificación de errores y mejor legibilidad del código. Esto es una bendición para proyectos de ML donde la estructura de datos puede ser compleja.

PUNTO CLAVE

FastAPI se destaca por su rendimiento asíncrono, validación de datos con Pydantic y documentación automática, lo que lo convierte en la herramienta ideal para construir APIs robustas y eficientes para modelos de Machine Learning en 2026.

Veamos un ejemplo básico de una aplicación FastAPI. Instalarlo es tan simple como:

EXPLICACIÓN DEL CÓDIGO

Este comando instala FastAPI y Uvicorn, el servidor ASGI que FastAPI utiliza para ejecutar su aplicación.

pip install fastapi "uvicorn[standard]"

Y aquí hay un ejemplo de una API simple:

EXPLICACIÓN DEL CÓDIGO

Este código define una pequeña aplicación FastAPI. La clase Item, que hereda de BaseModel de Pydantic, define la estructura de datos esperada para las solicitudes. El endpoint /predict toma un objeto Item y devuelve un mensaje con el item recibido. Un endpoint raíz / también está definido.

# main.py
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None

@app.get("/")
async def read_root():
    return {"message": "Bienvenido a la API de FastAPI!"}

@app.post("/predict")
async def predict_item(item: Item):
    # Aquí es donde integrarías tu modelo de ML
    # Por ahora, solo devolvemos los datos recibidos
    prediction_result = f"Recibido item: {item.name} con precio {item.price}"
    return {"prediction": prediction_result, "item_received": item.dict()}

Para ejecutar esta API, usaría Uvicorn:

EXPLICACIÓN DEL CÓDIGO

Este comando inicia el servidor Uvicorn. main:app indica que debe buscar la aplicación app dentro del archivo main.py. --reload es útil para el desarrollo, ya que reinicia el servidor ante cambios en el código. --host 0.0.0.0 permite que el servidor sea accesible desde otras máquinas en la red (dentro de un contenedor Docker, esto es esencial).

uvicorn main:app --reload --host 0.0.0.0 --port 8000

Diagrama de arquitectura de una aplicación FastAPI mostrando el flujo de solicitudes y sus componentes internos

DOCKER

3. Docker: Contenedores para la Consistencia


Docker ha revolucionado la forma en que desarrollamos, empaquetamos y desplegamos aplicaciones. En el contexto del Machine Learning, su valor es incalculable. Docker permite empaquetar una aplicación y todas sus dependencias (bibliotecas, configuraciones, etc.) en una unidad estandarizada llamada contenedor. Esto resuelve el problema de «funciona en mi máquina» y garantiza que el modelo de ML se ejecute exactamente igual en cualquier entorno, ya sea en su laptop, un servidor de pruebas o en producción.

¿Por qué Docker es Esencial para el Despliegue de ML?

Aislamiento y Consistencia

Entornos Aislados — Cada contenedor es un entorno aislado que incluye todo lo necesario para ejecutar la aplicación. Esto previene conflictos de dependencias entre diferentes proyectos o versiones de bibliotecas en el mismo servidor.

Reproducibilidad — Un Dockerfile especifica los pasos para construir la imagen del contenedor. Esto asegura que la aplicación se construya y se ejecute de la misma manera cada vez, sin importar dónde se despliegue. Crucial para la reproducibilidad de los resultados de los modelos de ML.

Portabilidad y Escalabilidad

Portabilidad Universal — Una vez que la aplicación está en un contenedor Docker, puede ejecutarse en cualquier plataforma que soporte Docker (Linux, Windows, macOS, la nube). Esto simplifica el movimiento de modelos de ML entre diferentes infraestructuras.

Escalabilidad Sencilla — Los contenedores son ligeros y se inician rápidamente, lo que facilita la escalabilidad horizontal. Puedes ejecutar múltiples instancias de tu API de ML en contenedores separados, distribuyendo la carga y mejorando la resiliencia.

PUNTO CLAVE

Docker es fundamental para el despliegue de ML al garantizar la consistencia del entorno, la reproducibilidad y la portabilidad de los modelos, facilitando la gestión de dependencias complejas y la escalabilidad en cualquier infraestructura.

Un Dockerfile es un archivo de texto que contiene una serie de instrucciones para construir una imagen Docker. Aquí hay un ejemplo básico para una aplicación Python:

EXPLICACIÓN DEL CÓDIGO

Este Dockerfile define cómo construir una imagen para nuestra aplicación FastAPI. Comienza con una imagen base de Python, establece un directorio de trabajo, copia el archivo de requisitos, instala las dependencias, copia el código de la aplicación, expone el puerto 8000 y finalmente define el comando para iniciar el servidor Uvicorn cuando el contenedor se ejecute.

# Dockerfile
FROM python:3.10-slim-buster

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Para construir la imagen y ejecutar el contenedor, usaría los siguientes comandos de Docker:

EXPLICACIÓN DEL CÓDIGO

El primer comando construye la imagen Docker usando el Dockerfile en el directorio actual, etiquetándola como ml-api:latest. El segundo comando ejecuta un contenedor a partir de esa imagen, mapeando el puerto 8000 del contenedor al puerto 8000 de la máquina host, permitiendo el acceso a la API.

docker build -t ml-api:latest .
docker run -d --name ml-api-container -p 8000:8000 ml-api:latest

Ilustración de contenedores Docker, mostrando una aplicación con sus bibliotecas y configuraciones empaquetadas, ejecutándose en el motor Docker

INTEGRACIÓN

4. Integrando FastAPI y Docker para un Despliegue Robusto


La verdadera potencia surge cuando combinamos FastAPI y Docker. FastAPI nos proporciona la capacidad de construir APIs de alto rendimiento con Python de forma rápida y eficiente, mientras que Docker nos asegura que esas APIs se ejecuten de manera consistente y fiable en cualquier entorno. Esta sinergia es la base de un despliegue de Machine Learning moderno y robusto.

El Flujo de Trabajo Integrado

Consideremos el ciclo de vida de un modelo de Machine Learning en producción:

  1. Desarrollo y Entrenamiento del Modelo: Se entrena el modelo de ML utilizando datos, se evalúa su rendimiento y se guarda en un formato persistente (por ejemplo, .pkl, .h5, .pth).
  2. Construcción de la API con FastAPI: Se desarrolla una API RESTful usando FastAPI que carga el modelo entrenado y expone un endpoint para realizar predicciones. FastAPI maneja la validación de entrada y la serialización de salida.
  3. Contenerización con Docker: Se crea un Dockerfile que define el entorno necesario para ejecutar la aplicación FastAPI, incluyendo Python, las bibliotecas de ML y el modelo. Esto crea una imagen Docker.
  4. Despliegue y Ejecución: La imagen Docker se implementa en un servidor, servicio en la nube (AWS ECS, Google Cloud Run, Azure Container Instances) o un orquestador de contenedores como Kubernetes. El contenedor se ejecuta, sirviendo las predicciones del modelo a través de la API de FastAPI.

PUNTO CLAVE

La combinación de FastAPI y Docker crea un flujo de trabajo optimizado para el despliegue de ML, donde FastAPI ofrece la interfaz de alto rendimiento y Docker garantiza la consistencia y portabilidad del entorno, eliminando la mayoría de los problemas de compatibilidad.

Beneficios de esta Combinación

Ventajas

Entorno Consistente: Elimina los problemas de «funciona en mi máquina» al empaquetar todas las dependencias.

Escalabilidad Sencilla: Los contenedores son fáciles de escalar horizontalmente para manejar la carga de solicitudes.

Desarrollo Rápido: FastAPI permite construir APIs rápidamente con documentación automática.

Alto Rendimiento: La asincronía de FastAPI y Uvicorn asegura que la API pueda manejar muchas solicitudes.

Portabilidad: Los contenedores pueden ejecutarse en cualquier lugar donde Docker esté instalado.

Mantenimiento Simplificado: La gestión de dependencias y versiones es más limpia y controlada.

IMPLEMENTACIÓN

5. Construyendo una API de Predicción con FastAPI y Docker


Ahora, vamos a poner en práctica todo lo aprendido construyendo una API de predicción para un modelo de Machine Learning simple. Utilizaremos el famoso conjunto de datos Iris y un clasificador de Scikit-learn para demostrar el proceso. El modelo se entrenará, se guardará, y luego se integrará en una API de FastAPI que será contenerizada con Docker.

Paso 1: Entrenar y Guardar el Modelo

Primero, necesitamos un modelo. Crearemos un script Python para entrenar un clasificador de Regresión Logística en el conjunto de datos Iris y guardarlo usando joblib.

EXPLICACIÓN DEL CÓDIGO

Este script entrena un modelo LogisticRegression utilizando el conjunto de datos Iris de Scikit-learn. Después de entrenar el modelo, lo guarda en un archivo llamado iris_model.joblib utilizando la librería joblib. Este archivo será cargado por nuestra API de FastAPI.

# train_model.py
import joblib
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# Cargar el dataset Iris
iris = load_iris()
X, y = iris.data, iris.target

# Dividir los datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Entrenar un modelo simple
model = LogisticRegression(max_iter=200) # Aumentar max_iter para convergencia
model.fit(X_train, y_train)

# Guardar el modelo entrenado
model_path = "iris_model.joblib"
joblib.dump(model, model_path)
print(f"Modelo entrenado y guardado en {model_path}")

Para ejecutar este script, necesitará scikit-learn y joblib. Asegúrese de tener un archivo requirements.txt adecuado:

EXPLICACIÓN DEL CÓDIGO

Este archivo lista todas las dependencias de Python necesarias para nuestra aplicación, incluyendo FastAPI, Uvicorn, scikit-learn y joblib.

# requirements.txt
fastapi
uvicorn[standard]
scikit-learn
joblib

Paso 2: Crear la API de FastAPI

A continuación, crearemos el archivo main.py para la API de FastAPI. Este script cargará el modelo entrenado y expondrá un endpoint /predict que tomará los datos de entrada, los pasará al modelo y devolverá la predicción.

EXPLICACIÓN DEL CÓDIGO

Este código define una API de FastAPI que carga el modelo de Iris previamente entrenado. La clase IrisFeatures, con Pydantic, valida los cuatro parámetros numéricos esperados por el modelo. El endpoint /predict toma estas características, las convierte en un arreglo NumPy y usa el modelo para hacer una predicción, devolviendo la clase predicha y su nombre.

# main.py
import joblib
import numpy as np
from fastapi import FastAPI
from pydantic import BaseModel

# Inicializar la aplicación FastAPI
app = FastAPI()

# Definir las clases de Iris para una mejor legibilidad
IRIS_CLASSES = {0: "setosa", 1: "versicolor", 2: "virginica"}

# Cargar el modelo entrenado
try:
    model = joblib.load("iris_model.joblib")
    print("Modelo 'iris_model.joblib' cargado exitosamente.")
except FileNotFoundError:
    print("Error: 'iris_model.joblib' no encontrado. Asegúrese de ejecutar train_model.py primero.")
    model = None # O manejar el error de otra manera, por ejemplo, salir

# Definir el esquema de entrada para Pydantic
class IrisFeatures(BaseModel):
    sepal_length: float
    sepal_width: float
    petal_length: float
    petal_width: float

@app.get("/")
async def read_root():
    return {"message": "Bienvenido a la API de predicción de Iris con FastAPI!"}

@app.post("/predict")
async def predict_iris(features: IrisFeatures):
    if model is None:
        return {"error": "Modelo no cargado. Por favor, asegúrese de que el modelo exista."}

    # Convertir las características de entrada a un array NumPy
    data_in = np.array([[
        features.sepal_length,
        features.sepal_width,
        features.petal_length,
        features.petal_width,
    ]])

    # Realizar la predicción
    prediction_id = model.predict(data_in)[0]
    predicted_class = IRIS_CLASSES.get(prediction_id, "desconocido")

    return {"prediction_id": int(prediction_id), "predicted_class": predicted_class}

Paso 3: Contenerizar la Aplicación con Docker

Ahora, necesitamos crear un Dockerfile para empaquetar nuestra API y el modelo en un contenedor. Este Dockerfile copiará tanto el script de la API (main.py) como el modelo entrenado (iris_model.joblib) en el contenedor.

EXPLICACIÓN DEL CÓDIGO

Este Dockerfile utiliza una imagen base de Python, establece el directorio de trabajo, copia e instala las dependencias de requirements.txt. Luego, copia todos los archivos del directorio actual (incluyendo main.py y iris_model.joblib) al contenedor. Finalmente, expone el puerto y define el comando para iniciar la API.

# Dockerfile
FROM python:3.10-slim-buster

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . . # Copia main.py y iris_model.joblib

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

PUNTO CLAVE

La creación de la API de predicción con FastAPI y su posterior contenerización con Docker encapsula el modelo y sus dependencias, asegurando un entorno de ejecución predecible y facilitando el despliegue en cualquier sistema.

Diagrama de flujo del proceso de despliegue de un modelo ML: entrenamiento, guardado, API con FastAPI, contenerización con Docker y despliegue

MLOPS

6. Consideraciones Clave para MLOps en 2026


El despliegue de un modelo es solo el comienzo del ciclo de vida de MLOps. Para asegurar que su solución de IA sea sostenible, eficiente y siga ofreciendo valor a lo largo del tiempo, es crucial considerar aspectos más allá de la simple puesta en marcha. En 2026, las prácticas de MLOps son más maduras y se centran en la automatización, el monitoreo continuo y la gestión del ciclo de vida del modelo.

Escalabilidad y Rendimiento

Una API de ML debe ser capaz de manejar la carga de trabajo prevista. FastAPI, con su naturaleza asíncrona y el uso de Uvicorn, ya proporciona una base de alto rendimiento. Para escalar aún más:

  • Workers de Uvicorn: Ejecute Uvicorn con múltiples workers para aprovechar los núcleos de CPU disponibles. uvicorn main:app --workers 4
  • Orquestación de Contenedores: Plataformas como Kubernetes son ideales para gestionar y escalar automáticamente múltiples contenedores Docker de su API, distribuyendo la carga y garantizando la alta disponibilidad.
  • Optimización del Modelo: Asegúrese de que su modelo sea lo más eficiente posible. Esto puede incluir cuantificación, poda de redes neuronales, o el uso de bibliotecas optimizadas como ONNX Runtime o NVIDIA Triton Inference Server para modelos de ML más complejos.

Monitoreo y Observabilidad

Una vez que el modelo está en producción, es vital monitorear su rendimiento y salud. Esto incluye:

  • Monitoreo de Infraestructura: Uso de herramientas como Prometheus y Grafana para observar métricas de CPU, memoria, latencia de red y uso de GPU del contenedor.
  • Monitoreo de Modelos: Rastree métricas específicas del modelo, como la precisión de las predicciones, la distribución de las entradas y salidas, y la detección de drift de datos o modelos. Plataformas como MLflow o Arize son excelentes para esto.
  • Logging: Recopile logs de su aplicación FastAPI para depuración y auditoría. Un stack ELK (Elasticsearch, Logstash, Kibana) o Grafana Loki son soluciones populares.

Versionado y Retraining

Los modelos de ML no son estáticos; necesitan ser actualizados y reentrenados periódicamente. Una estrategia de versionado robusta es fundamental:

  • Versionado de Modelos: Guarde diferentes versiones de su modelo y asocie cada versión con los datos y el código que la generaron. Herramientas como MLflow o DVC (Data Version Control) son ideales.
  • Despliegue Azul/Verde o Canary: Para actualizar modelos en producción sin interrupción, implemente nuevas versiones en un entorno separado (azul/verde) o a un pequeño subconjunto de usuarios (canary) antes de un despliegue completo.
  • Automatización del Retraining: Configure pipelines de CI/CD (Integración Continua/Despliegue Continuo) para automatizar el reentrenamiento y despliegue de modelos cuando se detecta drift o hay nuevos datos disponibles.

PUNTO CLAVE

MLOps es un pilar fundamental para el éxito a largo plazo de los proyectos de IA en 2026. Priorizar la escalabilidad, el monitoreo continuo y el versionado de modelos garantiza que las soluciones de ML permanezcan relevantes, precisas y eficientes en entornos de producción dinámicos.

Diagrama del ciclo de vida de MLOps, mostrando las etapas de preparación de datos, entrenamiento del modelo, despliegue, monitoreo y reentrenamiento en un bucle continuo

PROBLEMAS Y SOLUCIONES

7. Resolución de Problemas Comunes en el Despliegue


El despliegue de modelos de Machine Learning, incluso con herramientas poderosas como FastAPI y Docker, puede presentar desafíos. Identificar y resolver estos problemas de manera proactiva es clave para un MLOps exitoso. A continuación, abordamos algunos de los problemas más comunes y sus soluciones.

PROBLEMA 01

Grandes Imágenes Docker y Tiempos de Construcción Lentos

Las imágenes Docker que incluyen muchas dependencias de ML (como TensorFlow o PyTorch) pueden ser muy grandes, lo que resulta en tiempos de construcción prolongados y un mayor uso de almacenamiento.

SOLUCIÓN — Construcciones Multi-etapa (Multi-stage Builds)

Utilice Dockerfiles multi-etapa para separar las fases de construcción de las de ejecución. Esto permite instalar dependencias de construcción en una etapa intermedia y solo copiar los artefactos necesarios (el modelo, el código de la API) a una imagen base más ligera para la etapa final. Esto reduce drásticamente el tamaño de la imagen final.

EXPLICACIÓN DEL CÓDIGO

Este Dockerfile de multi-etapa utiliza una imagen base más grande para la instalación de dependencias y luego copia solo lo esencial a una imagen slim-buster más pequeña. Esto minimiza el tamaño de la imagen final de producción.

# Dockerfile (Multi-stage)
# Etapa de construcción
FROM python:3.10-slim-buster as builder

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Etapa final
FROM python:3.10-slim-buster

WORKDIR /app
COPY --from=builder /usr/local/lib/python3.10/site-packages/ /usr/local/lib/python3.10/site-packages/
COPY . .

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

PROBLEMA 02

Latencia Elevada en las Predicciones

Un modelo de ML puede ser lento al inferir, lo que lleva a una alta latencia en la API, afectando la experiencia del usuario y la capacidad de la API para manejar cargas.

SOLUCIÓN — Optimización del Modelo y Uso de Hardwar Acelerado

Optimice el modelo para inferencia (ej. cuantificación, poda, conversión a formatos como ONNX). Si el modelo es intensivo en cómputo, considere el uso de GPUs. Docker permite el uso de GPUs dentro de los contenedores con nvidia-docker o docker run --gpus all. Asegúrese de que sus bibliotecas de ML estén compiladas con soporte para GPU.

EXPLICACIÓN DEL CÓDIGO

Este comando de Docker ejecuta el contenedor mapeando todas las GPUs disponibles de la máquina host al contenedor, permitiendo que el modelo de ML aproveche la aceleración de hardware para inferencias más rápidas.

docker run -d --name ml-gpu-api --gpus all -p 8000:8000 ml-api-gpu:latest

PROBLEMA 03

Gestión de Modelos y Datos Sensibles

Los modelos pueden contener propiedad intelectual, y los datos de entrada o salida pueden ser sensibles. Protegerlos en una API desplegada es crucial.

SOLUCIÓN — Autenticación, Autorización y Cifrado

Implemente mecanismos de autenticación (ej. OAuth2, JWT) y autorización en FastAPI para controlar quién puede acceder a su API. FastAPI tiene soporte nativo para esquemas de seguridad. Asegúrese de que todas las comunicaciones sean a través de HTTPS/TLS. Si el modelo se almacena externamente, utilice almacenamiento seguro y cifrado. Para datos de entrada sensibles, considere la anonimización o el cifrado antes de enviarlos a la API.

EXPLICACIÓN DEL CÓDIGO

Este fragmento de código muestra cómo FastAPI puede integrarse con OAuth2PasswordBearer para la autenticación basada en tokens. El /predict endpoint ahora requiere un token de acceso válido.

from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

async def get_current_user(token: str = Depends(oauth2_scheme)):
    # Lógica para validar el token y obtener el usuario
    if token != "supersecrettoken": # Ejemplo simplificado
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Credenciales inválidas",
            headers={"WWW-Authenticate": "Bearer"},
        )
    return {"username": "usuario_seguro"}

@app.post("/predict")
async def predict_iris(features: IrisFeatures, current_user: dict = Depends(get_current_user)):
    # ... lógica de predicción ...
    return {"prediction_id": int(prediction_id), "predicted_class": predicted_class, "user": current_user["username"]}

GUÍA PRÁCTICA

Categorías Desarrollo, IA & ML Etiquetas , , , , , , , , ,