W Top Online mamy swojego chatbota opartego na GPT-4. Oto krótka historia tego, jak powstał Ignaś – bot, który pomaga w SEO na podstawie wiedzy z m.in. naszej książki i kursu SEO. Zobacz, jak to działa!
Spis treści:
Chatbot Ignaś w kilku zdaniach
IGNAS (dla znajomych Ignaś), to Inteligentny Asystent SEO Top Online. System złożony z wielu autorskich serwisów i automatyzacji, który pomaga nam w pozycjonowaniu stron klientów. Poza byciem naszym centrum dowodzenia, Ignaś jest też częścią naszej marki – naszym brand hero.
Stał się nim na dobre parę miesięcy temu, kiedy to z bycia po prostu „robotem” lub „automatyzacją” zyskał swoją twarz. To właśnie wtedy oczywiste stało się, że poza wizerunkiem, Ignaś będzie musiał w końcu „nauczyć się” komunikować.
Nie tylko w celach marketingowych, ale i czysto praktycznych. Mamy już przecież zbiór autorskiej wiedzy, czyli książkę SEO Samodzielni i kurs SEO. Mamy też Ignasia jako nasz system – defacto autorskie narzędzia SEO dostosowane do naszych potrzeb.
W obliczu ChatuGPT i wszechobecnych modeli językowych stworzenie czatu posiadającego całą naszą wiedzę stało się więc naturalnym kolejnym krokiem. Krokiem w kierunku prawdziwie Inteligentnego Asystenta SEO.
A co taki bot miałby robić? Cóż, najlepiej niech wypowie się sam:
Więcej o tym skąd wziął się pomysł na taką postać i jak zwizualizowaliśmy naszego robota - Ignasia przeczytasz więcej w artykule Marcina, naszego CEO – polecam!
Dlaczego copywriter buduje aplikacje
Dlaczego ja, jako SEO Copywriter, dostałem za zadanie przygotowanie aplikacji opartej na AI? No, cóż, wszystko dlatego, że zastąpił mnie już ChatGPT… Nie no, żartuję, sam je sobie wybrałem! :D
W Top Online co pół roku każdy z zespołu realizuje tzw. cel strategiczny. Jest to zwykle jedno duże zadanie wykraczające poza zakres podstawowych obowiązków. Mające równocześnie wyraźnie rozwijać zarówno osobę, która je realizuje, jak i firmę.
Każdy przygotowuje i wybiera sobie takie zadanie samodzielnie, a moim na poprzednie pół roku było właśnie stworzenie chatbota Ignasia.
A dlaczego ja, a nie ktoś, kto choćby potrafi programować? Powodów było kilka:
Przede wszystkim nie chcieliśmy wymyślać koła na nowo – miało być skutecznie, ale też maksymalnie prosto i niedrogo w realizacji. Miałem więc skupić się na wykorzystaniu gotowych rozwiązań, bez angażowania programisty czy specjalisty od takich apek.
Jestem także współautorem naszego kursu i książki SEO. Wiedza w nich pochodzi od naszych specjalistów, ale to ja to wszystko pisałem. Znam więc te treści jak własną kieszeń, a przez to, to mi najłatwiej jest weryfikować skuteczność takiego bota i go optymalizować.
No i w końcu: po prostu chciałem to zrobić.
Zawsze chciałem nauczyć się czegoś związanego z programowaniem, a nigdy nie miałem ku temu dobrego pretekstu. Jakby nie patrzeć, była to i szansa na podszkolenie się w temacie generatywnego AI, a to teraz dla copywritera konieczność (a już na pewno nie ma co ryzykować i tego kompletnie nie robić).
Główne założenia i pierwsze kroki
Za główne założenie przyjąłem sobie połączenie GPT3.5-turbo z naszą książką o SEO. Tak, żeby bot wypowiadał się jako Ignaś, wiedział kim i po co jest, no i poprawnie odpowiadał na pytania na bazie naszej wiedzy.
No i tak zaczęło się szukanie rozwiązań. Od początku jasne było, że będę potrzebował polecenia, które nada GPT „charakter” Ignasia. Nie miałem jednak zielonego pojęcia w jaki sposób połączyć czat z dodatkową wiedzą.
Pierwszym krokiem było więc przekopanie się przez dokumentację OpenAI i dostępne case studies zastosowania GPT-3 / 3.5-turbo.
Do sześciu razy sztuka
Moja pierwszą myślą (i pierwsze podejście do tematu) był finetuning, czyli „wyszkolenie” własnego modelu na bazie GPT-3, na co pozwala OpenAI.
Bardzo szybko po researchu okazało się jednak, że nie jest dobry kierunek, bo finetuning służy bardziej kształtowaniu zachowań bazowego modelu niż dodawaniu wiedzy. To drugie też jest możliwe, ale raczej w dużej skali i nijak nie pasuje do moich potrzeb.
Drugim podejściem był prosty chatbot na bazie API GPT-3 i API Embeddings (modelu przetwarzającego tekst na wektory). Na bazie tych poradników.
Tutaj koniec końców powstał bot, który miał charakter Ignasia, ale problemem okazało się przetwarzanie danych, a konkretnie jego optymalizacja.
Zniechęcony skierowałem się wówczas, już mniej ambitnie, do tego, od czego miałem zacząć, czyli do gotowych rozwiązań – takich jak ChatPDF.
Efekty były niezłe, ale dalekie od tego, czego szukałem. Żadne z dostępnych wtedy narzędzi nie pozwalało na modyfikacje sposobu przetwarzania treści czy zachowania modelu. I na tym zakończyło się podejście trzecie.
Czwartym podejściem do tematu stało się szukanie rozwiązań wcześniejszych problemów lub podobnych gotowych już aplikacji na GitHub’ie. Nie znalazłem tego, czego szukałem, ale znalazłem coś znacznie lepszego.
To tu trafiłem po raz pierwszy na LLamaindex i Langchain – frameworki do tworzenia aplikacji wykorzystujących duże modele językowe (LLM-y). Wtedy jeszcze nie tak popularne, bo było to gdzieś w lutym 2023.
No i zaczęły się schody, czyli piąta próba ugryzienia tematu. Przekopywanie się przez dokumentację obu rozwiązań, przeglądanie przykładów z internetu i próby złożenia czegoś z niewieloma dostępnymi poradnikami. Przypominam: nie wiedziałem niczego o kodzie!
Mój pierwszy działający chatbot na bazie Langchaina powstał parę tygodni później. Gdy zacząłem już rozumieć, o co w tym wszystkim chodzi i postanowiłem spróbować jeszcze raz po kolejnej porażce i kolejnym zwątpieniu w swoje możliwości ;)
I tak za szóstym podejściem powstał pierwszy bot z wiedzą z naszej książki, napisany przeze mnie w Pythonie.
Do ideału było mu jeszcze daleko…
…ale na tym rozwiązaniu pracowałem już przez kolejne miesiące, aż do czerwca.
Problem z implementacją i chatbot w wersji no code
Pod koniec maja miałem gotowego bota, który spełniał podstawowe założenia i odpowiadał zgodnie z prawdą. Rozwiązanie zaprezentowałem więc Marcinowi (CEO Top Online i autor Ignasia) i… okazało się, że nie będziemy mieć jak go zaimplementować.
Nie będę już wchodził w szczegóły i technikalia. Po prostu potrzebowaliśmy rozwiązania, które będziemy w stanie umieścić na serwerze i połączyć z interfejsem bez większej ingerencji programisty i przepisywania aplikacji.
No i tak trafiłem na gwóźdź programu, czyli Flowise – interfejs graficzny no code do tworzenia aplikacji wykorzystujących duże modele językowe. Odtworzyłem w nim napisanego wcześniej bota, a całość trafiła na nasz firmowy serwer. Tak zaczęły się wewnętrzne testy, modyfikacje i ulepszenia, które trwają po dziś dzień.
Jak działa nasz chatbot
Wiedza naszego bota jest przechowywana w wektorowej bazie danych w usłudze Pinecone.
W uproszczeniu: jest tam między innymi nasza książka, podzielona na fragmenty zapisane za pomocą tzw. Embeddings, czyli wektorów wyliczonych przez model text-embedding-ada-002.
Sam chatbot to z kolei dwa modele OpenAI: GPT-4 i wspomniany text-embedding-ada-002 oraz nasza baza danych połączone ze sobą za pomocą Flowise.
Podstawowy mechanizm odpowiadania na pytania na bazie dodatkowej wiedzy to pewna sekwencja poleceń wykonywana przez te rozwiązania, mianowicie:
- Zapytanie wpisane przez użytkownika jest wysyłane do API text-embedding-ada-002 oraz GPT-4.
- Text-embedding-ada-002 przelicza otrzymany tekst na wektory, które przesyła do API Pinecone.
- GPT-4 generuje odpowiedź na tekst otrzymany w poleceniu (prompt systemowy + prompt użytkownika).
- Pinecone wyszukuje 4 najbardziej podobne wektory w naszej bazie danych i zwraca w odpowiedzi przypisane im fragmenty treści.
- Z podobnych fragmentów skrypt tworzy polecenie dopracowania udzielonej odpowiedzi na bazie kontekstu (4 znalezionych fragmentów) dla GPT-4 i wysyła je do API.
- GPT-4 poprawia swoją odpowiedź na bazie otrzymanych informacji z bazy danych.
- Użytkownik otrzymuje odpowiedź na swoje zapytanie.
A tak wygląda to na schemacie:
W czacie wygląda to z kolei mniej więcej tak:
Mechanizm ten ma jeszcze jeden, dodatkowy dla podstawowej sekwencji, ale kluczowy etap: przeredagowanie pytania użytkownika z uwzględnieniem historii czatu.
Dzięki niemu chatbot jest w stanie poprawnie odpowiadać gdy np. najpierw zapytamy „co to są meta tagi”, a później w kolejnej wiadomości dopytamy lakonicznie „jak je wdrożyć”.
Wówczas, przed rozpoczęciem powyższej sekwencji GPT-4 przetworzy sobie „jak je wdrożyć” na „jak wdrożyć meta tagi”. I dopiero takie pytanie przyjmie za pełne polecenie użytkownika.
Wysłanie takiego pełnego, samodzielnego pytania jest tu bardzo ważne ze względu na szukanie informacji w bazie wiedzy na zasadzie podobieństwa semantycznego.
Gdyby model embeddings przeliczył na wektor zapytanie „jak je wdrożyć”, to najbliższymi semantycznie fragmentami z bazy wiedzy mogłyby okazać się te o ukrytych kategoriach czy przekierowaniach.
W efekcie: odpowiedź Ignasia nie miałaby sensu. No w większości przypadków kompletnie niemożliwe byłoby też kontynuowanie rozmowy po pierwszej odpowiedzi bota.
Co dalej?
Ignaś potrafi już udzielać odpowiedzi na dość złożone pytania i całkiem skutecznie pomaga w rozwiązywaniu problemów z pozycjonowaniem.
Sprawdza się też świetnie jako asystent początkującego w SEO – bo jest trochę jak taki podręczny specjalista, który może bez końca odpowiadać na pytania.
Ze względu na to…
Warto wiedzieć
Chatbota Ignasia planujemy udostępnić naszej społeczności – SEO Samodzielnym.
Na ten moment pracujemy jednak jeszcze nad własnym interfejsem (ten od Flowise ma sporo ograniczeń), rozwijamy jeszcze bazę wiedzy i ulepszamy główny prompt.
Jeśli chcesz dostać do niego dostęp w pierwszej kolejności, koniecznie dołącz do grupy SEO Samodzielni na Facebooku.
Jeśli z kolei chciałabyś/chciałbyś dowiedzieć się, jak stworzyć sobie takiego bota krok po kroku, to mam dobrą wiadomość. Taki poradnik przygotuję w kolejnym artykule, a gdy ten tylko się pojawi, to umieszczę tutaj link :)
Podsumowanie w punktach
- Ignaś to nasz Inteligentny Asystent SEO, którego niedawno zwizualizowaliśmy i który stał się naszym brand hero.
- Od ponad pół roku pracujemy nad tym, by stał się on także interaktywną bazą wiedzy o pozycjonowaniu.
- Stworzenie takiego chatbota stało się moim zadaniem strategicznym, które próbowałem wykonać na wiele różnych sposobów.
- Ostatecznie stworzyłem bota opartego na bibliotece Langchain i aplikacji no code Flowise.
- Nasz bot działa wykorzystując kilka rozwiązań: GPT-4, Embeddings OpenAI, wektorową bazę danych Pinecone oraz wspomniane już Langchain i Flowise.
- Obecnie potrafi on odpowiedzieć na większość pytań dotyczących podstawowej wiedzy o SEO i rozwiązuje proste problemy.
- To taki idealny asystent osoby prowadzącej pozycjonowanie własnej strony – dlatego niebawem chcemy udostępnić go naszej społeczności SEO Samodzielnym.
- Jeśli chcesz, chatbota z wiedzą z dowolnego pliku możesz stworzyć też samodzielnie.