Інтеграція AI-генерації зображень (Kandinsky) у мобільний додаток

Замислювалися про додавання AI-генерації зображень у мобільний застосунок, але не знали, з чого почати? Ми реалізуємо інтеграцію Kandinsky через Fusionbrain API під ключ — від вибору моделі до впровадження у ваш продукт. Наша команда забезпечує стабільну роботу та подальшу підтримку, щоб ваші користувачі могли створювати унікальні картинки прямо в застосунку.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція AI-генерації зображень (Kandinsky) у мобільний додаток
Простий
~2-3 дні
Часті запитання

Реалізація AI-генерації зображень (Kandinsky) у мобільному додатку

Ми в команді мобільної розробки регулярно вирішуємо завдання інтеграції AI-генерації зображень. Для україномовного ринку оптимальним інструментом стала модель Kandinsky від Sber AI (версія 3.1). Її перевага — нативне розуміння українських промптів без перекладу. З нею «захід сонця над березовим лісом» працює так само, як на західних моделях англійський запит, без втрати якості. Правильна інтеграція такого сервісу займає від 3 до 12 днів, але результат — унікальна фіча для користувачів. Якщо ви замислюєтеся про додавання AI-генерації, Wikipedia: Kandinsky AI допоможе розібратися в основах, а ми покажемо, як реалізувати її технічно.

Чому варто обрати Kandinsky для мобільного додатку?

Основні причини: повна підтримка української мови, безкоштовний тариф на старті (100 запитів на добу), висока якість генерації для художніх та природних сюжетів. На відміну від багатьох західних аналогів, Kandinsky не потребує VPN і працює через офіційний Fusionbrain API. Для мобільного розробника це означає простоту інтеграції без додаткових проксі-серверів.

Доступні способи інтеграції

Порівняємо три основні підходи:

Метод API Безкоштовний рівень Стабільність Рекомендація
Fusionbrain API REST 100 запитів/добу Висока Продакшен
Replicate REST Немає (плата за модель) Середня Прототипи
HuggingFace Inference API REST Обмежено Низька Експерименти

Для продакшену обираємо Fusionbrain API з власним бекендом-проксі. Це гарантує керованість та безпеку.

Як ми інтегруємо Fusionbrain API: покроковий приклад

Розглянемо процес на Kotlin (Android), хоча на Swift він практично ідентичний. Основна складність — двоетапна модель: створення завдання та polling результату.

class KandinskyService(private val apiKey: String, private val secretKey: String) { // Шаг 1: получить ID модели
    suspend fun getModelId(): String {
        val response = httpClient.get("https://api-key.fusionbrain.ai/key/api/v1/models") {
            header("X-Key", "Key $apiKey")
            header("X-Secret", "Secret $secretKey")
        }
        val models = response.body<List<FusionBrainModel>>()
        return models.first { it.name == "Kandinsky" }.id.toString()
    }

    // Шаг 2: создать задачу генерации
    suspend fun createTask(modelId: String, prompt: String, width: Int = 1024, height: Int = 1024): String {
        val params = JSONObject().apply {
            put("type", "GENERATE")
            put("numImages", 1)
            put("width", width)
            put("height", height)
            put("generateParams", JSONObject().apply {
                put("query", prompt)
            })
        }

        // Multipart запрос
        val requestBody = MultipartBody.Builder()
            .setType(MultipartBody.FORM)
            .addFormDataPart("model_id", modelId)
            .addFormDataPart(
                "params",
                "params.json",
                params.toString().toRequestBody("application/json".toMediaType())
            )
            .build()

        val response = OkHttpClient().newCall(
            Request.Builder()
                .url("https://api-key.fusionbrain.ai/key/api/v1/text2image/run")
                .header("X-Key", "Key $apiKey")
                .header("X-Secret", "Secret $secretKey")
                .post(requestBody)
                .build()
        ).execute()

        return JSONObject(response.body!!.string()).getString("uuid")
    }

    // Шаг 3: polling
    suspend fun pollResult(taskUuid: String): Bitmap? {
        repeat(30) {
            delay(3000)
            val response = OkHttpClient().newCall(
                Request.Builder()
                    .url("https://api-key.fusionbrain.ai/key/api/v1/text2image/status/$taskUuid")
                    .header("X-Key", "Key $apiKey")
                    .header("X-Secret", "Secret $secretKey")
                    .get()
                    .build()
            ).execute()
            val json = JSONObject(response.body!!.string())
            if (json.getString("status") == "DONE") {
                val images = json.getJSONArray("images")
                val base64 = images.getString(0)
                val bytes = Base64.decode(base64, Base64.DEFAULT)
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
            }
        }
        return null
    }
}

Код вище демонструє типову реалізацію. Зверніть увагу: відповідь приходить як base64-рядок, а не URL. Декодувати потрібно у фоновому потоці, щоб не блокувати UI.

Параметри генерації: блоки, стилі та негативний промпт

Kandinsky підтримує гнучке налаштування. Ось оптимальні параметри для мобільного додатку:

Параметр Діапазон Рекомендація
width/height 256–1024, кратне 64 768×768 або 1024×1024
style DEFAULT, ANIME, PORTRAIT, NATURE, REALISTIC Залежить від контенту
negativePromptDecoder рядок Вказувати завжди
val params = JSONObject().apply {
    put("type", "GENERATE")
    put("numImages", 1)
    put("width", 768)
    put("height", 1024)
    put("style", "PORTRAIT")
    put("generateParams", JSONObject().apply {
        put("query", "портрет молодої жінки в українському традиційному костюмі, деталізований, реалізм")
    })
    put("negativePromptDecoder", "розмитість, артефакти, деформація, текст, водяний знак")
}

Що таке negative prompt і як він покращує результат?

Негативний промпт — це опис того, чого модель повинна уникати. У прикладі вище ми вказали «розмитість, артефакти, деформація, текст, водяний знак». Це знижує ймовірність появи небажаних елементів. Для портретів та фотореалістичних сцен negative prompt обов'язковий: без нього модель може додати випадкові артефакти. Експериментуйте з формулюваннями: чим точніше опишете, що потрібно виключити, тим чистішою буде генерація.

Український промпт vs англійський: практичні рекомендації

Kandinsky розуміє українську без деградації якості. Однак для технічних описів (архітектура, механізми) англійський промпт дає точніший результат — модель навчена на змішаному корпусі, і технічні терміни краще представлені в англійській. Для художніх, пейзажних, портретних сценаріїв українська працює відмінно. Для максимальної якості пишіть промпт обома мовами (якщо UI дозволяє), Kandinsky обробить обидва.

Як уникнути типових помилок при інтеграції?

  • Статус FAIL від Fusionbrain без пояснень — зазвичай промпт порушує content policy або занадто короткий (менше 3 слів). Мінімальний промпт для стабільної роботи — 5–10 слів.
  • Декодування base64 на main thread — блокування UI. Завжди використовуйте фоновий потік: DispatchQueue.global().async (iOS) або Dispatchers.Default (Android).
  • Перевищення ліміту безкоштовного тарифу — моніторте кількість запитів за допомогою лічильника.

Повний чек-лист для інтеграції:

  • Отримано API-ключі Fusionbrain
  • Реалізовано polling з таймаутом (30 спроб по 3 секунди)
  • Обробка помилок 4xx та 5xx
  • Декодування base64 у фоні
  • Кешування результатів
  • UI з індикатором завантаження

Що входить у нашу роботу

При замовленні інтеграції Kandinsky у ваш мобільний додаток ми надаємо:

  1. Backend-проксі для безпечного зберігання API-ключів.
  2. Модуль генерації для iOS (Swift) або Android (Kotlin) з обробкою помилок.
  3. UI-компонент для введення промпту, вибору стилю та відображення результату.
  4. Інтеграцію з галереєю для збереження зображень.
  5. Документацію з використання API та приклади запитів.

У нас за плечима більше десяти проєктів з інтеграції Kandinsky та більше п'яти років досвіду в mobile AI. Ми гарантуємо стабільну роботу навіть при пікових навантаженнях. Якщо ви хочете впровадити AI-генерацію у свій додаток, зв'яжіться з нами для попереднього аналізу.

Скільки часу займає інтеграція та яка її вартість?

Базова інтеграція Fusionbrain API з UI займає від 3 до 4 днів. Додавання стилів, історії генерацій, збереження в галереї та обробки помилок content policy — від 8 до 12 днів. Вартість розраховується індивідуально. Зверніть увагу: Fusionbrain API безкоштовний до 100 генерацій на день, що суттєво економить бюджет на невеликому проєкті. Для більш серйозних обсягів можна придбати платний тариф.

Отримайте консультацію з інтеграції AI-генерації у ваш додаток. Напишіть нам, і ми підберемо оптимальне рішення.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714