QULTURA

О проекте

Kling Kolors Virtual Try-On

1. Вызов API

Наше приложение использует API Fal AI для виртуальной примерки одежды. Мы используем клиент @fal-ai/client, который предоставляет удобный способ взаимодействия с API моделей.

import { fal } from "@fal-ai/client";

const result = await fal.subscribe("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  input: {
    human_image_url: "https://storage.googleapis.com/falserverless/model_tests/leffa/person_image.jpg",
    garment_image_url: "https://storage.googleapis.com/falserverless/model_tests/leffa/tshirt_image.jpg"
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((log) => log.message).forEach(console.log);
    }
  },
});
console.log(result.data);
console.log(result.requestId);

2. Аутентификация

API использует API-ключ для аутентификации. Рекомендуется установить переменную окружения FAL_KEY в вашей среде выполнения, когда это возможно.

import { fal } from "@fal-ai/client";

fal.config({
  credentials: "YOUR_FAL_KEY"
});

Защитите свой API-ключ

При запуске кода на стороне клиента (например, в браузере, мобильном приложении или GUI-приложениях), убедитесь, что вы не раскрываете свой FAL_KEY. Вместо этого используйте прокси на стороне сервера для отправки запросов к API.

3. Очередь

Для долгосрочных запросов, таких как задачи обучения или модели с более медленным временем вывода, рекомендуется проверять статус очереди и полагаться на веб-хуки вместо блокировки во время ожидания результата.

Отправка запроса

import { fal } from "@fal-ai/client";

const { request_id } = await fal.queue.submit("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  input: {
    human_image_url: "https://storage.googleapis.com/falserverless/model_tests/leffa/person_image.jpg",
    garment_image_url: "https://storage.googleapis.com/falserverless/model_tests/leffa/tshirt_image.jpg"
  },
  webhookUrl: "https://optional.webhook.url/for/results",
});

Получение статуса запроса

import { fal } from "@fal-ai/client";

const status = await fal.queue.status("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b",
  logs: true,
});

Получение результата

import { fal } from "@fal-ai/client";

const result = await fal.queue.result("fal-ai/kling/v1-5/kolors-virtual-try-on", {
  requestId: "764cabcf-b745-4b3e-ae38-1200304cf45b"
});
console.log(result.data);
console.log(result.requestId);

4. Файлы

Некоторые атрибуты в API принимают URL-адреса файлов в качестве входных данных. В таких случаях вы можете передать свой собственный URL или URI данных Base64.

URI данных (base64)

Вы можете передать URI данных Base64 в качестве входного файла. API обработает декодирование файла за вас. Имейте в виду, что для больших файлов этот вариант, хотя и удобен, может повлиять на производительность запроса.

Размещенные файлы (URL)

Вы также можете передавать свои собственные URL-адреса, если они общедоступны. Имейте в виду, что некоторые хосты могут блокировать межсайтовые запросы, ограничивать скорость или считать запрос ботом.

Загрузка файлов

Fal предоставляет удобное хранилище файлов, которое позволяет загружать файлы и использовать их в ваших запросах. Вы можете загружать файлы с помощью клиентского API и использовать возвращаемый URL в своих запросах.

import { fal } from "@fal-ai/client";

const file = new File(["Hello, World!"], "hello.txt", { type: "text/plain" });
const url = await fal.storage.upload(file);

Автоматическая загрузка

Клиент автоматически загрузит файл за вас, если вы передадите двоичный объект (например, File, Data).

5. Схема

Входные данные

  • human_image_url (string) - URL изображения человека.
  • garment_image_url (string) - URL изображения одежды.
{
  "human_image_url": "https://storage.googleapis.com/falserverless/model_tests/leffa/person_image.jpg",
  "garment_image_url": "https://storage.googleapis.com/falserverless/model_tests/leffa/tshirt_image.jpg"
}

Выходные данные

  • image (Image) - Выходное изображение.
{
  "image": {
    "file_size": 595094,
    "height": 1024,
    "file_name": "result.png",
    "content_type": "image/png",
    "url": "https://v3.fal.media/files/panda/Hoy3zhimzVKi3F2uoGBnh_result.png",
    "width": 768
  }
}

Другие типы

Image
  • url (string) - URL, откуда можно скачать файл.
  • content_type (string) - MIME-тип файла.
  • file_name (string) - Имя файла. Будет автоматически сгенерировано, если не указано.
  • file_size (integer) - Размер файла в байтах.
  • width (integer) - Ширина изображения в пикселях.
  • height (integer) - Высота изображения в пикселях.