pub

Démarrer avec l'API AI Luma en utilisant Node.js et Axios

Comment utiliser l’API AI Luma avec Node.js et Axios

Alors, vous savez quoi ? Lumalabs fait vraiment parler de lui avec sa fonctionnalité Dream Machine qui permet de créer du contenu vidéo incroyable grâce à l’IA. Et le meilleur, c’est que vous pouvez profiter de cette magie via leur API ! Dans ce guide, je vais vous montrer comment utiliser Node.js et Axios pour envelopper l’API de Luma pour un usage interne facile.

1. C’est quoi Lumalabs et Dream Machine ?

Avant de plonger dans le code, parlons un peu d’Lumalabs. Ce sont les cerveaux derrière Dream Machine, un outil d’IA puissant qui génère des vidéos à partir de prompts textuels et d’images. Que vous soyez un pro créatif ou juste quelqu’un qui adore bidouiller avec l’IA, Dream Machine ouvre un monde de possibilités.

2. Configurer votre projet Node.js

Allez, on commence par créer un projet Node.js ! Si vous ne l’avez pas encore fait, créez un nouveau dossier pour votre projet et exécutez :

npm init -y

Ça va mettre en place un projet Node.js basique. Ensuite, vous devrez installer Axios pour faire des requêtes HTTP :

npm install axios form-data

On va utiliser Axios pour gérer les requêtes vers l’API de Luma.

3. Envelopper l’API Luma avec Axios

Okay, maintenant on s’amuse ! Créons une simple fonction wrapper avec Axios. Voici un petit aperçu du code :

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

let data = new FormData();
data.append('arg_prompt', 'le vent souffle');
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 Comprendre le code

  • FormData : On utilise FormData pour gérer le corps de la requête, qui inclura le prompt et l’URL de callback.
  • Requête Axios : La méthode axios.request() envoie la requête POST à l’API de Luma. Si tout se passe bien, ça affiche la réponse ; sinon, ça attrape et affiche l’erreur.

4. Gérer la réponse

Une fois la requête réussie, l’API de Luma va retourner une réponse avec un ID de tâche. Voilà un exemple de ce que vous pourriez recevoir :

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

4.1 Que faire avec l’ID de tâche ?

L’ID de tâche, c’est votre ticket pour récupérer la vidéo générée. Luma va traiter votre demande et ensuite envoyer le résultat à l’URL de callback que vous avez fournie.

5. Gérer le callback

Alors, parlons du callback. Quand Luma a fini de traiter, il enverra le résultat à votre serveur à l’URL que vous avez spécifiée. Voici un exemple de ce à quoi les données pourraient ressembler :

{
  "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 Configurer votre serveur de callback

Pour gérer ça, vous aurez besoin d’un serveur qui tourne à l’URL de callback. Un simple serveur Express avec Node.js ferait l’affaire. Voici un exemple basique :

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

app.use(express.json());

app.post('/api/cb_task', (req, res) => {
  const data = req.body;
  console.log('Callback reçu :', data);
  res.sendStatus(200);
});

app.listen(3001, () => {
  console.log('Serveur tournant sur le port 3001');
});

6. Conclusion

Et voilà ! Vous venez d’apprendre à intégrer l’API de Luma avec Node.js en utilisant Axios. C’est juste le début ; vous pouvez développer ça pour créer des fonctionnalités plus avancées et vraiment débloquer le potentiel de Dream Machine.

Bon codage !