Tech Lead + GenAI - Baza wiedzy
Wykorzystaj podstawowe informacje o swojej domenie biznesowej, aby uzyskać lepsze odpowiedzi z AI.
Rozpoczynam nowy cykl artykułów o wsparciu lidera technicznego narzędziami GenAI. Będę pokazywać, jak wykorzystać LLM do różnorodnych zadań: projektowanie, analiza, wsparcie zespołu, czy oczywiście programowanie.
Dziś skupimy się na fundamentach – bazie wiedzy produktu. To od niej zależy, czy GenAI będzie w stanie nam efektywnie pomagać.
Dlaczego nie działa nam GenAI?
Rozmowy z liderami technicznymi brzmią podobnie:
Próbowałem ChatGPT, ale odpowiedzi są bardzo ogólne.
Copilot nie rozumie po co piszę ten kod.
Claude wypluwa same truizmy, nic wartościowego.
W efekcie ludzie rezygnują z narzędzi AI, bo nie widzą wartości. Ale problem nie leży w samym narzędziu.
Prawda jest brutalna – nie mamy wiedzy na wejściu.
LLM nie będzie znał Twojej domeny biznesowej - zaproponuje generyczne odpowiedzi oparte o standardowe przypadki użycia.
Nie zrozumie architektury i decyzji technicznych - jego sugestie będą ignorować Twoje ścieżki krytyczne, SLA i problemy, które już rozwiązaliście. Dorzuci do tego kolejną warstwę skomplikowania.
Nie będzie miał pojęcia o procesach w Twoim zespole - zaproponuje rozwiązania wymagające nieistniejących standardów i procesów. A te, które macie, zostaną pominięte.
Nie weźmie pod uwagę Twoich celów biznesowych i wskaźników - Skupi się na rzeczach, które mogą wyglądać fajnie, ale niekoniecznie przyniosą wartość dla Twojej organizacji.
To nie jest problem sztucznej inteligencji. To brak uporządkowanej wiedzy w naszym zespole.
W poprzednim newsletterze pisałem o minimalnej dokumentacji w zespole produktowym. Dziś rozwinę ten temat pod kątem pracy z GenAI. Bo jeśli chcemy wykorzystać potencjał sztucznej inteligencji, musimy najpierw zadbać o bazę wiedzy naszego produktu.
Zbieramy wiedzę o produkcie
LLM potrzebuje kontekstu, więc musimy zebrać kluczowe informacje o naszym produkcie.
Nie musi to być od razu pełna dokumentacja. Skupmy się na najważniejszych aspektach.
Funkcje produktu
Co nasz produkt oferuje:
Opis produktu - krótkie podsumowanie, do czego służy i jakie problemy rozwiązuje.
Główne funkcje - jakie kluczowe możliwości oferujemy użytkownikom.
Przypadki użycia - typowe i nietypowe scenariusze wykorzystania produktu.
Słownik domenowy - jak nazywamy rzeczy w naszej organizacji.
Architektura techniczna
Jak produkt jest zbudowany:
Stack technologiczny - jakich technologii używamy (frontend, backend, baza).
Komponenty systemu - główne części produktu i ich odpowiedzialności.
Struktura danych - kluczowe encje i ich powiązania.
Integracje - z jakimi systemami zewnętrznymi się łączymy.
Jakość i bezpieczeństwo
Jak dbamy o stan wewnętrzny produktu:
Wymagania jakościowe - wydajność, skalowalność, dostępność.
Optymalizacja - co i jak optymalizujemy.
Bezpieczeństwo - jakie zabezpieczenia stosujemy.
Standardy - wytyczne dla developmentu.
Stan produktu
Gdzie jesteśmy teraz:
Status prac - co jest gotowe, nad czym pracujemy.
KPI produktowe - co mierzymy w zachowaniach klienta.
Cele biznesowe - do czego dążymy jako organizacja.
Nie wszystko potrzebujesz zawsze. Ale niekiedy kilka prostych zdań skieruje LLM do właściwego rozwiązania.
LLM pomoże nam zebrać wiedzę
A skoro mamy już szablon, to pora go wypełnić. Pokażę to na przykładzie domeny wypożyczenia rowerów, którą wykorzystuję podczas szkoleń DDD i modelowania danych.
Zapytaj LLM o pytania
Na początek wysyłamy do LLM nasz szablon i kilka bazowych zdań o naszej domenie. Następnie prosimy o wygenerowanie pytań.
Oto przykładowe pytania, które może nam zadać, w kontekście naszej domeny rowerowej:
Funkcje produktu
Jakie są główne procesy wypożyczenia roweru?
Jakie mamy rodzaje rowerów i stacji?
Czym różni się wypożyczenie zwykłego roweru od elektrycznego?
Jakie restrykcje mamy na wypożyczanie rowerów?
Architektura techniczna
Jak podzieliliśmy system na moduły?
Jak wygląda proces rezerwacji od strony technicznej?
Jakie dane zbieramy o wypożyczeniach?
Z jakimi systemami musimy się integrować?
Jakość i bezpieczeństwo
Ile wypożyczeń na minutę musimy obsłużyć?
Jak długo może trwać niedostępność systemu?
Jak zabezpieczamy płatności?
Jakie mamy standardy dla wypożyczeń elektrycznych?
Stan produktu
Które funkcje są już dostępne?
Po czym poznamy, że system działa dobrze?
Jakie cele biznesowe mamy na najbliższy kwartał?
Co planujemy dodać w następnej kolejności?
Odpowiadamy na pytania
Ja do nagrywania odpowiedzi używam AudioPen polecane przez Jakuba Mrugalskiego. Mogę uzyskać ustrukturyzowane informacje na bazie luźnej opowieści.
Przykładowe odpowiedzi dla wypożyczalni rowerów:
Główne procesy
Klient wypożycza rower ze stacji początkowej
Może wcześniej zarezerwować rower przez system
Jeździ max 12h, później płaci kary
Oddaje na dowolnej stacji końcowej
Płaci kartą podpiętą do konta
Architektura
System podzielony na moduły: wypożyczenia, płatności, rezerwacje.
Moduły komunikują się przez zdarzenia.
Dane o rowerach i wypożyczeniach trzymamy w CosmosDB.
Integrujemy się z systemem płatności i monitoringiem miasta.
Wymagania jakościowe
System obsługuje 1000 wypożyczeń na godzinę.
99.9% dostępności w godzinach 6-22.
Maksymalny czas odpowiedzi to 2 sekundy na ścieżce krytycznej.
Monitoring stanu rowerów co 5 minut.
Automatyczne alerty przy problemach.
To tylko fragment tej wiedzy - docelowe odpowiedzi byłyby o wiele dłuższe. Ale daje to wartościowy wkład do pracy LLMa.
Narzędzia do pracy z bazą wiedzy
Zebranie wiedzy to pierwszy krok. Teraz trzeba ją efektywnie wykorzystać w pracy z AI. Oto kilka sprawdzonych podejść:
Doklejanie do prompta
Najprostsze rozwiązanie - kopiujemy całość / potrzebny fragment wiedzy i wklejamy do kontekstu rozmowy z LLM.
Działa, ale ma istotne ograniczenie - trzeba ręcznie przeklejać 😅
Więc przejdźmy do innych podejść...
Dedykowane asystenty
Na rynku pojawia się coraz więcej dedykowaych asystentów, które posiadają własne bazy wiedzy.
ThoughtWorks ze swoim Haiven Team Assistant pokazuje zaawansowane podejście:
Baza wiedzy jest wbudowana w narzędzie.
Asystent automatycznie wybiera potrzebny kontekst.
Może łączyć wiedzę z różnych źródeł.
Rozumie strukturę i powiązania w projekcie.
Znam kilka polskich firm, które się przymierzają do tego narzędzia. Ale można prościej...
Zarządzanie projektami w LLM
Platformy GenAI pozwalają tworzyć bazy wiedzy, które wykorzystujemy w ramach zapytania.
Świetnym przykładem jest tutaj Projects w Claude. Możemy sobie ułatwić pracę, a nie wykorzystywać złożonych narzędzi:
Tworzymy osobne projekty dla różnych produktów / części systemu.
Łatwo aktualizować bazę wiedzy - edycja bezpośrednio z portalu, lub przez dysk Google.
Baza wiedzy może obsługiwać wielostronicowe dokumenty.
Claude łączy się z Google Drive. Zadziała nawet jeśli głównie korzystamy z narzędzi Microsoftu - można sobie napisać prosty synchronizator w Power Automate pomiędzy dyskami.
Rozszerzenia do IDE
Nasze AI-owe narzędzia IDE pozwalają definiować bazowy prompt. Można w niego wbudować wiedzę o domenie. Tutaj przykład Cursor ze specjalnym promptem:
Ciągnie informacje z pliku projects.md.
Automatycznie dodaje kontekst do zapytań.
Może budować bardziej złożone prompty.
Inne narzędzia
Istnieją też rozwiązania łączące się bezpośrednio z bazami wiedzy (jak Notion AI), ale osobiście z nich nie korzystałem.
Kluczem jest wybranie rozwiązania, które:
Pasuje do Twojego stylu pracy.
Pozwala łatwo aktualizować wiedzę.
Efektywnie wykorzystuje kontekst w rozmowie z AI.