О проекте
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) - Высота изображения в пикселях.