W świecie szybkiego rozwoju technologii, sztuczna inteligencja (AI) stale redefiniuje, jak firmy i użytkownicy wchodzą w interakcje z nowoczesnymi systemami. Jednym z najbardziej obiecujących obszarów jest generatywna sztuczna inteligencja (GenAI), która przekształca sposób, w jaki organizacje zarządzają danymi i wspierają użytkowników. Nasza podróż z GenAI rozpoczęła się od jednego, prostego pytania: Jak ułatwić naszym klientom poruszanie się po ogromnym zasobie dokumentacji i funkcji naszego systemu?
Wyzwanie prostoty i intuicyjności
Naszym podstawowym celem było zapewnienie użytkownikom szybkiego, bezproblemowego dostępu do informacji o produkcie, które są kluczowe do korzystania z naszej platformy korporacyjnej. Aby osiągnąć ten cel, nasz zespół produktowy postawił przed zespołem deweloperskim zadanie: stworzenie rozwiązania, które uprości ten proces i jednocześnie wzbogaci ogólne doświadczenie użytkownika. Efektem tej pracy był Rafay Copilot, bot oparty na technologii GenAI, który ma za zadanie wspierać użytkowników w codziennych zadaniach.
Jednak stworzenie Rafay Copilot nie było łatwym zadaniem. Napotkaliśmy wiele wyzwań: od nauki złożoności systemów AI, poprzez zapewnienie precyzyjnych odpowiedzi, aż po integrację z istniejącymi systemami. Wysiłki te zmusiły nas do przemyślenia i udoskonalenia naszego podejścia, co ostatecznie poszerzyło nasze postrzeganie możliwości GenAI.
Definiowanie architektury Copilota
Tworząc rozwiązanie oparte na GenAI, musieliśmy zaprojektować architekturę, która nie tylko rozwiązywała bieżące problemy, ale była również elastyczna i skalowalna na przyszłość. Naszym celem było stworzenie systemu, który można łatwo rozszerzać o inne przypadki użycia, takie jak agenci AI lub inne rodzaje asystentów cyfrowych.
Podstawowym elementem tej architektury było zastosowanie frameworku LangChain, który łączy żądania użytkowników z dużymi modelami językowymi (LLM). Ważnym elementem był również Qdrant, nasza baza danych do przechowywania i wyszukiwania osadzonych tekstów, co pozwala Copilotowi dostarczać odpowiedzi bazujących na specyficznej, prywatnej dokumentacji. Aby monitorować poprawność działania systemu, korzystamy z Langfuse, który śledzi koszty i zapewnia debugowanie usług AI.
Dzięki zastosowaniu retrieval-augmented generation (RAG), Copilot może pobierać specyficzne dane, takie jak dokumentacja firmowa czy wiedza wewnętrzna, aby dostarczać bardziej trafne i kontekstualne odpowiedzi. Rozbudowana architektura pozwala również na integrację z przyszłymi narzędziami, takimi jak LangGraph czy LangSmith, które mogą wspierać bardziej złożone iteracje i debugowanie aplikacji AI.
Warstwa API i usługi AI
Każde żądanie kierowane do Rafay Copilot przechodzi przez centralną bramę API, która odpowiada za uwierzytelnienie oraz standaryzację żądań API. Po uwierzytelnieniu, system decyduje, jaki agent AI powinien obsłużyć żądanie. Takie rozwiązanie pozwala na łatwe rozbudowywanie systemu o nowych agentów, w tym również o inne modele generatywnej AI.
Usługi agentów i integracja z LLM
Kiedy system wybiera odpowiedniego agenta, żądanie jest przekazywane do odpowiedniej usługi agentów, która współpracuje z LLM. Prowadzące te interakcje konfigurowalne „prompty” są przechowywane w Kubernetes, co umożliwia ich szybką modyfikację na podstawie wyników testów lub opinii użytkowników. Taki proces pozwala nam wprowadzać szybkie poprawki i dostosowywać system, aby dostarczał coraz lepsze odpowiedzi.
Baza danych i obserwowalność
Aby zapewnić, że Copilot dostarcza dokładne i aktualne informacje, zaimplementowaliśmy proces automatycznego aktualizowania danych z naszej dokumentacji przechowywanej na GitHub. Dane te są przetwarzane i przechowywane w Qdrant, co umożliwia szybkie wyszukiwanie i udzielanie odpowiedzi przez Copilot.
W kwestii monitorowania systemu, Langfuse pozwala nam na bieżąco śledzić koszty, odpowiedzi i opinie użytkowników. Dzięki temu system może być stale optymalizowany pod kątem lepszej wydajności i trafności odpowiedzi.
Pokonywanie wyzwań
Choć architektura wydaje się stosunkowo prosta, w rzeczywistości napotkaliśmy wiele trudności podczas budowy Rafay Copilot. Oto niektóre z wyzwań, z którymi się zmierzyliśmy:
1. Stromy krzyż uczenia się – Zrozumienie złożoności krajobrazu AI wymagało czasu i dużego zaangażowania.
2. Ocena modeli LLM – Wybór odpowiedniego modelu AI był trudny ze względu na szeroką gamę dostępnych opcji.
3. Zarządzanie kosztami – Aplikacje GenAI generują koszty na podstawie liczby przetwarzanych tokenów, co wymagało odpowiednich narzędzi do kontroli wydatków.
4. Bezpieczeństwo danych – Zapewnienie, że użytkownicy nie będą przypadkowo ujawniać poufnych danych, było kluczowe.
5. Zarządzanie tajemnicami i dostępem do modeli – Zarządzanie kluczami API i dostępem do różnych modeli AI było wyzwaniem w środowisku korporacyjnym.
6. Obserwowalność – Aby zapewnić, że aplikacje AI są gotowe do produkcji, niezbędna była integracja z narzędziami do monitorowania, takimi jak LangSmith i Langfuse.
Podsumowanie
Budowanie aplikacji GenAI może wydawać się proste na pierwszy rzut oka, zwłaszcza w fazie eksperymentalnej. Jednak wdrażanie takich aplikacji na skalę przedsiębiorstwa wiąże się z wieloma wyzwaniami, w tym wyborem odpowiedniego LLM, zarządzaniem kosztami, kontrolą dostępu do danych oraz utrzymaniem obserwowalności systemu. Nasze doświadczenia z tworzenia Rafay Copilot pozwoliły nam lepiej zrozumieć te wyzwania i stworzyć odpowiednie narzędzia, takie jak GenAI Playgrounds, które pozwalają na szybkie prototypowanie i budowanie aplikacji GenAI.
Każda organizacja, która planuje wdrożenie sztucznej inteligencji na skalę korporacyjną, powinna uwzględnić wszystkie aspekty związane z bezpieczeństwem, danymi i kosztami, zanim szeroko zaadaptuje GenAI w swojej infrastrukturze.