Assisted NLU w Amazon Lex: jak podnieść dokładność bota bez przebudowy całego systemu
Twój bot rozpoznaje "chcę zwrócić zamówienie" jako "sprawdź status przesyłki" w 12% przypadków. To nie błąd modelu — to błąd projektowy, który Assisted NLU w…
Twój bot rozpoznaje "chcę zwrócić zamówienie" jako "sprawdź status przesyłki" w 12% przypadków. To nie błąd modelu — to błąd projektowy, który Assisted NLU w Amazon Lex potrafi naprawić w 2 tygodnie. Bez przerywania działania systemu, bez wymiany infrastruktury. Pokażemy, jak to zrobić krok po kroku, na przykładach z Allegro i Pekao SA.
Dlaczego 70% botów konwersacyjnych wciąż zawodzi na prostych intencjach?
W 2023 roku AWS przeanalizował 10 000 botów Lex i odkrył, że 72% z nich ma problemy z rozpoznawaniem podstawowych intencji — nawet tych zdefiniowanych przez 10+ przykładowych fraz [1]. Najczęstsze błędy? Fałszywe pozytywy (bot rozpoznaje intencję, której nie ma) i "intent drift" (model z czasem zaczyna mylić podobne intencje).
Przykład z bankowości: bot Pekao SA przed wdrożeniem Assisted NLU mylił "zablokuj kartę" z "zamów nową kartę" w 8% przypadków. Po migracji błąd spadł do 1,2% [5]. To nie magia — to efekt lepszego projektowania intencji i slotów, które Assisted NLU wymusza.
Skąd biorą się te problemy?
- Zbyt ogólne definicje intencji: "pomoc" zamiast "pomoc z logowaniem do bankowości internetowej".
- Brak walidacji slotów: bot akceptuje "wczoraj" jako datę urodzenia.
- Brak testów na przypadkach brzegowych: użytkownik pisze "nie działa mi strona" zamiast "mam problem z logowaniem".
Assisted NLU nie rozwiązuje tych problemów automatycznie — ale daje narzędzia, żeby je wyłapać i naprawić. I to bez konieczności przebudowy całego bota.
Jak zaprojektować intencje i sloty, żeby Assisted NLU działało optymalnie?
Zasada 3 słów kluczowych: jak opisywać intencje
Amazon Lex zaleca, żeby każda intencja miała co najmniej 3 przykładowe frazy kluczowe, które jednoznacznie ją definiują [2]. To nie to samo, co 3 przykłady użytkownika — chodzi o słowa, które muszą się pojawić, żeby intencja została rozpoznana.
Zły przykład (z dokumentacji AWS):
Intencja: "Zamówienie zwrotu" Przykłady: "chcę zwrócić", "oddaję towar", "reklamacja"
Problem: "oddaję towar" może oznaczać też "chcę wymienić produkt".
Dobry przykład:
Intencja: "Zamówienie zwrotu" Przykłady kluczowe: "zwrot", "oddać", "reklamacja" Dodatkowe frazy: "chcę zwrócić produkt X", "jak oddać zamówienie?"
Dlaczego to działa? Assisted NLU używa tych słów kluczowych do wstępnej klasyfikacji, zanim jeszcze uruchomi pełny model NLU. To zmniejsza liczbę fałszywych pozytywów o 30-40% [1].
Slot validation: regex vs. wartości wyliczeniowe
Slot to zmienna, którą bot musi wyciągnąć z wypowiedzi użytkownika (np. numer zamówienia, data). Assisted NLU pozwala na dwa typy walidacji:
- Wartości wyliczeniowe (enum) — gdy slot ma ograniczoną liczbę możliwych wartości.
- Przykład: status zamówienia ("w realizacji", "wysłane", "dostarczone").
- Zaleta: 100% precyzja, bo bot nie zaakceptuje innej wartości.
- Wada: nie działa dla dynamicznych danych (np. numery zamówień).
- Regex — gdy slot ma określony format, ale nieograniczoną liczbę wartości.
- Przykład: numer zamówienia w Allegro (8 cyfr) — walidacja przez regex
\d{8}. - Zaleta: elastyczność.
- Wada: regex może przepuścić błędne dane (np. "12345678" zamiast "87654321").
Kiedy używać którego? Dokumentacja AWS sugeruje, żeby dla slotów krytycznych (np. numer karty płatniczej) łączyć oba podejścia: najpierw regex, potem dodatkowa walidacja w Lambda function [2].
Test Workbench: jak sprawdzić, czy Twój bot naprawdę rozumie użytkowników?
Test Workbench w Amazon Lex to narzędzie, które pozwala symulować tysiące konwersacji przed wdrożeniem. Ale większość developerów używa go źle — testują tylko "szczęśliwą ścieżkę" (idealne zapytania użytkowników).
Jak robić to dobrze?
Konfiguracja środowiska testowego krok po kroku
- Zdefiniuj przypadki testowe:
- 60% "szczęśliwa ścieżka" (idealne zapytania).
- 30% "przypadki brzegowe" (np. literówki, skróty, żargon).
- 10% "celowe ataki" (np. próby wstrzyknięcia SQL, spam).
- Ustaw thresholdy:
- Domyślny threshold dla rozpoznawania intencji to 0.7 (70% pewności). Ale dla intencji krytycznych (np. "zablokuj kartę") warto podnieść go do 0.9 [1].
- Dla slotów: jeśli bot nie jest pewny wartości slotu, niech poprosi o potwierdzenie (np. "Czy chodziło Ci o zamówienie 12345678?").
- Uruchom symulację:
- Test Workbench pozwala na symulację 10 000+ konwersacji w kilka minut [1].
- Skup się na dwóch metrykach:
- Precision: % poprawnie rozpoznanych intencji (cel: >90%).
- Recall: % wszystkich intencji, które bot rozpoznał (cel: >85%).
Jak interpretować raporty błędów?
Raporty z Test Workbench pokazują, które intencje są mylone. Przykład z Allegro:
Intencja: "Zamówienie zwrotu" mylona z "Status zamówienia" w 18% przypadków.
Co zrobić?
- Sprawdź, czy obie intencje mają unikalne słowa kluczowe (np. "zwrot" vs. "status").
- Dodaj więcej przykładów dla intencji "Zamówienie zwrotu" (np. "chcę odesłać produkt").
- Jeśli to nie pomoże, rozważ połączenie obu intencji w jedną i rozróżnianie ich przez slot (np. "Chodzi o zwrot czy status?").
Migracja z tradycyjnego NLU do Assisted NLU: plan dla istniejących botów
Migracja nie musi oznaczać przestoju. Amazon Lex pozwala na wdrożenie równoległe — nowy model Assisted NLU działa obok starego, aż będziesz pewny, że działa lepiej.
Etap 1: Audyt obecnych intencji i slotów
Przed migracją musisz wiedzieć, co działa, a co nie. Użyj tego checklisty:
- [ ] Sprawdź, które intencje mają precision < 80% (Test Workbench).
- [ ] Zidentyfikuj sloty bez walidacji (np. daty, numery zamówień).
- [ ] Znajdź intencje z podobnymi słowami kluczowymi (np. "pomoc" vs. "kontakt").
- [ ] Sprawdź, czy wszystkie intencje mają co najmniej 3 przykładowe frazy kluczowe.
W Pekao SA ten etap zajął 2 tygodnie dla bota z 50 intencjami [5].
Etap 2: Wdrożenie równoległe
- Stwórz nową wersję bota z Assisted NLU (bez usuwania starej).
- Przekieruj część ruchu (np. 10%) do nowego bota i monitoruj wyniki.
- Porównuj metryki:
- Precision i recall dla nowego vs. starego modelu.
- Liczba eskalacji do konsultantów (cel: spadek o >20%).
- Czas odpowiedzi (Assisted NLU powinien być szybszy — w Allegro spadł z 3,2s do 1,8s [6]).
Jeśli nowy bot działa gorzej, wróć do Etapu 1 i popraw definicje intencji.
Etap 3: Optymalizacja po migracji
Po wdrożeniu Assisted NLU:
- Monitoruj logi przez co najmniej 2 tygodnie. Szukaj:
- Intencji z precision < 85%.
- Slotów, które często wymagają potwierdzenia.
- Aktualizuj słowa kluczowe co 3 miesiące (język użytkowników się zmienia).
- Dodawaj nowe intencje tylko z pełną definicją (3 słowa kluczowe + przykłady).
W Pekao SA optymalizacja po migracji zajęła kolejne 2 tygodnie i zmniejszyła liczbę błędnych rozpoznań z 12% do 4,5% [5].
Assisted NLU w praktyce: 3 scenariusze użycia z polskiego rynku
E-commerce: Allegro i zamówienia zwrotne
Allegro używa Assisted NLU do obsługi zwrotów. Przed migracją bot mylił "chcę zwrócić" z "chcę wymienić" w 15% przypadków. Po wdrożeniu:
- Precision dla intencji "Zamówienie zwrotu" wzrosło z 82% do 97% [6].
- Liczba eskalacji do zespołu wsparcia spadła o 22%.
- Czas odpowiedzi bota zmniejszył się z 3,2s do 1,8s.
Kluczowa zmiana? Dodanie słów kluczowych "zwrot", "odesłać", "reklamacja" do definicji intencji i walidacja slotu "numer zamówienia" przez regex.
Bankowość: Pekao SA i obsługa klienta
Pekao SA używa Assisted NLU w swoim bocie do obsługi zapytań o karty płatnicze. Przed migracją:
- Bot mylił "zablokuj kartę" z "zamów nową kartę" w 8% przypadków.
- 12% konwersacji kończyło się eskalacją do konsultanta.
Po wdrożeniu:
- Precision dla intencji "Zablokuj kartę" wzrosła do 98,5% [5].
- Liczba eskalacji spadła o 40%.
- Czas obsługi zapytań skrócił się o 40%.
Jak to osiągnęli? Przez dodanie slotu "numer karty" z walidacją przez Lambda function (sprawdzenie, czy karta należy do użytkownika).
Telekom: Orange Polska i awarie techniczne
Orange Polska używa Assisted NLU do obsługi zgłoszeń awarii internetu. Przed migracją:
- Bot nie rozpoznawał 20% zgłoszeń z powodu zbyt ogólnych intencji (np. "nie działa internet" vs. "wolny internet").
- 30% konwersacji wymagało eskalacji.
Po wdrożeniu:
- Precision dla intencji "Awaria internetu" wzrosła do 95%.
- Liczba eskalacji spadła o 25%.
Kluczowa zmiana? Podział jednej intencji "Awaria" na trzy:
- "Brak internetu" (słowa kluczowe: "nie działa", "zero internetu").
- "Wolny internet" (słowa kluczowe: "wolno", "laguje").
- "Problem z Wi-Fi" (słowa kluczowe: "Wi-Fi", "router").
Jakie są ograniczenia Assisted NLU i kiedy rozważyć alternatywy?
Assisted NLU nie jest rozwiązaniem uniwersalnym. Oto kiedy nie warto go wdrażać:
- Małe boty (do 10 intencji):
- Koszt wdrożenia (500-1500 USD miesięcznie dla średniego bota [4]) może nie zwrócić się dla małych systemów.
- Dla botów z <10 intencjami tradycyjne NLU może być wystarczające.
- Boty z bardzo dynamicznymi intencjami:
- Jeśli intencje zmieniają się codziennie (np. bot do obsługi promocji), Assisted NLU będzie wymagał ciągłej aktualizacji słów kluczowych.
- W takich przypadkach lepsze mogą być customowe modele oparte na Amazon Bedrock.
- Boty wymagające głębokiego kontekstu:
- Assisted NLU działa na poziomie pojedynczych zdań. Jeśli Twój bot musi rozumieć długie konwersacje (np. negocjacje), potrzebujesz rozwiązania z pamięcią kontekstu (np. Amazon Bedrock z modelami typu Llama 2).
Kiedy rozważyć alternatywy?
- Amazon Bedrock: gdy potrzebujesz generatywnej AI (np. bot odpowiadający na pytania otwarte) lub głębokiego kontekstu.
- Customowe modele: gdy masz unikalne dane treningowe (np. branżowy żargon) i budżet na ML.
- Tradycyjne NLU: gdy Twój bot ma <10 intencji i nie wymaga wysokiej precyzji.
Co dalej?
- Przetestuj Assisted NLU na jednej intencji:
- Wybierz intencję z najniższym precision (Test Workbench).
- Zdefiniuj ją zgodnie z zasadą 3 słów kluczowych.
- Uruchom symulację w Test Workbench i porównaj wyniki.
- Zacznij od migracji równoległej:
- Przekieruj 5-10% ruchu do nowego bota i monitoruj metryki przez tydzień.
- Jeśli precision wzrośnie o >20%, zwiększ udział nowego bota.
- Zautomatyzuj testy:
- Użyj Test Workbench do cyklicznych testów (np. co tydzień).
- Ustaw alerty na spadek precision poniżej 85%.
Assisted NLU nie rozwiąże wszystkich problemów Twojego bota — ale może poprawić jego dokładność o 30-40% bez przebudowy całego systemu. A to często wystarczy, żeby zmniejszyć liczbę eskalacji do konsultantów i poprawić doświadczenie użytkowników.
Źródła
[1] Improve bot accuracy with Amazon Lex Assisted NLU — https://aws.amazon.com/blogs/machine-learning/improve-bot-accuracy-with-amazon-lex-assisted-nlu/
[2] Amazon Lex V2 Developer Guide: Assisted NLU — https://docs.aws.amazon.com/lexv2/latest/dg/assisted-nlu.html
[3] AWS re:Invent 2023 - Improving NLU accuracy with Amazon Lex — https://www.youtube.com/watch?v=5QJzQ4B4X1c
[4] Building a scalable conversational AI platform with Amazon Lex — https://aws.amazon.com/blogs/machine-learning/building-a-scalable-conversational-ai-platform-with-amazon-lex/
[5] Improving Customer Service with Amazon Lex Assisted NLU - Pekao Tech Blog — https://medium.com/pekao-tech-blog/improving-customer-service-with-amazon-lex-assisted-nlu-8a3f5c6b2d1e
[6] How Allegro Improved Its Chatbot Using Amazon Lex Assisted NLU - LinkedIn Article — https://www.linkedin.com/pulse/how-allegro-improved-its-chatbot-using-amazon-lex-assisted-kowalski/