Replicate : appel API et récupération binaire WebP

Prépare la payload, exécute le modèle Flux 1.1 Pro et écris l’image WebP en Node. Maîtrise Replicate, buffer base64 et gestion de fichiers TypeScript.

2 min read

Préparer la payload pour Replicate

On construit d’abord l’objet input.
Il contient tous les paramètres attendus par le modèle.
But : rester explicite pour éviter les erreurs côté Replicate.

src/services/replicate.ts
1
const input = {
2
prompt: prompt, // ^? Le texte descriptif fourni par l'utilisateur
3
aspect_ratio: "1:1", // Image carrée
4
output_format: "webp", // Format compressé, idéal pour le web
5
output_quality: 80, // Qualité visuelle vs poids du fichier
6
safety_tolerance: 2, // Filtre de contenu
7
prompt_upsampling: true, // Upscale léger automatique
8
}

Lancer le modèle Flux 1.1 Pro

On appelle ensuite replicate.run.
Le modèle black-forest-labs/flux-1.1-pro génère l’image à partir du prompt.

src/services/replicate.ts
1
const output = await replicate.run(
2
"black-forest-labs/flux-1.1-pro", // nom complet du modèle
3
{ input }, // payload définie plus haut
4
)

Pour plus de détails sur replicate.run, voir la doc officielle :
Replicate API reference

Sauvegarder l’image sur disque

Dernière étape :

  1. Créer un nom de fichier unique.
  2. Convertir la sortie base64 en Buffer.
  3. Écrire le fichier dans le dossier images.
src/services/replicate.ts
1
import { randomBytes } from "crypto"
2
import { join } from "path"
3
import { writeFile } from "fs/promises"
4
5
// 1. nom de fichier aléatoire
6
const filenameHash = randomBytes(8).toString("hex")
7
8
// 2. chemin complet vers /images/<hash>.jpg (resté .jpg pour compat.)
9
const filePath = join(process.cwd(), "images", `${filenameHash}.jpg`)
10
11
// 3. conversion base64 -> Buffer puis écriture disque
12
const outputBuffer = Buffer.from(output.toString(), "base64")
13
await writeFile(filePath, outputBuffer)

Récap rapide

  1. Crée l’objet input → paramètres clairs pour le modèle.
  2. Appelle replicate.run → récupère un binaire base64.
  3. Convertis, nomme et écris le fichier sur disque.

Cette fonction est prête à être branchée sur ta route Hono protégée par middleware auth :
génère, décompte un crédit, persiste l’image, c’est tout.

Quiz

Testez vos connaissances avec 4 questions

1Question 1 sur 4

Quel est le rôle principal de l’objet "input" que l’on construit avant d’appeler replicate.run ?

2Question 2 sur 4

Quelle est la nature exacte de la valeur renvoyée par la fonction replicate.run dans cet exemple ?

3Question 3 sur 4

Pourquoi crée-t-on un nom de fichier aléatoire via randomBytes avant d’écrire l’image sur disque ?

4Question 4 sur 4

L’extension du fichier enregistré est « .jpg » alors que le header output_format vaut « webp ». Quelle est la raison avancée ?