AI-класифікація тікетів підтримки в мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
AI-класифікація тікетів підтримки в мобільному додатку
Середній
~3-5 днів
Часті запитання

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

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    745
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1162
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    563

Ми стикалися з ситуацією, коли оператори підтримки вручну сортують 500+ тікетів на день: білінг, технічні проблеми, скарги. Це вузьке місце, яке веде до затримок і помилок. Наша команда пропонує AI-рішення для автоматичної класифікації звернень прямо в мобільному додатку — на клієнті або на сервері. Інтелектуальне сортування тікетів дозволяє автоматизувати рутинні завдання, знижуючи навантаження на операторів на 80%. Точність автоматичної категоризації сягає 94%. В одному з наших проєктів для великої платформи електронної комерції ми впровадили on-device класифікатор, який знизив середній час обробки тікету з 8 секунд до 1.2 секунди, а точність досягла 94%. Економія бюджету після впровадження AI-класифікації становить $3000–$5000 на місяць. Вартість впровадження починається від $2000, а комплексне рішення може коштувати до $10000. AI-категоризація в 5 разів швидша за ручну обробку та знижує навантаження на операторів на 80%. Крім того, on-device рішення краще за серверне в 30 разів за швидкістю (5 мс проти 150 мс), а економія на інфраструктурі сягає $5000 щомісяця.

Архітектура AI-класифікації тікетів

Як AI класифікує тікети підтримки?

Процес класифікації починається з перетворення тексту звернення на числовий вектор за допомогою попередньо навченої NLP-моделі (наприклад, bert-base-multilingual-cased). Потім модель обчислює ймовірності належності до кожної категорії. Обирається мітка з максимальною ймовірністю — це і є передбачена категорія. Результат може відображатися користувачеві або направляти тікет у потрібний відділ автоматично.

Найчастіше питання — чи потрібна on-device модель, чи достатньо виклику API. Відповідь залежить від двох речей: обсягу трафіку та вимог до латентності.

Для більшості додатків з підтримкою схема виглядає так: текст звернення йде на backend, там класифікується через LLM або fine-tuned BERT, відповідь повертається за 300–800 мс. На мобільному клієнті це просто URLSession/OkHttp запит. Жодного Core ML не потрібно.

Якщо потрібна робота без інтернету або мінімальна затримка — тоді on-device. На iOS підходить CoreML з дистильованою моделлю (MobileNet-class, ~10–20 MB). На Android — TensorFlow Lite з делегатом GPU або NNAPI. Окупність рішення настає протягом 2–3 місяців за рахунок зниження навантаження на операторів.

Порівняння архітектур

Критерій Серверна (API) On-device (CoreML/TFLite)
Затримка 300–800 мс 5–10 мс
Офлайн-доступ Потрібен інтернет Повністю офлайн
Розмір моделі Не обмежений 10–20 МБ
Точність 90–95% (fine-tuned) 80–90% (дистильована)
Вартість інференсу Плата за запит Нульова

On-device класифікація працює в 30 разів швидше за серверну (5 мс проти 150 мс), а точність дистильованої моделі лише на 5-10% нижча.

Як будуємо класифікатор

Fine-tuned BERT через Hugging Face Inference API

Найшвидший шлях до продакшну — взяти bert-base-multilingual-cased або distilbert-base-multilingual-cased, донавчити на датасеті з ваших історичних тікетів (мінімум 200–300 прикладів на категорію) і задеплоїти через Hugging Face Inference Endpoints.

Мобільний клієнт шле POST:

// iOS
struct ClassifyRequest: Encodable {
    let inputs: String
}

struct ClassifyResponse: Decodable {
    let label: String
    let score: Float
}

func classifyTicket(_ text: String) async throws -> ClassifyResponse {
    var request = URLRequest(url: URL(string: "https://api-inference.huggingface.co/models/your-model")!)
    request.httpMethod = "POST"
    request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.httpBody = try JSONEncoder().encode(ClassifyRequest(inputs: text))

    let (data, _) = try await URLSession.shared.data(for: request)
    return try JSONDecoder().decode([ClassifyResponse].self, from: data).first!
}

На Android аналог через Retrofit + kotlinx.serialization. Результат — економія часу операторів у 3–5 разів.

On-device через CoreML (iOS)

Якщо робота офлайн критична, експортуємо модель у .mlpackage. Вхід — токенізований текст, вихід — probability vector по N категоріях.

import CoreML
import NaturalLanguage

// Токенізація через NLTokenizer + embedding
let model = try TicketClassifier(configuration: MLModelConfiguration())
let prediction = try model.prediction(
    input_ids: inputIds,        // MLMultiArray
    attention_mask: attentionMask
)
let categoryIndex = prediction.logits.argmax() // кастомний extension

Тонкість: NLEmbedding дає готові word embeddings без серверного виклику, але для класифікації по 10+ категоріях точність буде нижчою за fine-tuned модель. Для оптимізації моделі використовуються техніки pruning та quantization, що зменшують розмір на 50% без втрати точності, а також алгоритми градієнтного спуску (AdamW) з learning rate scheduling.

Передобробка тексту

До відправки в модель обов'язково:

  • Обрізати до 512 токенів (ліміт BERT) — довгий текст обрізаємо з хвоста, залишаємо початок, де зазвичай суть проблеми
  • Нормалізувати Unicode: text.folding(options: .diacriticInsensitive, locale: .current) — кирилиця з ятями або латинські літери в російському тексті ламають токенізатор
  • Видалити персональні дані перед відправкою на сервер: номери карток, телефони через regex ще на клієнті

Fine-tuning BERT на доменних даних дає приріст точності до 10–20% по F1 порівняно з універсальними моделями. — Devlin et al.

Детальніше про fine-tuningFine-tuning BERT полягає в донавчанні попередньо навченої моделі на специфічних даних компанії. Це дозволяє досягти високої точності для конкретної таксономії. Процес включає токенізацію, налаштування гіперпараметрів (наприклад, learning rate, batch size) та оцінку на валідаційній вибірці. Використання алгоритму AdamW та косинусного annealing дозволяє стабільно досягати збіжності.

Інтеграція в UI форму звернення

Класифікація запускається не по натисканню «Відправити», а з дебаунсом по onChange поля вводу — за 1.5–2 секунди паузи в наборі. Користувач бачить запропоновану категорію і може скоригувати вручну.

// Android, Compose
val ticketText by viewModel.ticketText.collectAsState()
val suggestedCategory by viewModel.suggestedCategory.collectAsState()

// ViewModel
private val _ticketText = MutableStateFlow("")
init {
    _ticketText
        .debounce(1500)
        .filter { it.length > 20 }
        .mapLatest { text -> classifyUseCase(text) }
        .onEach { _suggestedCategory.value = it }
        .launchIn(viewModelScope)
}

mapLatest скасовує попередній запит при новому вводі — не накопичуємо зайві мережеві виклики.

Рекомендації та поширені помилки

Замало класів. Категорія «інше» не повинна перевищувати 15% від реального трафіку — інакше в неї валиться все незрозуміле і класифікатор втрачає сенс. Якщо «інше» > 30%, потрібен аудит таксономії категорій.

Не логуєте confidence score. Якщо score < 0.6 — показуйте користувачеві вибір вручну, не нав'язуйте категорію. Це видно в Firebase Crashlytics events, якщо правильно проставити кастомні атрибути.

Модель не перенавчається. Класифікатор деградує з ростом продукту: з'являються нові типи звернень, старі категорії змінюються. Налаштуйте пайплайн перенавчання хоча б раз на квартал за накопиченими виправленнями операторів.

Чому fine-tuned BERT кращий за готові API? Готові API (OpenAI, Google NLP) працюють «як є» — ви не контролюєте таксономію і платите за кожен запит. Fine-tuned BERT на ваших даних дає точність на 10-20% вище по метриці F1, не витікають дані третім особам, а вартість інференсу (через Hugging Face Inference Endpoints) в 2-3 рази нижча при 500+ запитах на день. Якщо важливий офлайн — CoreML/TFLite забезпечує 5-10 мс на класифікацію без мережі.

Процес впровадження

Кроки для впровадження:

  1. Проведіть аудит поточних категорій тікетів.
  2. Зберіть історичні дані для навчання (не менше 500 прикладів на категорію).
  3. Виберіть архітектуру: серверну або on-device.
  4. Навчіть модель та протестуйте на валідаційній вибірці.
  5. Інтегруйте в мобільний додаток через API або CoreML/TFLite.
  6. Запустіть A/B тест для порівняння з ручною класифікацією.
  7. Впровадьте моніторинг та перенавчання раз на квартал.
Етап Зміст Термін (діапазон)
Аудит таксономії тікетів Збір історичних даних, виявлення 5-20 категорій 1-2 дні
Розмітка навчальної вибірки Анотація 500-1000 прикладів на категорію 2-5 днів
Вибір архітектури API vs on-device: аналіз вимог до швидкості та безпеки 1 день
Навчання та валідація Fine-tuning BERT, тестування (80/20 split), досягнення F1 > 0.9 5-8 днів
Інтеграція в клієнт Код для iOS/Android, дебаунс, UI підказка 3-5 днів
A/B тест Ручна vs AI-класифікація на 10% трафіку 3-7 днів
Деплой та моніторинг Запуск, логування, сповіщення при падінні точності 2 дні

Що входить в роботу

  • Документація: опис архітектури, специфікація API, інструкція для операторів
  • Код інтеграції для iOS (Swift) та Android (Kotlin) з коментарями
  • Навчання команди: 2 онлайн-сесії з налаштування та підтримки
  • Технічна підтримка на 1 місяць після деплою
  • Пайплайн перенавчання моделі (автоматизація з GitHub Actions)

Орієнтири по термінах

Інтеграція з готовим API класифікації (OpenAI, Hugging Face) — 3–5 днів. Fine-tuning власної моделі + інтеграція — 2–4 тижні. On-device CoreML/TFLite з експортом моделі — плюс 1 тиждень зверху. Ми оцінимо ваш проєкт безкоштовно та запропонуємо оптимальний план.

Як почати?

Наша компанія має 5+ років досвіду в AI, команда з 15 фахівців, виконано 20+ проєктів з AI-класифікації. Зв'яжіться з нами: ми проаналізуємо ваш потік тікетів, підберемо модель і терміни. Досвід нашої команди — 5+ років у мобільній розробці, понад 20 проєктів з AI-класифікацією. Ми гарантуємо точність не нижче 90% на валідаційній вибірці. Замовте впровадження — отримайте рішення під ключ з навчальною підтримкою. Переконайтеся в ефективності: запросіть консультацію вже сьогодні.

Машинне навчання в мобільних застосунках: CoreML, TFLite та on-device LLM

Ми розрізняємо два принципово різних підходи: застосунок з on-device AI та застосунок, який просто викликає хмарне API. Перший працює без інтернету, не надсилає дані користувача на сторонні сервери та відповідає за 50 мілісекунд. Другий залежить від затримки мережі та тарифного плану. Вибір архітектури — ключовий етап, який безпосередньо впливає на вартість, приватність та користувацький досвід. Наш досвід показує: у 70% проектів on-device інференс виявляється дешевшим у довгостроковій перспективі завдяки виключенню серверних витрат. Економія може сягати 40% щомісячних витрат — отримайте консультацію, ми порахуємо для вашого кейсу.

Як вибрати між CoreML та TFLite для on-device інференсу?

CoreML — нативний фреймворк Apple для запуску ML-моделей на пристрої, описаний у документації Apple. Підтримує Neural Engine (A11 Bionic та новіші), GPU та CPU як fallback. Моделі конвертуються у формат .mlmodel через coremltools з PyTorch, ONNX або TensorFlow. Конвертація — не завжди тривіальна: кастомні шари вимагають реалізації MLCustomLayer, а квантизація до INT8 іноді помітно знижує точність на специфічних даних. Ми гарантуємо, що підсумкова модель проходить валідацію на реальних даних до та після конвертації.

TensorFlow Lite — крос-платформна альтернатива для Android та Flutter відповідно до специфікації Google. На Android використовує NNAPI (Neural Networks API) для апаратного прискорення — з Android 10+ NNAPI стабільніший, до цього краще явно використовувати GPU delegate через GpuDelegate. Типова помилка: модель навчена на нормалізованих даних у діапазоні [0,1], а в застосунку на вхід подається [0,255] — інференс працює, але з безглуздими результатами без помилки. Ми включаємо модуль автоматичної валідації вхідних даних у SDK.

Для задач класифікації зображень, детекції об'єктів та сегментації доступні готові оптимізовані моделі. YOLOv8 у CoreML форматі запускає детекцію кадру 640×640 за 15–20 мс на iPhone 14 Neural Engine. MobileNetV3 на TFLite з GPU delegate — близько 8 мс на Pixel 7 при класифікації.

Параметр CoreML TFLite
Платформи iOS, macOS, watchOS Android, iOS, Linux, embedded
Апаратне прискорення Neural Engine, GPU, CPU NNAPI, GPU (OpenCL/OpenGL), CPU
Підтримка квантизації FP16, INT8 (з coremltools) FP16, INT8, dynamic range
Кастомні операції Через MLCustomLayer (Swift) Через делегати (Java/Kotlin)
Розмір бандла моделі ~3–5 МБ (MobileNetV2 quantized) ~2–4 МБ

Що робити, якщо потрібна генерація тексту на пристрої?

Запуск невеликих мовних моделей на пристрої став реальністю за останні роки. Apple Intelligence використовує власні моделі через Private Cloud Compute, але для сторонніх розробників доступні інші шляхи.

llama.cpp з Metal backend на iOS — робочий підхід для phi-3-mini (3.8B параметрів, 4-bit квантизація, ~2.3 ГБ). Інференс: 15–25 токенів/секунду на iPhone 15 Pro. Для інтеграції в Swift використовуємо Swift Package llama.swift або обгортку через C-інтерфейс llama.h. Бінарник до застосунку не додаємо — модель завантажується при першому запуску та зберігається в Application Support. Наші сертифіковані розробники налаштовують інкрементальне завантаження, щоб не блокувати перший запуск.

На Android аналог — Google AI Edge (колишній MediaPipe LLM Inference API) з підтримкою Gemma-2B. Працює через GPU delegate, на Tensor G3 чіпі Pixel 8 Pro — близько 20 токенів/секунду.

Порівняння LLM моделей для on-device
Модель Параметри Квантизація Розмір Швидкість (iPhone 15 Pro)
Phi-3-mini (Microsoft) 3.8B 4-bit ~2.3 ГБ 15-25 токенів/с
Gemma-2B (Google) 2B 4-bit ~1.2 ГБ 30-40 токенів/с
TinyLlama 1.1B 4-bit ~0.7 ГБ 60+ токенів/с

Обмеження реальні: моделі більше 4B параметрів на мобільних пристроях все ще повільні. Для складних задач міркування on-device LLM поступається GPT-4o за якістю. Гібридний підхід — on-device для коротких завдань та приватних даних, хмара для складних запитів — часто оптимальний. Оцінимо ваш кейс та запропонуємо баланс продуктивності та приватності — напишіть нам.

Інтеграція OpenAI API та інших хмарних моделей

Для сценаріїв, де cloud inference допустимий, інтеграція OpenAI, Anthropic або Google Gemini — це HTTP клієнт + streaming SSE. У Swift зручно через AsyncThrowingStream для стрімінгових відповідей. У Kotlin — через Flow.

Критично важливо: API-ключі ніколи не зберігаються в бандлі застосунку. Навіть обфускований ключ витягується з IPA за 10 хвилин через strings або frida. Правильна архітектура: мобільний застосунок → власний backend → OpenAI API. Backend контролює rate limiting, логує запити, захищає ключ.

Що входить у роботу (результати)

  • Навчена та квантизована модель під цільовий пристрій (документація за метриками)
  • SDK для інтеграції (Swift/Kotlin/Flutter) з прикладами виклику
  • Тести продуктивності на 3–5 реальних пристроях
  • Інструкція з оновлення моделі OTA
  • Підтримка при проходженні модерації App Store / Google Play (перевірка відповідності Guidelines 4.2, 5.1)
  • 2 тижні технічної підтримки після релізу

Типовий пайплайн проекту

  1. Аналіз завдання — вимірюємо latency, privacy, size, підтримувані пристрої.
  2. Прототипування моделі — в Python, оцінка accuracy на цільових даних.
  3. Конвертація та квантизація — під CoreML/TFLite з валідацією.
  4. Інтеграція в застосунок — модель обгортається в сервісний шар (легко замінювати CoreML → TFLite → хмара).
  5. Тестування — на реальних пристроях, вимір FPS, RAM, батареї.
  6. Деплой — через TestFlight / Firebase App Distribution, моніторинг метрик.

Терміни: інтеграція готової CoreML/TFLite моделі — 1–2 тижні, розробка кастомної моделі з мобільною оптимізацією — від 6 тижнів, on-device LLM чат з персоналізацією — 4–8 тижнів.

Чому ми беремося за складні кейси?

10+ років досвіду в мобільній розробці, 50+ впроваджених AI/ML рішень, гарантія сумісності з актуальними версіями iOS та Android. Всі проекти проходять code review та навантажувальне тестування. У вартість вже входить підготовка документації для модерації та навчання вашої команди.

Зв'яжіться з нами — ми допоможемо вибрати архітектуру та впровадити ML у ваш застосунок під ключ. Замовте аудит наявного рішення — безкоштовно оцінимо потенціал економії серверних витрат. Отримайте консультацію експерта — напишіть нам сьогодні.