@sunra/client pacchetto npm

Introduzione

La libreria client per JavaScript/TypeScript offre un’interfaccia facile da usare per interagire con i servizi di Sunra.

Installazione

Per integrare il client nel tuo progetto, installalo usando npm:
npm install @sunra/client

Funzionalità

Chiamata degli endpoint

Sunra gestisce le richieste degli endpoint tramite un sistema di code, garantendo affidabilità e scalabilità. Usa il metodo subscribe per inviare una richiesta e attendere il risultato. Esempio:
import { sunra } from "@sunra/client";

const result = await sunra.subscribe("black-forest-labs/flux-kontext-pro/text-to-image", {
  input: {
    prompt: "Una teiera di vetro con tè ai fiori che sbocciano all'interno, posta su un tavolo di legno vicino a una finestra illuminata dal sole con una luce mattutina delicata.",
    "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);

Gestione delle code

Gestisci le tue richieste con questi metodi:
Invio di una richiesta
Invia una richiesta e recupera il request_id per un uso successivo. Esempio:
import { sunra } from "@sunra/client";

const { request_id } = await sunra.queue.submit("black-forest-labs/flux-kontext-max", {
  input: {
    prompt: "Una teiera di vetro con tè ai fiori che sbocciano all'interno, posta su un tavolo di legno vicino a una finestra illuminata dal sole con una luce mattutina delicata.",
    "aspect_ratio": "16:9",
    "output_format": "jpeg",
  },
});
Controllo dello stato della richiesta
Recupera lo stato di una richiesta. Esempio:
import { sunra } from "@sunra/client";

const status = await sunra.queue.status({
  requestId: "pd_eTYYuw4EqYLzRBHgnAMHA8zH",
  logs: true,
});
Recupero dei risultati della richiesta
Recupera il risultato di una richiesta completata. Esempio:
import { sunra } from "@sunra/client";

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

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

Archiviazione

L’API storage ti consente di caricare file e ricevere un URL, che può quindi essere utilizzato nelle tue richieste di endpoint del modello. Ciò è particolarmente utile per i modelli che richiedono input di file, come l’immagine-video o il parlato-testo.
Dimensione massima del file: 100 MB
Caricamento di file nel browser
Puoi consentire agli utenti di caricare file direttamente dal loro browser. L’esempio seguente mostra come utilizzare un elemento <input type="file"> per selezionare un file e caricarlo.
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('File caricato con successo:', url);
      // Ora puoi usare questo URL con un endpoint del modello
    } catch (error) {
      console.error('Caricamento fallito:', error);
    }
  }
});
Caricamento di file in Node.js
Sul lato server con Node.js, puoi leggere i file dal filesystem locale e caricarli.
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);
    // Il client necessita di un oggetto File, che possiamo creare da un buffer
    const file = new File([buffer], basename(filePath));

    const url = await sunra.storage.upload(file);
    console.log('File caricato con successo:', url);
    return url;
  } catch (error) {
    console.error('Caricamento fallito:', error);
  }
}

uploadLocalFile("./percorso/alla/tua/immagine.png");

Caricamenti automatici con endpoint del modello

L’SDK di JavaScript può gestire automaticamente i caricamenti di file per te. Quando passi un oggetto File, Blob o un URI di dati base64 all’input di un endpoint del modello, l’SDK lo caricherà prima nell’archivio e quindi utilizzerà l’URL risultante nella richiesta. Ciò semplifica il processo poiché non è necessario eseguire un passaggio di caricamento separato.
import { sunra } from "@sunra/client";

// Un oggetto File da un input di file del browser verrà caricato automaticamente
const fileInput = document.getElementById('file-input');
const file = fileInput.files[0];

const result = await sunra.subscribe("qualche-modello-che-accetta-immagini", {
  input: {
    image: file, // L'SDK carica automaticamente questo file
    prompt: "Un prompt che descrive cosa fare con l'immagine"
  }
});

// Verrà caricato automaticamente anche un URI di dati base64
const base64Image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...";

const result2 = await sunra.subscribe("qualche-modello-che-accetta-immagini", {
  input: {
    image: base64Image, // L'SDK converte automaticamente questo in un Blob e lo carica
    prompt: "Un prompt che descrive cosa fare con l'immagine"
  }
});

Supporto

Unisciti alla nostra community per aiuto o discussioni: Siamo qui per aiutarti!