- pub
Как использовать FastAPI для обертывания API Luma AI: практическое руководство
1. Введение в Lumalabs и Dream Machine
Lumalabs — это крутая компания, что прям завоевывает мир AI и машинного обучения. Одной из их фишек является Dream Machine, которая позволяет генерировать видео из текста или изображений с помощью суперсовременного AI. И тут нам повстречался неофициальный RESTful API для этого! Я покажу, как его завернуть с помощью FastAPI. Если ты разработчик и хочешь интегрировать AI-видеогенерацию в свое приложение или просто поиграться с возможностями Luma, то это руководство тебя точно выручит.
Документация API: Luma API
2. Настройка FastAPI
2.1. Установка FastAPI
Сначала нам нужно установить FastAPI. Если его еще нет, то установить его можно быстро через pip. Просто запусти:
pip install fastapi
Также нужен ASGI-сервер, чтобы запустить приложение FastAPI, например, uvicorn
:
pip install uvicorn
2.2. Создание базового приложения FastAPI
Давай создадим очень простое приложение FastAPI, чтобы убедиться, что все настроено правильно. Создай новый файл на Python под названием main.py
:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Привет, Luma AI!"}
Теперь запусти сервер с помощью uvicorn:
uvicorn main:app --reload
Загляни на http://127.0.0.1:8000/
в своем браузере, и ты увидишь сообщение "Привет, Luma AI!".
3. Обертка API Luma
3.1. Настройка POST эндпоинта
Теперь мы создадим POST эндпоинт в FastAPI, чтобы завернуть API Luma для генерации видео. Идея в том, чтобы сделать простой интерфейс для внутреннего использования.
Вот как можно настроить эндпоинт:
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" # Замените это на ваш настоящий токен
@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. Разбор эндпоинта
Подготовка данных: Мы собираем нужные данные такие как подсказка, URL обратного вызова и URL изображений с помощью функции
Form
от FastAPI. Это помогает создать структуру форм-данных, которую ожидает API Luma.Авторизация: Мы включаем токен Bearer в заголовки для безопасного доступа к API.
Запрос к API: Делаем POST-запрос к API Luma и возвращаем ответ в формате JSON.
4. Тестируем ваш API
4.1. Используя встроенную документацию FastAPI
Одно из классных преимуществ FastAPI — это автоматически сгенерированная документация. Как только приложение будет запущено, просто загляни на http://127.0.0.1:8000/docs
, и ты увидишь классную интерактивную страницу документации.
4.2. Делая тестовый запрос
Легко можешь протестировать свой новый эндпоинт /generate-video/
прямо из документации. Заполни поля формы с примером подсказки, URL обратного вызова и по желанию, URL изображений, а потом нажми "Execute", чтобы увидеть результат.
5. Обработка обратного вызова
5.1. Настройка эндпоинта для обратного вызова
После генерации видео API Luma отправит POST-запрос на URL обратного вызова, который ты указал. Давай настроим эндпоинт для этого:
from fastapi import Request
@app.post("/api/cb_task/")
async def handle_callback(request: Request):
callback_data = await request.json()
# Делай что-то с данными обратного вызова, например, сохрани видео URL в базе данных
return {"status": "Callback received", "data": callback_data}
5.2. Обработка данных обратного вызова
В обработчике обратного вызова можешь обрабатывать данные так, как тебе нравится. Например, ты можешь сохранить URL видео в свою базу данных или триггерить какое-то другое действие в зависимости от ответа.
6. Заключение
Ты только что завернул API Luma с помощью FastAPI, сделав интеграцию AI-видеогенерации в свои проекты проще простого. Независимо от того, работаешь ли ты над большим приложением или просто исследуешь возможности AI, это решение дает тебе мощный инструмент под рукой. Удачного кодинга!