Tworzenie agenta AI od zera: wzorce, ReAct i LangGraph
Przyswoj podstawowe koncepcje leżące u podstaw agentów AI — planowanie, używanie narzędzi, refleksja oraz wzorzec ReAct — oraz to, jak LangChain i LangGraph wpisują się w proces ręcznego budowania takich agentów.
Systemy AI nie są już ograniczone do odpowiadania na pojedyncze pytania. Dzięki agentom AI model może planować sekwencję działań, korzystać z zewnętrznych narzędzi, oceniać uzyskane wyniki i wykonywać zadania wymagające kilku kroków do zakończenia.
Co czyni coś agentem AI?
Standardowy model AI reaguje na jeden prompt i wytwarza jedną odpowiedź. Agent AI idzie dalej – może:
- Określić, czego faktycznie chce użytkownik
- Rozbić ten cel na sekwencję działań
- Wybrać i użyć odpowiednich narzędzi
- Przyjrzeć się temu, co te narzędzia zwracają
- Kontynuować pracę, dopóki zadanie nie zostanie faktycznie zakończone
Pomyśl o wirtualnym planerze podróży, który przygotowuje dwudniową wycieczkę do Kandy. Musi zebrać informacje z różnych źródeł, a następnie połączyć je w praktyczny plan podróży, zamiast jedynie opisać go w abstrakcyjny sposób.
Jak wygląda proces pracy agenta
Wiele rzeczywistych zadań jest zbyt skomplikowanych, by można je było wykonać za jednym razem. Proces pracy agenta radzi sobie z tym, dzieląc zadanie na odrębne fazy.
Typowe fazy to:
- Planowanie
- Szukanie informacji
- Pisanie
- Przeglądanie
- Doskonalenie
Taka struktura pracy umożliwia agentowi budowanie na wynikach poprzednich faz i ciągłe udoskonalanie swojej ostatecznej odpowiedzi.
Często występujące wzorce w projektowaniu agentów
Przy projektowaniu agentów AI stosuje się kilka ustalonych wzorców:
- Planowanie: dzielenie jednego dużego zadania na szereg mniejszych zadań.
- Wykorzystywanie narzędzi: korzystanie z zewnętrznych zasobów, takich jak kalkulatory, wyszukiwarki lub bazy danych.
- Rozważanie: sprawdzanie jakości wstępnej odpowiedzi i jej udoskonalanie.
Takie wzorce dają agentom możliwość radzenia sobie z problemami bardziej złożonymi niż prosta wymiana wiadomości typu prompt–odpowiedź.
Rola LangChain i LangGraph
LangChain dostarcza komponenty niezbędne do tworzenia aplikacji opartych na modelach językowych, w tym szablony promptów, integracje z narzędziami oraz połączenia z różnymi modelami.
LangGraph łączy poszczególne działania w spójną całość. Jest szczególnie przydatny, gdy agent potrzebuje pętli, trwałej pamięci, wywołań narzędzi lub momentu, w którym może interweniować człowiek.
Aby podsumować różnicę:
- LangChain dostarcza elementy składowe.
- LangGraph zarządza sposobem ich działania.
Rozumienie wzorca ReAct
Wzorzec ReAct łączy rozumowanie z działaniem.
Agent stosujący ten wzorzec przechodzi przez następujące etapy:
- Rozumowanie nad tym, co robić dalej
- Wykonanie działania
- Sprawdzenie wyniku
- Rozumowanie nad kolejnym krokiem
To pętlenie trwa, dopóki agent nie będzie pewien, że może dostarczyć ostateczną odpowiedź.
Cykl ReAct łączy ze sobą myślenie, działanie, obserwację oraz dostarczenie końcowego rezultatu.
Ręczne tworzenie prostego agenta
Rozważmy stworzenie minimalnego agenta wyposażonego w dwa narzędzia:
- Jedno do wyszukiwania typowej wagi rasy psa
- Jedno do wykonywania dodawania
Załóżmy, że użytkownik zadaje pytanie w tym stylu: ile ważyliby Border Collie i Scottish Terrier, gdyby dodać ich wagi do siebie.
W obliczu takiego żądania agent przechodzi przez krótką sekwencję działań:
- Szuka informacji o wadze Border Collie: 37 funtów
- Szuka informacji o wadze Scottish Terrier: 20 funtów
- Używa kalkulatora z wartością
37 + 20 - Podaje wynik: 57 funtów
To przykład pokazujący, jak agent łączy kilka wywołań narzędzi zamiast po prostu zgadywać odpowiedź bezpośrednio.
Dzielenie pracy między modelem a środowiskiem wykonawczym
Model językowy oraz otaczający go kod w Pythonie zajmują się oddzielnymi częściami zadania.
LLM jest odpowiedzialne za:
- Rozumienie treści pytania
Środowisko wykonawcze Pythona zajmuje się:
- Rzeczywistym uruchamianiem wybranych narzędzi
- Śledzeniem wyników
- Zarządzaniem pętlą, która napędza agenta
- Dostarczaniem wyników narzędzi z powrotem do modelu
Krótko mówiąc, model decyduje, co musi się wydarzyć, a kod Pythona to realizuje.
Zmiana pętli na proces zautomatyzowany
Zamiast ręcznie uruchamiać każde wezwanie narzędzia, można zautomatyzować całą pętlę agenta. System sprawdza, czy model chce wezwać narzędzie:
- Jeśli tak, to narzędzie zostaje wykonywane.
- Wynik jest przekazywany z powrotem do modelu.
- Gdy nie są już potrzebne żadne dodatkowe narzędzia, agent zwraca ostateczną odpowiedź.
Automatyzacja pętli w ten sposób przekształca agenta w coś, co można wykorzystać przy wielu różnych żądaniach użytkowników, a nie tylko w jednorazowy skrypt.
Główne kwestie do zapamiętania
- Agenci AI rozwiązują zadania, przechodząc przez sekwencję kroków.
- Przepływy pracy oparte na agentach polegają na planowaniu, wywoływaniu narzędzi, obserwowaniu i ciągłym udoskonalaniu.
- Powszechne wzory projektowe obejmują planowanie, używanie narzędzi, refleksję, koordynację wielu agentów oraz zarządzanie pamięcią.
- LangChain dostarcza elementy budulcowe dla aplikacji AI.
- LangGraph zarządza sposobem, w jaki te elementy łączą się w funkcjonalny proces.
- ReAct łączy ze sobą rozumowanie, działanie i obserwację wyników.
- LLM podejmuje decyzje, podczas gdy środowisko wykonawcze Python zajmuje się ich realizacją.
- Automatyzowana pętla agenta nieustannie wywołuje narzędzia, aż zadanie zostanie ukończone.
Te podstawy stanowią fundament pod tworzenie bardziej zaawansowanych agentów przy użyciu LangGraph w przyszłości.
Kolejnym etapem rozwoju sztucznej inteligencji nie jest już tylko generowanie lepszych odpowiedzi — chodzi o budowę systemów zdolnych do samodzielnej podejmowania właściwych działań.
Literatura pokrewna
- Co tak naprawdę automatyzuje LangChain po stworzeniu pętli agenta — Wyjaśnia, w jaki sposób LangChain, LangGraph oraz podobne SDK-y wykorzystują tę samą podstawową pętlę agenta stworzoną od zera, oraz kiedy korzystanie z frameworku jest pomocne, a kiedy szkodliwe.