pub

Node.js와 Axios로 Luma AI API 시작하기

Node.js와 Axios로 Luma AI API 사용하기

Lumalabs는 Dream Machine 기능으로 화제를 모으고 있는데, 이 기능이 AI를 사용해 멋진 영상 콘텐츠를 만들 수 있게 해줘요. 대박이죠? 이 매력을 API를 통해 활용할 수 있어요! 이번 가이드는 Node.js와 Axios로 Luma AI의 API를 쉽게 사용할 수 있게 감싸는 방법을 알려줄게요.

1. Lumalabs와 Dream Machine이 뭐야?

코드에 들어가기 전에, Lumalabs에 대해 좀 이야기해볼게요. 이들은 Dream Machine라는 굉장한 AI 도구를 개발했어요. 이 도구는 텍스트 프롬프트와 이미지를 바탕으로 영상을 생성해줘요. 창작 전문가든 AI를 만져보는 걸 좋아하는 사람이든, Dream Machine는 무한한 가능성을 열어준답니다.

2. Node.js 프로젝트 설정하기

자, 이제 Node.js 프로젝트를 설정해볼까요. 아직 안 했다면, 프로젝트를 위한 새로운 디렉토리를 만들고 아래 명령어를 실행해봐요:

npm init -y

이렇게 하면 기본 Node.js 프로젝트가 설정돼요. 그 다음, HTTP 요청을 위해 Axios도 설치해야겠죠:

npm install axios form-data

이제 Axios를 사용해서 Luma의 API에 요청할 거예요.

3. Axios로 Luma API 감싸기

이제 진짜 재밌는 부분이에요! Axios를 이용해서 간단한 래퍼 함수를 만들어볼게요. 코드는 이렇게 생겼어요:

const axios = require('axios');
const FormData = require('form-data');

let data = new FormData();
data.append('arg_prompt', '바람이 불다');
data.append('callback', 'http://127.0.0.1:3001/api/cb_task');

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://api.lumaapi.com/api/v1/generation/add',
  headers: {
    ...data.getHeaders()
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

3.1 코드 이해하기

  • FormData: FormData를 사용해 요청 본문을 처리할 거예요. 여기에는 프롬프트와 콜백 URL이 포함돼요.
  • Axios 요청: axios.request() 메서드로 Luma API에 POST 요청을 보내요. 모든 게 잘되면 응답을 출력하고, 문제가 생기면 에러를 잡아서 출력해요.

4. 응답 처리하기

요청이 성공적으로 처리되면 Luma의 API에서 작업 ID를 담은 응답이 올 거예요. 예를 들어, 이렇게 나올 수 있어요:

{
    "code": 0,
    "msg": "Ok",
    "data": {
        "task_id": "la1234-5678-xxxxxx"
    }
}

4.1 작업 ID로 뭐 할까?

작업 ID는 생성된 영상을 가져오는 열쇠예요. Luma가 요청을 처리하고, 제공한 콜백 URL에 결과를 올릴 거예요.

5. 콜백 처리하기

이제 콜백에 대해 이야기해볼까요. Luma가 처리를 끝내면, 지정한 URL로 결과를 보낼 거예요. 데이터는 이렇게 생겼을 수 있어요:

{
  "code": 0,
  "msg": "string",
  "detail": "string",
  "data": {
    "task_id": "string",
    "payload": {},
    "result": {
      "id": "string",
      "prompt": "string",
      "created_at": "2024-06-22T13:57:05.878000Z",
      "video": {
        "url": "string",
        "download_video_url": "string",
        "thumbnail": "string",
        "width": 0,
        "height": 0
      }
    }
  }
}

5.1 콜백 서버 설정하기

이걸 처리하려면 콜백 URL에서 실행되는 서버가 필요해요. 간단한 Node.js Express 서버면 딱이에요. 기본 예시는 이렇게 생겼어요:

const express = require('express');
const app = express();

app.use(express.json());

app.post('/api/cb_task', (req, res) => {
  const data = req.body;
  console.log('콜백 받음:', data);
  res.sendStatus(200);
});

app.listen(3001, () => {
  console.log('3001 포트에서 서버 실행 중');
});

6. 결론

자, 이렇게 해서 Luma AI의 API를 Node.js와 Axios로 통합하는 방법을 배웠어요! 이건 시작일 뿐이고, 여기서 더 발전된 기능을 만들어서 Luma의 Dream Machine의 잠재력을 정말로 끌어낼 수 있답니다.

코딩 재밌게 하세요!