Temat i problem do rozwiązania
Klient, niewielka hurtownia, 15 osób.
Jakiś czas temu stworzono dla niech chatbota w Langchainie, służącego jako asystent sprzedaży.
Cel był taki, aby gdy jest kontakt z jakimś klientem, chatbot mógł podawać podsumowania i inne dane ze sprzedaży. Aby oszczędzać na tokenach, założenie było, że najpierw szukamy w historii rozmów, wspólnej dla całej firmy przez wyszukiwarkę, a dopiero potem zadajemy pytania AI. Chodziło o wyszukiwanie w regulaminach i innych dokumentach.
Niestety, poprzednie wykonanie przez osobę trzecią maiło jak się okazało poważny błąd architektoniczny.
Przy tworzeniu podsumowania rozmowy, fizycznie z bazy danych były kasowane poprzednie wiadomości. Nie było wiec do czego wracać. Dodatkowo podsumowanie rozmów w procesie summaryzacji było tworzone przez mały model, który gubił sporo ważnych faktów.
Rozwiązanie
Naprawiłem to zgodnie ze sztuką.
W bazie danych, dodałem tabelę przechowującą podsumowania rozmów. W tabeli która przechowuje wiadomości per rozmowa, już nic nie kasuję, po prostu wczytujemy ograniczona ilość wiadomości, określoną w tabeli summaryzacji, oraz do system promptu dodajemy podsumowanie, ostatnie.
Dzięki temu historia nie ginie, i może wrócić do niej zarówno człowiek, jak i AI, gdyż dodałem dla modelu tool wyszukiwania w historii rozmowy.