- pub
Cómo usar FastAPI para envolver la API de Luma AI: Una guía práctica
1. Introducción a Lumalabs y Dream Machine
Lumalabs es una empresa innovadora que ha estado destacándose en el mundo de la IA y el aprendizaje automático. Una de sus características más chulas es Dream Machine, que te permite generar videos a partir de texto o imágenes usando IA de última generación. Y bueno, hemos conseguido una API RESTful no oficial para esto, y hoy te voy a mostrar cómo envolverla usando FastAPI. Así que, si eres un desarrollador que quiere integrar la generación de videos con IA en tu app, o simplemente quieres experimentar con las capacidades de Luma, este guía te va a ayudar a empezar.
Documentación de la API: Luma API
2. Configurando FastAPI
2.1. Instalar FastAPI
Primero lo primero, necesitamos configurar FastAPI. Si no lo tienes instalado todavía, puedes hacerlo rápidamente con pip. Solo ejecuta:
pip install fastapi
También necesitas un servidor ASGI para correr tu aplicación FastAPI, como uvicorn
:
pip install uvicorn
2.2. Creando una App Básica de FastAPI
Vamos a empezar con una app muy básica de FastAPI para asegurarnos de que todo esté en orden. Crea un nuevo archivo Python llamado main.py
:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "¡Hola, Luma IA!"}
Ahora, ejecuta el servidor usando uvicorn:
uvicorn main:app --reload
Ve a http://127.0.0.1:8000/
en tu navegador, y deberías ver el mensaje "¡Hola, Luma IA!".
3. Envuelto la API de Luma
3.1. Configurando tu Endpoint POST
Ahora, vamos a crear un endpoint POST en FastAPI que envuelva la API de Luma para generar videos. La idea es hacer una interfaz limpia y sencilla para uso interno.
Aquí te muestro cómo puedes configurar el endpoint:
import requests
from fastapi import FastAPI, Form
app = FastAPI()
LUMA_API_URL = "https://api.lumaapi.com/api/v1/generation/add"
LUMA_API_TOKEN = "sk-xxx" # Reemplaza esto con tu token real
@app.post("/generate-video/")
def generate_video(
prompt: str = Form(...),
callback_url: str = Form(...),
image_url: str = Form(None),
image_end_url: str = Form(None),
aspect_ratio: str = Form("16:9")
):
payload = {
'arg_prompt': prompt,
'callback': callback_url,
'arg_image_url': image_url,
'arg_image_end_url': image_end_url,
'arg_aspect_ratio': aspect_ratio
}
headers = {
'Authorization': f'Bearer {LUMA_API_TOKEN}'
}
response = requests.post(LUMA_API_URL, headers=headers, data=payload)
return response.json()
3.2. Desglosando el Endpoint
Preparación del Payload: Recogemos los datos necesarios como el prompt, el URL del callback, y las URLs de las imágenes usando la función
Form
de FastAPI. Esto ayuda a crear la estructura de datos que espera la API de Luma.Autorización: Incluimos el token Bearer en los headers para acceder a la API de forma segura.
Realizando la Solicitud a la API: Luego, hacemos una solicitud POST a la API de Luma y devolvemos la respuesta en formato JSON.
4. Probando Tu API
4.1. Usando la Documentación Incorporada de FastAPI
Una de las cosas geniales de FastAPI es que genera automáticamente la documentación. Una vez que tu app esté corriendo, ve a http://127.0.0.1:8000/docs
, y verás una página de documentación interactiva muy buena.
4.2. Haciendo una Solicitud de Prueba
Puedes probar fácilmente tu nuevo endpoint /generate-video/
directamente desde la documentación. Rellena los campos del formulario con un prompt de ejemplo, la URL del callback y, opcionalmente, las URLs de las imágenes. Luego, dale a "Ejecutar" para ver el resultado.
5. Manejo del Callback
5.1. Configurando el Endpoint de Callback
Después de que el video sea generado, la API de Luma enviará una solicitud POST a la URL del callback que proporcionaste. Vamos a configurar un endpoint para manejar eso:
from fastapi import Request
@app.post("/api/cb_task/")
async def handle_callback(request: Request):
callback_data = await request.json()
# Haz algo con los datos del callback, como guardar la URL del video en una base de datos
return {"status": "Callback recibido", "data": callback_data}
5.2. Procesando los Datos del Callback
En el manejador del callback, puedes procesar los datos como quieras. Por ejemplo, podrías querer almacenar la URL del video en tu base de datos o desencadenar otra acción basada en la respuesta.
6. Conclusiones
Acabas de envolver la API de Luma usando FastAPI, haciendo super fácil integrar la generación de videos con IA en tus proyectos. Ya sea que estés trabajando en una aplicación grande o simplemente explorando lo que es posible con la IA, esta configuración te da una herramienta poderosa al alcance de tu mano. ¡Feliz codificación!