pub

FastAPI로 Luma AI의 API 감싸는 법: 실용 가이드

1. Lumalabs와 Dream Machine 소개

안녕하세요! Lumalabs는 AI와 머신러닝 분야에서 아주 혁신적인 회사에요. 그들 중 Dream Machine이라는 기능이 진짜 대단한데, 이 기능으로 텍스트나 이미지로 비디오를 만들 수 있어요. 요즘 비공식 RESTful API도 생겼다고 해서, FastAPI를 사용해 이걸 어떻게 감싸는지 보여드릴게요. 개발자로서 AI 비디오 생성 기능을 당신의 앱에 보다 활용하고 싶다면, 아니면 그냥 Luma의 기능을 가지고 놀고 싶다면, 이 가이드가 도움이 될 거에요.

API 문서: Luma API

2. FastAPI 설정하기

2.1. FastAPI 설치하기

일단, FastAPI를 설정해야 해요. 아직 설치 안 했다면, pip로 간단하게 설치할 수 있어요. 다음 명령어 실행해 보세요:

pip install fastapi

그리고 FastAPI 앱을 서비스하려면 ASGI 서버도 필요해요. uvicorn을 설치하세요:

pip install uvicorn

2.2. 기본 FastAPI 앱 만들기

이제 FastAPI의 아주 기본적인 앱부터 만들어서 모든 게 잘 설정됐는지 확인해 보죠. 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. Luma API 감싸기

3.1. POST 엔드포인트 설정하기

다음으로, FastAPI에서 비디오 생성을 위한 Luma API를 감싸는 POST 엔드포인트를 만들어볼게요. 내부에서 사용하기 좋은 깔끔하고 간단한 인터페이스를 만드는 게 목표에요.

엔드포인트를 이렇게 설정할 수 있어요:

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. 엔드포인트 설명하기

  • Payload 준비: FastAPI의 Form 함수를 사용해서 필요한 데이터인 prompt, callback URL, 이미지 URL 등을 모아서 Luma API가 요구하는 형태로 만들어줘요.

  • 인증: API에 안전하게 접근하려면 헤더에 Bearer 토큰을 포함해야 해요.

  • API 요청 보내기: 마지막으로, Luma API에 POST 요청을 보내고, 응답을 JSON으로 반환해요.

4. API 테스트하기

4.1. FastAPI의 자동 생성 문서 사용하기

FastAPI의 좋은 점 중 하나는 자동으로 생성된 문서에요. 앱을 실행한 후에 http://127.0.0.1:8000/docs로 가면, 인터랙티브한 문서 페이지를 볼 수 있어요.

4.2. 테스트 요청하기

문서에서 새로 만든 /generate-video/ 엔드포인트를 쉽게 테스트할 수 있어요. 샘플 프롬프트, 콜백 URL, 그리고 원하는 경우 이미지 URL을 입력한 후 "Execute"를 눌러서 결과를 확인해보세요.

5. 콜백 처리하기

5.1. 콜백 엔드포인트 설정하기

비디오가 생성된 후, Luma API가 당신이 제공한 콜백 URL로 POST 요청을 보낼 거에요. 그걸 처리할 엔드포인트를 설정해봅시다:

from fastapi import Request

@app.post("/api/cb_task/")
async def handle_callback(request: Request):
    callback_data = await request.json()
    # 콜백 데이터를 가지고 뭐든지 할 수 있어요, 예를 들어 비디오 URL을 데이터베이스에 저장하기.
    return {"status": "콜백 받음", "data": callback_data}

5.2. 콜백 데이터 처리하기

콜백 핸들러 안에서 원하는 대로 데이터를 처리할 수 있어요. 예를 들어, 비디오 URL을 데이터베이스에 저장하거나, 응답에 따라서 다른 작업을 트리거할 수도 있죠.

6. 마무리

이제 FastAPI를 사용해서 Luma API를 감쌌어요. 이젠 AI 기반 비디오 생성을 프로젝트에 통합하는 게 정말 쉬워졌어요. 큰 앱을 만들고 있든, 아니면 AI로 가능한 것들을 탐구하고 싶든, 이 설정으로 당신의 손끝에 강력한 도구를 얻게 됐어요. 즐거운 코딩 되세요!