Paquet npm @sunra/client

Introduction

La bibliothèque cliente pour JavaScript/TypeScript offre une interface simple à utiliser pour interagir avec les services de Sunra.

Installation

Pour intégrer le client dans votre projet, installez-le en utilisant npm :
npm install @sunra/client

Fonctionnalités

Appeler des points de terminaison

Sunra gère les requêtes de point de terminaison via un système de file d’attente, garantissant fiabilité et évolutivité. Utilisez la méthode subscribe pour soumettre une requête et attendre le résultat. Exemple :
import { sunra } from "@sunra/client";

const result = await sunra.subscribe("black-forest-labs/flux-kontext-pro/text-to-image", {
  input: {
    prompt: "Une théière en verre avec du thé en fleur à l'intérieur, placée sur une table en bois près d'une fenêtre ensoleillée avec une douce lumière du matin.",
    "aspect_ratio": "16:9",
    "output_format": "jpeg",
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      console.log(update.logs)
    }
  },
});

console.log(result.data);
console.log(result.requestId);

Gestion de la file d’attente

Gérez vos requêtes avec ces méthodes :
Soumettre une requête
Soumettez une requête et récupérez le request_id pour une utilisation ultérieure. Exemple :
import { sunra } from "@sunra/client";

const { request_id } = await sunra.queue.submit("black-forest-labs/flux-kontext-max", {
  input: {
    prompt: "Une théière en verre avec du thé en fleur à l'intérieur, placée sur une table en bois près d'une fenêtre ensoleillée avec une douce lumière du matin.",
    "aspect_ratio": "16:9",
    "output_format": "jpeg",
  },
});
Vérifier le statut de la requête
Récupérez le statut d’une requête. Exemple :
import { sunra } from "@sunra/client";

const status = await sunra.queue.status({
  requestId: "pd_eTYYuw4EqYLzRBHgnAMHA8zH",
  logs: true,
});
Récupérer les résultats de la requête
Récupérez le résultat d’une requête terminée. Exemple :
import { sunra } from "@sunra/client";

const result = await sunra.queue.result({
  requestId: "pd_eTYYuw4EqYLzRBHgnAMHA8zH",
});

console.log(result.data);
console.log(result.requestId);

Stockage

L’API storage vous permet de télécharger des fichiers et de recevoir une URL, qui peut ensuite être utilisée dans vos requêtes de point de terminaison de modèle. Ceci est particulièrement utile pour les modèles qui nécessitent des fichiers en entrée, comme l’image-vers-vidéo ou la parole-vers-texte.
Taille maximale du fichier : 100 Mo
Télécharger des fichiers dans le navigateur
Vous pouvez permettre aux utilisateurs de télécharger des fichiers directement depuis leur navigateur. L’exemple suivant montre comment utiliser un élément <input type="file"> pour sélectionner un fichier et le télécharger.
import { sunra } from "@sunra/client";

const fileInput = document.getElementById('file-input');

fileInput.addEventListener('change', async (event) => {
  const file = event.target.files[0];
  if (file) {
    try {
      const url = await sunra.storage.upload(file);
      console.log('Fichier téléchargé avec succès :', url);
      // Vous pouvez maintenant utiliser cette URL avec un point de terminaison de modèle
    } catch (error) {
      console.error('Échec du téléchargement :', error);
    }
  }
});
Télécharger des fichiers dans Node.js
Côté serveur avec Node.js, vous pouvez lire des fichiers depuis le système de fichiers local et les télécharger.
import { sunra } from "@sunra/client";
import { readFile } from "node:fs/promises";
import { basename } from "node:path";

async function uploadLocalFile(filePath) {
  try {
    const buffer = await readFile(filePath);
    // Le client a besoin d'un objet File, que nous pouvons créer à partir d'un tampon
    const file = new File([buffer], basename(filePath));

    const url = await sunra.storage.upload(file);
    console.log('Fichier téléchargé avec succès :', url);
    return url;
  } catch (error) {
    console.error('Échec du téléchargement :', error);
  }
}

uploadLocalFile("./path/to/your/image.png");

Téléchargements automatiques avec les points de terminaison de modèle

Le SDK JavaScript peut gérer automatiquement les téléchargements de fichiers pour vous. Lorsque vous passez un objet File, un Blob ou une URI de données base64 à l’entrée d’un point de terminaison de modèle, le SDK le téléchargera d’abord dans le stockage, puis utilisera l’URL résultante dans la requête. Cela simplifie le processus car vous n’avez pas besoin d’effectuer une étape de téléchargement séparée.
import { sunra } from "@sunra/client";

// Un objet File provenant d'une entrée de fichier de navigateur sera automatiquement téléchargé
const fileInput = document.getElementById('file-input');
const file = fileInput.files[0];

const result = await sunra.subscribe("some-model-that-takes-images", {
  input: {
    image: file, // Le SDK télécharge automatiquement ce fichier
    prompt: "Une invite décrivant quoi faire avec l'image"
  }
});

// Une URI de données base64 sera également automatiquement téléchargée
const base64Image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...";

const result2 = await sunra.subscribe("some-model-that-takes-images", {
  input: {
    image: base64Image, // Le SDK convertit automatiquement ceci en Blob et le télécharge
    prompt: "Une invite décrivant quoi faire avec l'image"
  }
});

Support

Rejoignez notre communauté pour obtenir de l’aide ou participer à des discussions : Nous sommes là pour vous aider !