logo
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, это решение дает тебе мощный инструмент под рукой. Удачного кодинга!