@sunra/client npm paketi

Giriş

JavaScript/TypeScript için istemci kütüphanesi, Sunra’nın hizmetleriyle etkileşim kurmak için kullanımı kolay bir arayüz sunar.

Kurulum

İstemciyi projenize entegre etmek için npm kullanarak yükleyin:
npm install @sunra/client

Özellikler

Uç Noktaları Çağırma

Sunra, güvenilirlik ve ölçeklenebilirlik sağlayarak uç nokta isteklerini bir kuyruk sistemi aracılığıyla yönetir. Bir istek göndermek ve sonucu beklemek için subscribe yöntemini kullanın. Örnek:
import { sunra } from "@sunra/client";

const result = await sunra.subscribe("black-forest-labs/flux-kontext-pro/text-to-image", {
  input: {
    prompt: "Güneşli pencere kenarında ahşap bir masa üzerinde, içinde çiçek açan çiçek çayı bulunan cam demlik, nazik sabah ışığıyla.",
    "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);

Kuyruk Yönetimi

Bu yöntemlerle isteklerinizi yönetin:
İstek Gönderme
Bir istek gönderin ve daha sonra kullanmak üzere request_id’yi alın. Örnek:
import { sunra } from "@sunra/client";

const { request_id } = await sunra.queue.submit("black-forest-labs/flux-kontext-max", {
  input: {
    prompt: "Güneşli pencere kenarında ahşap bir masa üzerinde, içinde çiçek açan çiçek çayı bulunan cam demlik, nazik sabah ışığıyla.",
    "aspect_ratio": "16:9",
    "output_format": "jpeg",
  },
});
İstek Durumunu Kontrol Etme
Bir isteğin durumunu alın. Örnek:
import { sunra } from "@sunra/client";

const status = await sunra.queue.status({
  requestId: "pd_eTYYuw4EqYLzRBHgnAMHA8zH",
  logs: true,
});
İstek Sonuçlarını Alma
Tamamlanmış bir isteğin sonucunu getirin. Örnek:
import { sunra } from "@sunra/client";

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

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

Depolama

storage API’si dosya yüklemenize ve bir URL almanıza olanak tanır, bu URL daha sonra model uç nokta isteklerinizde kullanılabilir. Bu özellikle resimden videoya veya konuşmadan metne gibi dosya girişi gerektiren modeller için faydalıdır.
Maksimum dosya boyutu: 100MB
Tarayıcıda Dosya Yükleme
Kullanıcıların dosyaları doğrudan tarayıcılarından yüklemelerine izin verebilirsiniz. Aşağıdaki örnek, bir dosya seçmek ve yüklemek için <input type="file"> öğesinin nasıl kullanılacağını gösterir.
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('Dosya başarıyla yüklendi:', url);
      // Artık bu URL'yi bir model uç noktası ile kullanabilirsiniz
    } catch (error) {
      console.error('Yükleme başarısız:', error);
    }
  }
});
Node.js’te Dosya Yükleme
Node.js ile sunucu tarafında, yerel dosya sisteminden dosyaları okuyup yükleyebilirsiniz.
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);
    // İstemci bir File nesnesi gerektirir, bunu bir buffer'dan oluşturabiliriz
    const file = new File([buffer], basename(filePath));

    const url = await sunra.storage.upload(file);
    console.log('Dosya başarıyla yüklendi:', url);
    return url;
  } catch (error) {
    console.error('Yükleme başarısız:', error);
  }
}

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

Model Uç Noktalarıyla Otomatik Yüklemeler

JavaScript SDK sizin için dosya yüklemelerini otomatik olarak halledebilir. Bir model uç noktasının girişine File nesnesi, Blob veya base64 veri URI’si geçirdiğinizde, SDK önce onu depolamaya yükleyecek ve ardından istekte elde edilen URL’yi kullanacaktır. Bu, ayrı bir yükleme adımı gerçekleştirmenize gerek olmadığı için süreci basitleştirir.
import { sunra } from "@sunra/client";

// Tarayıcı dosya girişinden bir File nesnesi otomatik olarak yüklenecektir
const fileInput = document.getElementById('file-input');
const file = fileInput.files[0];

const result = await sunra.subscribe("some-model-that-takes-images", {
  input: {
    image: file, // SDK bu dosyayı otomatik olarak yükler
    prompt: "Resimle ne yapılacağını açıklayan bir metin"
  }
});

// Base64 veri URI'si de otomatik olarak yüklenecektir
const base64Image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...";

const result2 = await sunra.subscribe("some-model-that-takes-images", {
  input: {
    image: base64Image, // SDK bunu otomatik olarak Blob'a dönüştürür ve yükler
    prompt: "Resimle ne yapılacağını açıklayan bir metin"
  }
});

Destek

Yardım veya tartışmalar için topluluğumuza katılın: Size yardımcı olmak için buradayız!