- 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로 가능한 것들을 탐구하고 싶든, 이 설정으로 당신의 손끝에 강력한 도구를 얻게 됐어요. 즐거운 코딩 되세요!