- 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の可能性を引き出せるよ。
楽しいコーディングを!