Інтеграція NLP-двигуна (Rasa) у мобільного чат-бота

Стандартний конфіг Rasa для української мови дає точність близько 50 % — на коротких фразах це означає, що кожен другий запит невірно розпізнається. Клієнти з високими вимогами до конфіденційності (медицина, фінанси) не можуть використовувати хмарні NLP-сервіси на кшталт Dialogflow або Google NL. Дл

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція NLP-двигуна (Rasa) у мобільного чат-бота
Складний
~3-5 днів

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    600

Стандартний конфіг Rasa для української мови дає точність близько 50 % — на коротких фразах це означає, що кожен другий запит невірно розпізнається. Клієнти з високими вимогами до конфіденційності (медицина, фінанси) не можуть використовувати хмарні NLP-сервіси на кшталт Dialogflow або Google NL. Для них Rasa — єдиний варіант, але його потрібно правильно налаштувати. Ми робимо це понад 5 років: більше 20 проєктів, середнє підвищення точності з 50 % до 85 % за рахунок кастомного пайплайну та якісного датасету.

Чому Rasa краще Dialogflow для чутливих даних?

Rasa — self-hosted, Dialogflow — хмарний. Для компаній, де дані не повинні залишати сервер, різниця принципова. Rasa дає повний контроль над пайплайном: ви можете замінити будь-який компонент, додати свій токенізатор, використовувати кастомні моделі. Dialogflow ж обмежує вас вбудованими механізмами. При масштабуванні на 10 000+ діалогів на день Rasa обходиться дешевше в 3–4 рази за рахунок відсутності плати за запити.

Характеристика Rasa Dialogflow
Розгортання Self-hosted (ваш сервер) Хмарне (Google)
Контроль даних Повний Обмежений
Вартість при 10 000 запитів/день ~$200/міс (VPS) ~$400/міс (Standard)
Точність на українській (з кастомним пайплайном) 85 %+ 80 %
Підтримка кастомних дій Так (Python) Так (Webhook, але повільніше)

Як ми налаштовуємо Rasa для української мови?

Основна проблема — стандартний WhitespaceTokenizer погано працює з українською морфологією. Ми замінюємо його на SpacyNLP з моделлю uk_core_news_md та додаємо char n-gram фічі через CountVectorsFeaturizer. Ось продакшн-конфіг, який ми використовуємо:

language: uk pipeline: - name: SpacyNLP model: uk_core_news_md - name: SpacyTokenizer - name: SpacyFeaturizer - name: RegexFeaturizer - name: LexicalSyntacticFeaturizer - name: CountVectorsFeaturizer - name: CountVectorsFeaturizer analyzer: char_wb min_ngram: 1 max_ngram: 4 - name: DIETClassifier epochs: 150 - name: EntitySynonymMapper - name: ResponseSelector epochs: 100 - name: FallbackClassifier threshold: 0.7 ambiguity_threshold: 0.1 

Цей пайплайн дає 85 % точності на наборі з 20–50 інтентів. DIETClassifier з 150 епохами навчається за 5–10 хвилин на VPS з 4 ГБ RAM.

Як Rasa Core керує діалогом?

Rasa розділяє NLU (розуміння намірів) та Core (керування діалогом). Core працює на основі правил (rules.yml) та історій (stories.yml). Найчастіша помилка — намагатися описати всі сценарії через rules та отримати крихку систему, яка ламається на нестандартному порядку реплік.

Правило: жорсткі команди (скасувати, допомога, почати заново) — у rules. Багатокрокові сценарії з варіативністю — у stories. Rasa Core навчається на історіях та узагальнює сценарії, яких явно не бачив — це його головна перевага перед деревами рішень.

Custom Actions. Динамічні відповіді (статус замовлення, доступні слоти) реалізуються через action_server — окремий Python-сервіс, який Rasa викликає через HTTP. Мобільний додаток з цим не взаємодіє напряму:

class ActionCheckOrderStatus(Action): def name(self) -> str: return "action_check_order_status" async def run(self, dispatcher, tracker, domain) -> list: order_id = tracker.get_slot("order_id") status = await order_service.get_status(order_id) dispatcher.utter_message(text=f"Ваше замовлення #{order_id}: {status}") return [SlotSet("order_status", status)] 

Як інтегрувати Rasa з мобільним додатком?

Rasa Server надає REST-канал на /webhooks/rest/webhook. Мобільний додаток відправляє POST-запит:

{ "sender": "user_device_id_or_session_uuid", "message": "текст повідомлення" } 

Відповідь — масив повідомлень, кожне з яких може бути текстом, зображенням, кнопками або кастомним payload.

На Android це стандартний Retrofit-виклик. Важливий момент: sender має бути стабільним ідентифікатором сесії — Rasa зберігає слоти (slots) між запитами в рамках одного sender. Якщо генерувати новий ID щоразу, контекст діалогу буде втрачатися.

Для продакшну Rasa не варто відкривати напряму в інтернет — перед ним ставимо nginx з rate limiting та аутентифікацією по токену.

Розгортання

Rasa Server + Action Server зручно запускати в Docker Compose. Модель навчається командою rasa train та монтується в контейнер. На слабкому VPS навчання 50 інтентів займає 5–10 хвилин — цілком прийнятно для CI/CD.

Rasa Enterprise (комерційна версія) додає аналітику та A/B тестування діалогів, але для більшості завдань достатньо open-source версії.

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

  • Аудит предметної області та збір прикладів реплік для NLU-датасету.
  • Налаштування pipeline, навчання базової моделі, оцінка точності через rasa test.
  • Розробка діалогових сценаріїв (rules + stories), custom actions.
  • Інтеграція REST-каналу з мобільним клієнтом, налаштування інфраструктури.
  • Документація та навчання вашої команди.
  • Гарантійна підтримка 30 днів.

Орієнтири за термінами

Інтеграція з готовим Rasa-сервером — 3–4 дні. Повний цикл, включаючи навчання моделі з нуля, написання сценаріїв та розгортання — 2–4 тижні в залежності від кількості інтентів.

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

Rasa Documentation | Wikipedia: Rasa