pub

Node.js と Axios で Luma AI API を使い始める方法

Luma AI APIをNode.jsとAxiosで使う方法

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. Luma APIをAxiosでラップする

さて、楽しい部分に入るよ!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で統合する方法を学んだね。これからもっと advanced な機能を作ったりして、LumaのDream Machineの可能性を引き出せるよ。

楽しいコーディングを!