AI-агент з пошуком у каталозі
Optional track — на відміну від Use Case 12: Copilot, categorizer і lookup живуть у тому ж training bot. Не потрібен окремий Copilot-bot.
Необхідні права та доступ
| Модуль / налаштування | Навіщо |
|---|---|
| Scenario Builder | FAQ + categorizer + CD lookup в одному bot |
| Fast Line Pro | Categorizer або intent для каталогу |
| Custom Data | Модель products + seed |
| Settings → Operator Panel | Handoff на оператора (опційно) |
| Runs / Chat preview | 5 контрольних запитів |
Бізнес-контекст
Клієнт запитує товар або персонажа з навчального каталогу. Бот відповідає з Custom Data і за потреби передає діалог оператору. Типовий патерн для e-commerce / довідникових bot без архітектури Copilot.
Очікуваний результат
- Модель
products+ seed products-training.csv - Categorizer або filter у CD після
action_fastline_pro - Handoff edge при «не знайдено» або за запитом клієнта
- Не окремий Copilot-bot — усе в training bot
Архітектура
MessageKeyboard «Каталог» → WaitForInput (запит)
→ action_fastline_pro (categorizer / intent)
→ Router (valid filters)
→ custom_modules__get / search
├─ found → MessageKeyboard (результат)
├─ not_found → уточнення або handoff
└─ error → повідомлення + fallback
Опційно: «Оператор» → connect (Use Case 3)
Покрокова реалізація
Крок 0. Custom Data — products
- Створіть модель products (alias
products). - Поля:
name,category,faction,price. - Імпортуйте products-training.csv.
Крок 1. Fast Line Pro — categorizer каталогу
| Параметр | Значення |
|---|---|
| Тип | Chat-bot |
| Prompt | Секція каталогу в categorizer-training.txt |
| Тест | «spellcaster from north» → JSON filters |
Крок 2. Вхід і categorizer у сценарії
| Нода | Параметри |
|---|---|
| MessageKeyboard | «Що шукаєте в каталозі?» → WaitForInput |
| WaitForInput | outputVariable: catalog_query |
| action_fastline_pro | user_input: {{catalog_query}}, save_response: catalog_filters |
Edges: основний → lookup; fallback → «Переформулюйте запит».
Крок 3. Lookup у Custom Data
| node_params (приклад) | Значення |
|---|---|
module_name |
products |
| filter by | category, faction з categorizer |
Edges:
| Edge | Повідомлення (приклад) |
|---|---|
| found | «{{name}} — {{price}} золота» |
| not_found | «Не знайшов у каталозі. Спробуйте інакше або натисніть «Оператор».» |
| error | «Помилка пошуку.» |
Крок 4. Handoff на оператора
При not_found або кнопці «Оператор»:
MessageKeyboard → operator_panel__connect_to_operator_with_msg
(subject_alias з Use Case 3)
Edges: success / limit / error — обов'язково.
Крок 5. П'ять контрольних запитів (self-check)
| # | Запит | Очікування |
|---|---|---|
| 1 | «Geralt» | found — warrior, north |
| 2 | «dragon from Mars» | not_found |
| 3 | «something cheap» | found або уточнення (не тиша) |
| 4 | «Оператор» / handoff | connect edges |
| 5 | Невідомий intent | fallback categorizer |
Кожен прогін — окремий Run або скидання state; фіксуйте edge у Runs.
Troubleshooting
| Симптом | Що перевірити |
|---|---|
| Завжди not_found | Filters vs seed CSV; регістр category/faction |
| AI «вигадує» товар | Lookup має йти з CD, не лише з LLM text |
| Повторні уточнення без кінця | Ліміт retry → handoff |
| Handoff без limit edge | Edge-driven flow |
Self-check
Самостійне завдання
Додайте MessageKeyboard після found: «Ще пошук» → loop на WaitForInput; «В меню» → головне меню capstone.