Sztuka niewiedzenia: Jak budujemy AI Coacha od zera
Wnioski i rady z naszych eksperymentów z budowaniem webowej aplikacji AI i dwóch aplikacji mobilnych bez wcześniejszego doświadczenia.
Nie planowaliśmy tego. Nie do końca.
Kursor najeżdża na przycisk "Prześlij do weryfikacji" dla naszych aplikacji AI Agile Coach, które budowaliśmy przez ostatnie 4 tygodnie. Cztery tygodnie temu właściwie nie wiedzieliśmy, jak tworzyć aplikacje. Mimo to to zrobiliśmy.
"Co najgorszego może się stać?"
"Mogą ją odrzucić."
"Naciśnij przycisk."
Spoiler: Obie aplikacje zostały przyjęte w ciągu kilku dni.
Jak do tego doszliśmy?
Jest rok 2023, a AI jest wszechobecne. ChatGPT to nowa błyszcząca zabawka. "Patrz, potrafi napisać wiersz o Scrum Masterach!" ktoś zamieścił w naszym Slacku. "Właśnie kazałem mu napisać mojego maila; to jak magia" — napisał inny. Zaczęliśmy używać AI do małych rzeczy — generowania pomysłów, obsługi rutynowych zadań — i po prostu się bawić.
Ale to było coś więcej niż gadżet i wszyscy to wiedzieliśmy. Byliśmy oszołomieni i może czuliśmy, że zostajemy z tyłu. To było nowe, duże i szybko się rozwijające, a my próbowaliśmy nadgonić.
Wtedy olśniło nas: to nie jest coś, co można oglądać z boku. Mogliśmy coś z tym zbudować.
Oto co zrobiliśmy, czego się nauczyliśmy, plus kilka spojrzeń za kulisy.
1. Zanurzenie się: Żadnego idealnego pomysłu, po prostu zacznij
Nie mieliśmy wielkiego planu ani jasnego pomysłu, co stworzyć. Ale wiedzieliśmy, że jesteśmy skoncentrowani na uczeniu się i dzieleniu wiedzą w sposób, który zostaje w pamięci.
I teraz AI było tym ogromnym, błyszczącym narzędziem, którego mogliśmy użyć w nowy sposób. Ale co dokładnie mieliśmy zbudować? I jak to zrobić?
Zamiast czekać na idealny pomysł, po prostu zaczęliśmy majstrować. Żadnych wymyślnych planów działania, żadnych długich debat — tylko my, kilka pomysłów i chęć zobaczenia, co możemy zrobić.
Wnioski:
Nie czekaj na idealny pomysł. Zacznij małymi krokami, eksperymentuj z technologią i pozwól, by kierunek wyłonił się z tego, czego się uczysz. W przypadku szybko rozwijających się technologii zbyt długie czekanie może oznaczać przegapienie momentu.
2. Ustalenie wizji: Coś więcej niż kolejny chatbot
Od początku nie chcieliśmy budować kolejnego chatbota. ChatGPT już istniał i wiedzieliśmy, że nie możemy (i nie chcemy) konkurować z jego skalą. Ale to, co ChatGPT oferował w skali, brakowało mu w jakości dla niszowych tematów, gdzie szczegóły mają znaczenie.
Co, gdyby nasz AI Agile Coach mógł wykorzystać naszą wiedzę, by zapewnić godne zaufania, skłaniające do myślenia wskazówki wykraczające poza proste, ogólne odpowiedzi?
Jakość, zaufanie i ludzki dotyk stały się filarami naszej wizji. Chcieliśmy przeciwdziałać powszechnym problemom AI — bycia ogólnikowym, bezosobowym i zawodnym — czyniąc z nich nasze mocne strony.
Wnioski:
Zacznij od wizji i pracuj wstecz od niej. Nie potrzebujesz wszystkich szczegółów z góry; nowe pomysły będą naturalnie pojawiać się w miarę postępu.
3. Tworzenie zespołu lean i procesu: Zachowaj prostotę
Gdy zdecydowaliśmy się zbudować AI coach, uformował się mały zespół — jeden projektant, dwóch deweloperów i reszta zespołu w tle do feedbacku i dostarczania pomysłów.
Bez większego planowania przyjęliśmy proces lean: szybkie codzienne synchronizacje, nieformalne rozmowy w stylu retro do dopracowania narzędzi i cotygodniowe dema do dzielenia się postępami. Nie chodziło o trzymanie się ściśle ramowego procesu; chodziło o zachowanie prostoty i responsywności.
Wnioski:
Pozwól, by Twój proces rozwijał się naturalnie. Codzienne odprawy, regularne opinie i proste dema mogą utrzymać Cię w alignmencie. Nie przesadzaj z myśleniem — czasem najlepsze podejście to to, które pasuje do rytmu Twojego zespołu.
4. Sztuka promptowania: Próba i błąd
Wiedzieliśmy, że innowacyjne prompty (instrukcje, które dajesz modelowi językowemu) będą kluczowe dla naszej aplikacji. Promptowanie brzmi łatwo, dopóki nie spróbujesz robić tego dobrze. Eksperymentowaliśmy z różnymi promptami — dopracowując słowa, przepisując zdania, testując, aż poczuliśmy się dobrze.
Nasz obecny prompt ma ponad 5000 znaków, pełen szczegółów sprawiających, że nasze AI brzmi jak my. To jak pisanie tajnej receptury — i zajęło dużo próbowania, żeby do tego dojść, a nadal regularnie go dopracowujemy.
Wnioski:
Eksperymentuj z promptami. Testuj różne warianty, by sprawdzić, co działa, i dostosowuj je często. Dobre prompty są kluczowe dla wydajności AI.
5. Wydawanie wcześnie i często: Porzucenie perfekcjonizmu
Nie czekaliśmy na perfekcję. Gdy nasza pierwsza wersja była wystarczająco dobra, ją wypuściliśmy. Czy była bezbłędna? Czy zawierała niezliczone pomysły i funkcje, o których myśleliśmy? Zdecydowanie nie. Ale nie miało sensu kontynuować bez feedbacku od prawdziwych ludzi.
Z AI nie możesz przewidzieć każdego wyniku, a każda interakcja użytkownika jest inna. Jedynym sposobem, by wiedzieć, co działa, jest wypuszczenie tego, zobaczenie, jak ludzie tego używają, i adaptacja na podstawie tego, czego się uczysz.
Wnioski:
Nie dąż do perfekcji przed uruchomieniem. Szybko wypuść minimalny rentowny produkt i ucz się z feedbacku użytkowników dla szybkich ulepszeń. To nie jest nowy pomysł, ale w szybko zmieniającym się krajobrazie AI ma to większe znaczenie niż kiedykolwiek.
6. Stojąc na ramionach gigantów
Okazuje się, że nie musisz budować wszystkiego samodzielnie. Polegaliśmy na frameworkach i szablonach takich jak Gravity, który obsługuje wszystkie żmudne, ale niezbędne rzeczy, jak zarządzanie użytkownikami, uwierzytelnianie i e-mail, dzięki czemu mogliśmy skupić się na tym, co ważne. W dużej mierze korzystaliśmy z narzędzi takich jak LangChain i oczywiście OpenAI API, które wykonywały dużą część ciężkiej roboty za kulisami.
Wnioski:
Korzystaj z istniejących narzędzi, by przyspieszyć rozwój. Nie buduj od zera, gdy ktoś inny już rozwiązał problem. Właściwe narzędzia mogą zaoszczędzić dużo czasu.
7. Uczenie się od ekspertów (jak prawdziwy Henrik)
Dużo zawdzięczamy Henrikowi Knibergowi, który poprowadził nas przez niektóre z najważniejszych części procesu rozwoju. Zaczął od warsztatu, który nadał ton i kierunek naszej pracy. Jako mentor zespołu i patron naszego produktu, Henrik pchał nas w nowych kierunkach i pomógł nam ukształtować AI Agile Coach w to, czym jest dzisiaj. Jego wpływ był nieoceniony i jesteśmy wdzięczni za jego wsparcie.
Wnioski:
Sięgaj po ekspertów i ucz się od nich. Świeże spojrzenie doświadczonej osoby może otworzyć nowe ścieżki, których wcześniej nie brałeś pod uwagę.
8. Wyzwanie treści: Co karmimy AI?
Od lat tworzymy i kuratorujemy treści, w które wierzymy, i teraz musieliśmy dowiedzieć się, jak uczynić je fundamentem naszego AI coach. Nie chodziło o samo wrzucenie naszych materiałów do systemu. Chcieliśmy, by nasze AI było rzetelne, angażujące i naprawdę pomocne. Dlatego spędziliśmy godziny na wyborze i dopracowywaniu właściwych fragmentów wiedzy oraz upewnieniu się, że AI może je efektywnie zrozumieć i wykorzystać.
Wnioski:
Inwestuj czas w kuratorowanie treści. Upewnij się, że są dokładne i oddają ton i głos Twojego AI. Lepsza treść prowadzi do bardziej godnego zaufania AI.
9. Iteracja implementacji LLM: Adaptuj, adaptuj, adaptuj
Ulepszanie AI coach wymagało wielu iteracji, z których każda uczyła nas, co działało, a co nie:
1. Używanie Custom GPT w ChatGPT:
Zaczęliśmy od niestandardowych GPT wewnątrz ChatGPT. Było to łatwe — nie wymagało kodowania. Jednak szybko napotkaliśmy ograniczenia w zakresie kontroli i jakości wyników. Wiedzieliśmy też, że chcemy wydać własny produkt poza ekosystemem OpenAI z własną marką i bardziej bezpośrednim połączeniem z naszymi innymi produktami.
2. Własny interfejs z Assistant API:
Początkowa zbudowaliśmy własny interfejs przy użyciu Assistant API. Dało nam to więcej kontroli nad tym, które dokumenty AI używało. Ale wkrótce napotkaliśmy ograniczenia skalowalności i trudno było kontrolować, które części niestandardowej wiedzy były używane do generowania odpowiedzi.
3. Własny interfejs z LangChain i Weviate Vector DB:
Następnie zaimplementowaliśmy niestandardowego asystenta przy użyciu LangChain i wiedzy z bazy wektorowej Weaviate. Taka konfiguracja pozwoliła nam pobierać tylko odpowiednią wiedzę, poprawiając jakość. Wyniki były świetne w większości przypadków, ale czasami asystent gubił się w nieskończonych pętlach lub udzielał dziwnych, nienaturalnych odpowiedzi.
4. Agent LangChain:
By zaradzić tym problemom, zaimplementowaliśmy agenta LangChain. To dość nowe podejście przyniosło dotychczas najlepsze wyniki. Agent może zdecydować, których narzędzi i informacji użyć w oparciu o zapytanie użytkownika i jest bardziej wydajny w pamięci wcześniejszych interakcji. Na przykład, jeśli użytkownik mówi "Cześć", agent decyduje, że nie musi przeszukiwać swojej specjalistycznej wiedzy, by po prostu odpowiedzieć na powitanie.
Kompromisem jest rezygnacja z pewnej kontroli, ponieważ agent ma więcej autonomii. Jednak korzyści z poprawionej jakości i wydajności znacznie przeważają nad tym. Biblioteka agentów LangChain oferuje wiele opcji i konfiguracji do dostrojenia wydajności modelu.
5. Jakieś nowe, niesamowite rozwiązanie.
Co przychodzi po agentach, jeszcze nie wiemy. Zobaczymy...
Wnioski:
Jeśli konfiguracja nie działa, nie trzymaj się jej. Wciąż próbuj nowych konfiguracji i ucz się z każdej. Nowe rozwiązania pojawiają się codziennie w krajobrazie AI, więc bądź otwarty i gotowy do adaptacji do najnowszych narzędzi i podejść, by ulepszać swój produkt.
10. Budowanie aplikacji mobilnej: Skok wiary
Zawsze wiedzieliśmy, że będziemy potrzebować aplikacji mobilnej, ale budowanie jej wydawało się zniechęcające. Kiedy Sohrab zapytał, co by to wymagało, byliśmy wahliwi. Aplikacje mobilne są złożone i nigdy wcześniej tego nie robiliśmy. Pomimo że nasza aplikacja webowa wciąż była we wczesnych fazach z wieloma rzeczami do zrobienia, sensowne było wcześniejsze rozpoczęcie aplikacji mobilnej. Uruchamiając aplikację z ograniczonym zestawem funkcji, uniknęliśmy ryzyka konieczności nadrabiania zaległości później, gdy produkt byłby bardziej złożony. Dało nam to też wczesną okazję do nauki i adaptacji.
Używając Expo i React Native, zbudowaliśmy wersje iOS i Android w cztery tygodnie. Naciśnięcie przycisku "Prześlij do weryfikacji" było całkiem ekscytujące. Przypomniało nam, by podjąć ryzyko i zobaczyć, gdzie wylądujemy.
Wnioski:
Jeśli użytkownicy wyrażają potrzebę, podejmij ryzyko. Krzywa uczenia się może być stroma, ale praktyczne doświadczenie bije teoretyczne planowanie. Frameworki takie jak Expo i React Native sprawdzają się dobrze przy budowaniu aplikacji na wiele platform. W przeszłości aplikacje nie-natywne mogły wydawać się niezgrabne lub nie na miejscu, ale te frameworki znacznie ewoluowały. Poświęcasz trochę natywnego odczucia, ale w zamian zyskujesz szybki development i łatwiejsze utrzymanie na różnych platformach.
11. Używanie AI do budowania AI: Wzmacnianie każdego
Jedną z najfajniejszych rzeczy było używanie AI, by pomagać budować nasze AI. Skonfigurowaliśmy różne GPT do konkretnych zadań: jeden do kodowania, inny do pisania i tak dalej. Nawet ja, projektant z ograniczonymi umiejętnościami kodowania, znalazłem się w sytuacji kodowania z pomocą Cursor, edytora kodu z wbudowanym asystentem. AI stało się czynnikiem umożliwiającym, pozwalając każdemu wnosić wkład w nowy sposób.
Wnioski:
Używaj AI, by ulepszać swój proces rozwoju i budować specjalistyczne narzędzia. Jak nauczyliśmy się od Henrika Kniberga: przy każdym zadaniu na swojej liście zapytaj siebie: Jak AI może mi w tym pomóc?
12. Zachowanie ludzkiego dotyku
W projekcie napędzanym przez AI łatwo stracić z oczu ludzki element. Dlatego świadomie staraliśmy się temu zapobiec:
- Logo zostało najpierw naszkicowane na karteczce samoprzylepnej.
- Kod był ręcznie sprawdzany, wybierany i pisany.
- Teksty marketingowe były najpierw pisane na papierze — ołówkiem.
- E-maile do użytkowników były pisane i wysyłane ręcznie z podejściem bootstrapped, bez myślenia o skalowaniu. (Wskazówka: Nie optymalizuj przedwcześnie pod kątem skali)
Wnioski:
AI to potężne narzędzie, ale to ludzkie elementy sprawiają, że produkt jest autentyczny i bliski. Zachowaj osobisty dotyk w swoim projekcie.
13. Dopiero zaczynamy
Zbudowaliśmy dużo szybko, ale wciąż to ogarniamy. Każdy dzień przynosi nowe wyzwania, lekcje i pomysły do przetestowania. Wciąż się uczymy, iterujemy i próbujemy zrobić coś, co działa.
I to jest w porządku, bo tak zawsze działaliśmy. Żyjemy zasadami, których uczymy: ucz się szybko, adaptuj się szybko i wciąż idź do przodu.
Wnioski:
Pozostań ciekawy i elastyczny. Wciąż testuj założenia, przyjmuj to, czego się uczysz, i bądź gotowy do zmiany kierunku.
I nie zapomnij bawić się po drodze.
---