Zespół składa przyjaznego robota w warsztacie, tak jak Droptica buduje chatbota w Drupalu.

Jak chatbot w Drupalu odpowiada na pytania klientów o produkty

Wyobraźmy sobie klienta, który na stronie producenta szuka obudowy ze stali nierdzewnej o szerokości nieprzekraczającej 600 mm. Potrzebne informacje są dostępne, ale rozproszone między stronami produktów, tabelami specyfikacji i instrukcjami montażu. Chatbot w Drupalu, korzystający z istniejących treści serwisu, może pomóc klientowi znaleźć odpowiednie modele i zrozumieć różnice między nimi bez konieczności otwierania każdej strony z osobna.

Celem jest wykorzystanie istniejących treści do udzielania odpowiedzi na konkretne pytania i kierowania odwiedzających do właściwego kolejnego kroku. Koszyk zakupowy nie jest do tego potrzebny. W przypadku producenta tym krokiem może być strona produktu, lista dystrybutorów albo rozmowa z działem sprzedaży.

Ustrukturyzowane pola w Drupalu dostarczają asystentowi informacji, które można precyzyjnie wyszukiwać, filtrować i porównywać. Aby na ich podstawie powstawały wiarygodne odpowiedzi, potrzebne są również odpowiednie reguły wyszukiwania, kontrola zgodności ze źródłami, interfejs na stronie oraz testy oparte na rzeczywistych pytaniach klientów.

W tym artykule:

O co klienci mogą pytać chatbota produktowego w Drupalu?

Prace warto zacząć od pytań, które klienci już dziś kierują do działów sprzedaży i wsparcia. Zwykle chcą znaleźć odpowiedni produkt, potwierdzić konkretną informację albo zrozumieć różnice między dostępnymi modelami.

W przypadku naszego przykładowego producenta przydatne pytania to między innymi:

  • „Które modele mają szerokość nie większą niż 600 mm?”
  • „Czym różnią się te dwa modele?”
  • „Czy ta obudowa jest dostępna w wersji ze stali nierdzewnej?”
  • „Gdzie znajdę instrukcję montażu?”

Przydatna odpowiedź udziela konkretnej informacji, wskazuje odpowiednie produkty i specyfikacje oraz zawiera linki do stron źródłowych. Klient może wtedy samodzielnie sprawdzić szczegóły albo przesłać stronę produktu współpracownikowi.

Niektóre pytania wymagają doprecyzowania. Gdy ktoś szuka obudowy „do zastosowań zewnętrznych”, asystent może zapytać o warunki pracy albo wymagany stopień ochrony. Może wskazać stopień ochrony podany w dokumentacji, ale ocena przydatności produktu w konkretnych warunkach wymaga dodatkowej analizy.

Zadaniem asystenta jest ułatwienie korzystania z udokumentowanych informacji. Jeśli dostępne dane nie wystarczają do przygotowania rekomendacji, asystent powinien zadać pytanie doprecyzowujące albo skierować klienta do technicznego działu sprzedaży, zamiast przedstawiać niepotwierdzone przypuszczenie jako pewną odpowiedź.

Z jakich danych w Drupalu powinien korzystać asystent?

Uporządkowane dane produktowe ograniczają ryzyko niejednoznacznej interpretacji jeszcze przed przygotowaniem odpowiedzi przez model językowy.

W przypadku asystenta katalogu produktów dane źródłowe mogą obejmować:

Dane Do czego służą asystentowi?
Stałe identyfikatory i nazwy produktów Pozwalają identyfikować właściwy produkt na stronach, w dokumentach i kolejnych pytaniach
Opisy i taksonomia rodzin produktów Pozwalają wyszukiwać właściwe kategorie i wyjaśniać przeznaczenie produktów
Specyfikacje w polach liczbowych z jednostkami Pozwalają stosować filtry liczbowe i porównywać parametry
Powiązania między wariantami Pozwalają przypisywać wymiary, materiały i stopnie ochrony do właściwych wariantów
Powiązane dokumenty Pozwalają znaleźć instrukcję albo kartę katalogową właściwego produktu
Kanoniczne adresy URL stron Pozwalają kierować odwiedzających do odpowiednich stron serwisu

Informację o szerokości zapisaną wyłącznie w pliku PDF trudniej wiarygodnie filtrować i porównywać niż wartość przechowywaną w osobnym polu liczbowym ze zdefiniowaną jednostką. Plik PDF nadal może zawierać przydatne wyjaśnienia, ale precyzyjne filtrowanie wymaga wartości zapisanej w ustrukturyzowanym polu.

Równie ważne są powiązania. Jeśli jeden wariant jest wykonany ze stali nierdzewnej, a inny ma szerokość 580 mm, asystent nie może połączyć tych cech i przedstawić nieistniejącego wariantu produktu.

Model danych wymaga konsekwencji. Jednostki powinny być ujednolicone, materiały i rodziny produktów opisane za pomocą kontrolowanych słowników, a brakujące specyfikacje wyraźnie odróżnione od potwierdzonych wartości. Ustrukturyzowane pola udostępniają informacje, ale same nie gwarantują poprawnej odpowiedzi.

Modelowanie rekordów produktów opisujemy szerzej w artykułach Katalog produktów w Drupalu bez Commerce: najpierw dane oraz Modelowanie treści w Drupalu pod odpowiedzi kupujących: pola zamiast prozy.

Jak powstaje odpowiedź oparta na wiarygodnych źródłach?

Generowanie wspomagane wyszukiwaniem, czyli RAG (Retrieval-Augmented Generation), polega na wyszukaniu odpowiednich informacji źródłowych i przekazaniu ich modelowi przed wygenerowaniem odpowiedzi. Odpowiedź może być wtedy oparta na zatwierdzonych treściach serwisu, a nie wyłącznie na ogólnej wiedzy modelu.

W przypadku przykładowego producenta proces może wyglądać następująco:

  1. Interpretacja pytania. System rozpoznaje rodzinę produktów, wymagane parametry, ograniczenia liczbowe i elementy wymagające doprecyzowania.
  2. Wyszukiwanie i pobieranie informacji. System przeszukuje treści opisowe i filtruje dostępne parametry produktów zapisane w ustrukturyzowanych polach.
  3. Ocena trafności źródeł. System sprawdza, czy znalezione informacje dotyczą właściwych produktów, wariantów i wersji językowych.
  4. Przygotowanie odpowiedzi. Model wyjaśnia, dlaczego poszczególne produkty spełniają wskazane kryteria, opierając się na pobranych informacjach.
  5. Kontrola odpowiedzi. System sprawdza, czy przedstawione twierdzenia, wartości i linki znajdują potwierdzenie w wykorzystanych źródłach.

Jedna z możliwych architektur wykorzystuje API Drupala, usługę wyszukiwania działającą po stronie serwera oraz indeks zawierający tekst i powiązane z nim ustrukturyzowane metadane. Dokumentacja modułu JSON:API opisuje podstawy API opartego na encjach. W konkretnym projekcie trzeba jednak skonfigurować kontrolę dostępu, wybrać udostępniane pola i powiązania oraz przygotować proces indeksowania i wyszukiwania.

Różne pytania wymagają różnych metod wyszukiwania. Wyszukiwanie semantyczne może pomóc znaleźć fragment opisujący wymagane odstępy montażowe. Maksymalna szerokość 600 mm wymaga filtra liczbowego. Wyszukiwanie po identyfikatorze produktu wymaga natomiast dokładnego dopasowania wartości.

Jeśli informacje zmieniają się szybciej, niż można niezawodnie aktualizować indeks, usługa działająca po stronie serwera powinna pobierać je bezpośrednio z nadrzędnego źródła przed wygenerowaniem odpowiedzi.

Przykładowa rozmowa

Poniższy przykład zawiera fikcyjne nazwy produktów i specyfikacje:

Klient: Które obudowy ze stali nierdzewnej mają szerokość nie większą niż 600 mm?

Asystent: Te kryteria spełniają dwa znalezione modele: model A o szerokości 550 mm oraz model B o szerokości 600 mm. W obu przypadkach materiałem jest stal nierdzewna. Czy obowiązuje też maksymalna głębokość albo wymagany stopień ochrony?

Interfejs powinien dołączać do każdego modelu link do strony produktu. Odpowiedź powinna wskazywać, że są to wybrane pasujące produkty, chyba że pełne zapytanie do ustrukturyzowanych danych potwierdzi, że lista obejmuje wszystkie dostępne wyniki.

Takie podejście rozdziela dwa zadania: system wyszukiwania znajduje i filtruje informacje, a model językowy przedstawia je użytkownikowi w zrozumiałej formie.

Jak chatbot przygotowuje listy i porównania produktów?

Lista pasujących produktów ogranicza konieczność wielokrotnego ustawiania filtrów i otwierania kolejnych stron. Aby przygotować taką listę, system musi przełożyć pytanie użytkownika na jednoznacznie zdefiniowane warunki wyszukiwania.

Na przykład zapytanie „Pokaż obudowy naścienne ze stali nierdzewnej o szerokości do 600 mm” zawiera trzy warunki:

  • Rodzina produktów: obudowy naścienne.
  • Materiał: stal nierdzewna.
  • Szerokość: mniejsza lub równa 600 mm.

Usługa wyszukiwania zastosowałaby te warunki do ujednoliconych, ustrukturyzowanych pól produktowych. Asystent mógłby następnie podsumować znalezione produkty i zapytać o dodatkowe kryteria potrzebne do zawężenia wyników.

Widok porównania ułatwia szybkie zestawienie najważniejszych informacji. Na fikcyjnych danych mógłby wyglądać tak:

Produkt Materiał Szerokość Głębokość Link do źródła w interfejsie
Model A Stal nierdzewna 550 mm 250 mm Strona produktu modelu A
Model B Stal nierdzewna 600 mm Brak danych Strona produktu modelu B

Informacja „brak danych” również jest istotna, ponieważ wyraźnie pokazuje ograniczenia porównania. Asystent może wtedy wskazać odpowiednią dokumentację albo zaproponować kontakt z działem sprzedaży w celu potwierdzenia brakującego wymiaru.

Lista przykładowych dopasowań i kompletna lista wyników to dwa różne rodzaje odpowiedzi. Wyszukiwanie semantyczne często zwraca ograniczony zestaw trafnych dopasowań. Aby system mógł przedstawić wszystkie pasujące produkty, musi wykonać pełne zapytanie do ustrukturyzowanych danych oraz prawidłowo obsłużyć paginację i brakujące wartości.

Sposób sortowania wyników również powinien być jasno określony. Jeśli wyniki są uporządkowane od najwęższego do najszerszego produktu, asystent powinien o tym poinformować. Jeśli brakuje wymaganej specyfikacji, system nie powinien przedstawiać produktu jako potwierdzonego dopasowania. Określenie „najlepszy wybór” wymaga kryteriów klienta i informacji, które uzasadniają taką ocenę.

Jak zintegrować interfejs czatu ze stroną?

Klienci potrzebują wygodnego miejsca, w którym mogą zadać pytanie. Może to być widżet czatu wyświetlany na stronach katalogu albo osobna strona asystenta zintegrowana z frontendem Drupala.

Przeglądarka przesyła pytania do usługi działającej po stronie serwera. Ta usługa odpowiada za wyszukiwanie, zapytania do modelu, sprawdzanie uprawnień i przygotowanie odpowiedzi. Dane uwierzytelniające do API i dostęp do chronionych źródeł pozostają wyłącznie po stronie serwera.

Interfejs powinien prezentować odpowiedzi w bardziej użytecznej formie niż sam blok tekstu. Przydatne mogą być klikalne karty produktów, linki do źródeł, propozycje kolejnych pytań oraz wyraźnie widoczna możliwość kontaktu z pracownikiem. Ważne są też komunikaty o ładowaniu i błędach. Użytkownik powinien wiedzieć, czy asystent nadal wyszukuje informacje, czy obsługa zapytania zakończyła się błędem.

Wymagania dotyczące dostępności należy uwzględnić już w pierwszej wersji rozwiązania. Trzeba zapewnić obsługę klawiatury, wyraźnie widoczny fokus, poprawnie opisane elementy sterujące oraz możliwość odczytywania nowych odpowiedzi przez czytniki ekranu. Na urządzeniach mobilnych trzeba również sprawdzić, czy widżet nie zasłania specyfikacji i czy linki do produktów mają odpowiednio duży obszar aktywny.

Dotychczasowa nawigacja powinna pozostać dostępna. Asystent powinien uzupełniać istniejące listy produktów, filtry i wyszukiwarkę, pozostawiając klientowi wybór najwygodniejszego sposobu korzystania z katalogu. Platforma e-commerce nie jest do tego potrzebna.

Jak zapewnić aktualne i wiarygodne odpowiedzi?

Wiarygodność asystenta zależy również od sposobu utrzymywania rozwiązania po jego uruchomieniu. Redaktorzy będą poprawiać specyfikacje, produkty będą się zmieniać, a niektóre dokumenty zostaną usunięte. Asystent musi uwzględniać te zmiany, aby odwiedzający zawsze otrzymywali aktualne informacje.

Częstotliwość aktualizacji dopasowana do rodzaju danych

Warto określić mierzalny cel wskazujący, jak szybko opublikowane zmiany powinny być dostępne dla asystenta. Ten czas należy potem monitorować. Dopuszczalne opóźnienie zależy od rodzaju informacji i skutków wykorzystania nieaktualnej odpowiedzi.

Ostrzeżenie dotyczące montażu może wymagać bardziej rygorystycznej obsługi niż przeredagowany opis produktu. Jeśli nawet krótkie opóźnienie jest niedopuszczalne, asystent powinien pobierać dane bezpośrednio z nadrzędnego źródła albo powstrzymać się od udzielenia odpowiedzi na dane pytanie.

Plan wdrożenia powinien obejmować cały cykl życia treści:

  • Publikowanie i aktualizowanie treści.
  • Wycofywanie treści z publikacji i ich usuwanie.
  • Ponawianie nieudanych zadań indeksowania i powiadamianie zespołu.
  • Unieważnianie odpowiednich wpisów cache wyszukiwania i odpowiedzi.
  • Wykrywanie nieaktualnych rekordów oraz okresowe porównywanie zawartości indeksu z danymi zapisanymi w Drupalu.

Redaktorzy również potrzebują informacji o stanie synchronizacji. Nieudana synchronizacja powinna zostać wykryta i zgłoszona zespołowi, zanim klient natrafi na nieaktualną specyfikację.

Jeden ze sposobów takiej synchronizacji opisujemy w artykule Synchronizacja danych w czasie rzeczywistym w RAG. Jak zadbać o aktualną wiedzę chatbota?. Unieważnianie zapisanych odpowiedzi omawiamy w artykule Jak przyspieszyć odpowiedzi chatbota AI dzięki inteligentnemu buforowaniu.

Ocena źródeł przed wygenerowaniem odpowiedzi i kontrola jej zgodności po wygenerowaniu

Potrzebne są dwa rodzaje kontroli, ponieważ każdy z nich wykrywa inne problemy.

Pierwsza kontrola ocenia trafność źródeł i odrzuca fragmenty dotyczące niewłaściwego produktu, wariantu, języka albo innego tematu. Druga kontrola sprawdza zgodność odpowiedzi ze źródłami i pozwala wykryć niepotwierdzone twierdzenia, błędne liczby oraz niepasujące linki.

Obie kontrole wymagają osobnych testów. Model używany do oceny również może się mylić. Dlatego identyfikatory, warunki liczbowe i adresy URL warto, o ile to możliwe, sprawdzać za pomocą jednoznacznych reguł programistycznych.

Praktyczny przykład oceny źródeł przedstawiamy w artykule Jak poprawiliśmy precyzję odpowiedzi chatbota RAG o 40% dzięki ocenie dokumentów.

Osobnego przetestowania wymaga również sposób podziału treści na fragmenty (chunks). Bardzo krótki fragment może oddzielić specyfikację od nazwy wariantu. Długi fragment może łączyć kilka produktów i wprowadzać niezwiązane informacje. Zamiast wybierać wielkość fragmentów na podstawie ogólnej reguły, warto sprawdzić podział odpowiadający logicznym sekcjom treści, zachowujący metadane produktu i nierozdzielający powiązanych informacji.

Ochrona dostępu i ograniczony zakres działań

Uprawnienia odwiedzającego należy uwzględniać zarówno podczas wyszukiwania, jak i przed przekazaniem odpowiedzi. Wpisy cache również wymagają odpowiednich ograniczeń dostępu, tak żeby odpowiedź przygotowana dla jednego odwiedzającego nie ujawniła innemu informacji, do których nie ma on dostępu.

Tekst pobrany ze źródeł należy traktować jako dane do analizy, a nie jako instrukcje dla asystenta. Instrukcja umieszczona w zaindeksowanym dokumencie nie może uruchamiać narzędzi ani zmieniać zasad dostępu obowiązujących asystenta.

W przypadku katalogu produktów asystent powinien działać w trybie tylko do odczytu. Każde przyszłe działanie, takie jak wysłanie zapytania ofertowego, wymaga osobnego zaprojektowania uprawnień, walidacji danych i potwierdzenia przez użytkownika.

Testy oparte na rzeczywistych pytaniach klientów

Reprezentatywny zestaw pytań testowych warto przygotować jeszcze przed wdrożeniem. Powinien obejmować zarówno typowe zapytania, jak i trudne przypadki:

  • Podobne nazwy produktów i bardzo zbliżone warianty.
  • Ograniczenia liczbowe i przeliczanie jednostek.
  • Brakujące albo sprzeczne specyfikacje.
  • Zapytania o wszystkie pasujące produkty.
  • Pytania, na które źródła nie dają odpowiedzi.
  • Wycofane dokumenty i niedziałające linki.
  • Próby uzyskania treści, do których użytkownik nie ma uprawnień.

Warto mierzyć poprawność merytoryczną, zgodność z warunkami zapytania, trafność linków do źródeł, czas odpowiedzi oraz to, czy asystent informuje o braku wystarczających danych.

Aby ustalić, co faktycznie poprawia wyniki, warto porównywać konfiguracje wyszukiwania przy tym samym modelu i tych samych pytaniach testowych. Najpierw można porównać indeksowanie samego tekstu z indeksowaniem uzupełnionym o ustrukturyzowane metadane, a potem ocenić wpływ oceny trafności źródeł i kontroli odpowiedzi. Pozwala to sprawdzić, czy poprawa wynika z modelu danych i sposobu wyszukiwania, a nie ze zmiany modelu językowego.

Co pokazuje wdrożenie dla ProjektMagazin?

Chatbot AI do dokumentów wdrożony przez Droptica dla ProjektMagazin.de pokazuje ogólny model asystenta korzystającego z danych przechowywanych w Drupalu, źródeł dopasowanych do kontekstu pytania oraz interfejsu osadzonego na stronie. Case study opisuje platformę wiedzy o zarządzaniu projektami. Rozwiązanie wykorzystuje API JSON, taksonomię i informacje o autorach podczas indeksowania, a także ocenę trafności źródeł, synchronizację treści oraz własny interfejs czatu zintegrowany z Drupalem. Opisany w tym artykule asystent katalogu produktów jest propozycją wykorzystania podobnej architektury w innym kontekście. Wdrożenie dla ProjektMagazin dotyczyło platformy wiedzy, a nie katalogu produktowego.

Od czego zacząć?

Najlepiej zacząć od jednej rodziny produktów i pytań, które klienci zadają najczęściej. Taki zakres pozwala sprawdzić, czy asystent znajduje właściwe informacje, jasno je wyjaśnia i kieruje odwiedzających do przydatnych stron.

Do pierwszej rozmowy wystarczy model danych produktowych w Drupalu oraz przykładowy zestaw pytań zadawanych przez klientów. Porozmawiajmy o pilotażu obejmującym wyszukiwanie informacji, linki do wiarygodnych źródeł, interfejs zintegrowany ze stroną oraz pomiar dokładności odpowiedzi. Wyniki pilotażu pozwolą ocenić, czy warto rozszerzyć asystenta na cały katalog i jakie zmiany należy wcześniej wprowadzić. Więcej o naszej usłudze można przeczytać na stronie Chatbot AI dla stron na Drupalu.