Główna nawigacja

Wskazówki dotyczące projektowania systemów agentowych

Praktyczne wskazówki pomagają zespołom ustalić, które zachowania agenta powierzyć modelowi językowemu, a które wymagają jawnego oprogramowania.

Podsumowanie

  • Należy starannie rozważyć, jak i gdzie podejmowane są decyzje w systemie agentowym.

  • Przekazanie większej liczby decyzji do LLM może pozwolić systemowi obsługiwać więcej zadań, ale potencjalnie kosztem szybkości, niezawodności i odporności.

  • W miarę możliwości przenoś jak największą część procesu decyzyjnego z LLM do jawnego kodu oprogramowania. Dotyczy to zwłaszcza procesów produkcyjnych lub obarczonych wysokim ryzykiem.

Wprowadzenie

Podczas projektowania systemu agentowego opartego na LLM jedną z najważniejszych decyzji jest określenie, jaka część procesu decyzyjnego ma być realizowana przez model LLM, a jaka przez jawnie zdefiniowane oprogramowanie.

Aby lepiej to zrozumieć, potraktujmy ten wybór jako spektrum między następującymi podejściami:

  • Architektury oparte na routerze definiują kolejność i logikę bezpośrednio w kodzie, zapewniając testowalność, przewidywalność i odporność w zadaniach z wąskiej dziedziny (nazywa się je również „agentami przepływu pracy”).

  • Agenty-orkiestratory wykorzystują duże modele językowe (LLM) do dynamicznego ustalania przebiegu zadań na podstawie poleceń w języku naturalnym. Sprawdzają się w otwartych interakcjach, w których wcześniej zdefiniowana logika jest niewystarczająca lub niemożliwa do zastosowania.

Diagram ilustrujący wprowadzenie.

W produkcyjnych procesach wysokiego ryzyka zwykle zalecamy szersze wykorzystanie mechanizmów routera, a orkiestratory pozostawiamy do zastosowań wymagających elastycznych rozmów o ogólnym przeznaczeniu.

Router a orkiestrator: najważniejsze różnice

Architektury oparte na routerze

Systemy agentowe oparte na routerze:

  • Jawnie definiują przebieg procesu decyzyjnego w kodzie lub oprogramowaniu, a LLM służy do wyboru ścieżki, którą ma podążyć program.

  • Są bliższe tradycyjnym systemom informatycznym, ponieważ mają jasno określone i przewidywalne ścieżki, co przekłada się na bardziej spójne wyniki.

  • Idealnie nadają się do ściśle zdefiniowanych zadań.

Poniżej przedstawiono uproszczony przykład agenta do rezerwacji lotów, który wykorzystuje „podejście oparte na routerze”. LLM pomaga sklasyfikować intencję pytania jako jedną z trzech możliwości, lecz to oprogramowanie ostatecznie przypisuje ją do szablonu odpowiedzi tekstowej. Ponieważ działanie LLM jest ściśle ograniczone, użytkownik otrzymuje bardziej spójne odpowiedzi.

Diagram ilustrujący różnicę między routerem a orkiestratorem.

Architektury orkiestratorów

W przeciwieństwie do systemów opartych na routerze systemy agentowe z orkiestratorem:

  • Definiują przepływy logiczne za pomocą poleceń w języku naturalnym zamiast w oprogramowaniu. Uwaga: w porównaniu z językiem programowania język naturalny jest z natury niejednoznaczny i elastyczny — ma to zarówno zalety, jak i wady, które omówimy później. Określamy to jako „intencję zamiast instrukcji”.

  • Mogą udostępniać wiele sposobów przetwarzania, a LLM ustala kolejność i metodę ich wykonania.

  • Mogą dynamicznie tworzyć nowe ścieżki logiczne, które trudno jawnie zdefiniować w oprogramowaniu.

  • Ta niejednoznaczność może prowadzić do niespójnych wyników, lecz gdy wszystko działa, efekt bywa wręcz „magiczny”.

Poniższy przykład pokazuje zastosowanie orkiestratora do tego samego uproszczonego problemu związanego z linią lotniczą. Zamiast pozostawiać wybór właściwej odpowiedzi oprogramowaniu, proces decyzyjny przekazuje się warstwie LLM. Mamy tu system wieloagentowy, w którym „główny” agent-orkiestrator wstępnie analizuje zapytanie użytkownika i przekazuje je agentowi zaprojektowanemu specjalnie do zmiany lotów, który ostatecznie udziela odpowiedzi.

W tym przykładzie warstwa LLM pełni funkcję klasyfikatora, routera i autora odpowiedzi. W przykładzie z routerem pełniła jedynie funkcję klasyfikatora, a resztę obsługiwało oprogramowanie.

Diagram ilustrujący różnicę między routerem a orkiestratorem.

Mocne strony i wyzwania architektur opartych na routerze

W miarę możliwości zalecamy stosowanie architektur opartych na routerze ze względu na następujące zalety:

  • Szybkość i wydajność: obliczenia lokalne są szybsze niż działanie orkiestratorów zależnych od zewnętrznych interfejsów API. Przetwarzanie logiki „IF/ELSE” w Pythonie jest również znacznie tańsze niż płacenie dostawcy LLM za przepuszczenie jej przez model z 400 miliardami parametrów.

  • Testowalność i przewidywalność: debugowanie, testowanie i utrzymanie są znacznie łatwiejsze dzięki sprawdzonym praktykom programistycznym.

  • Przejrzystość i niezawodność: mniejsza zmienność zachowania ułatwia rozwiązywanie problemów. Większa część przepływu aplikacji jest ponadto zapisana w przejrzystym oprogramowaniu objętym kontrolą wersji, a nie w nieprzejrzystych i trudnych do interpretacji wagach LLM.

Wadą podejść opartych na routerze jest ich sztywność i ograniczona elastyczność, przez co gorzej radzą sobie z bardziej otwartymi problemami. Chatbot, który zawsze udziela dokładnie tych samych odpowiedzi, może być postrzegany przez użytkowników jako nudny lub niezmienny.

Mocne strony i wyzwania architektur orkiestratorów

Architektury orkiestratorów oferują zaawansowane możliwości:

  1. Planowanie: mogą dynamicznie planować odpowiedzi.

  2. Wybór narzędzi i przekazywanie zadań agentom: wybierają odpowiednie narzędzia lub delegują zadania agentom.

  3. Iteracyjne łączenie wyników: wielokrotnie przetwarzają i kreatywnie łączą wyniki.

  4. Ustalanie zakończenia: określają, kiedy zebrano wystarczająco dużo informacji, aby sfinalizować odpowiedź.

Platformy takie jak Pydantic-AI czy Agents SDK firmy OpenAI pozwalają szybko i łatwo wdrożyć orkiestrację. Dlatego rozwiązanie to świetnie nadaje się do demonstracji i tworzenia weryfikacji koncepcji.

Podejście to ma jednak następujące wady:

  • Nie ma gwarancji, że etapy planowania wykonywane przez LLM i wynikające z nich działania będą poprawne lub odpowiednie. System oparty na routerze ma ten sam problem, ale ze względu na większe ograniczenia jego zachowanie jest bardziej przewidywalne.

  • W przypadku prostych, dobrze zdefiniowanych zadań pełne możliwości systemu wieloagentowego prawdopodobnie nie są potrzebne. Na przykład w naszym agencie linii lotniczej istnieje zapewne tylko ograniczona liczba typów zapytań, które użytkownik rzeczywiście chce kierować do systemu obsługi klienta.

  • Ponieważ LLM zawiera więcej logiki, jest znacznie bardziej podatny na obchodzenie zabezpieczeń i inne nadużycia ze strony atakujących.

  • Przeniesienie procesu decyzyjnego do LLM utrudnia zrozumienie systemu, choć narzędzia monitorujące, takie jak Langfuse czy Braintrust, mogą częściowo w tym pomóc.

Nasze wskazówki dotyczące projektowania systemów agentowych

Uwaga dla czytelnika: choć możliwości modeli szybko się zmieniają, poniższe zalecenia prawdopodobnie pozostaną aktualne w najbliższej przyszłości.

Poznaj decyzje wymagane w aplikacji

Określ zakres problemu.

  • Czy możesz łatwo przedstawić oczekiwaną logikę decyzyjną na diagramie?

  • Czy awarie lub nieoczekiwane zachowanie aplikacji są dla Ciebie nieakceptowalne?

Odpowiedź „tak” na którekolwiek z powyższych pytań przemawia za zastosowaniem mechanizmów routera.

Najpierw router, potem podejścia hybrydowe

W miarę możliwości zalecamy korzystanie z routera tak długo, jak jest to wystarczające. Ogólna zasada brzmi: jeśli część systemu można zapisać w kodzie, należy to zrobić — nie warto nadużywać LLM, gdy nie są potrzebne.

Po osiągnięciu granic tego podejścia niektóre zalety otwartego działania orkiestratorów można odtworzyć w kontrolowany sposób. Na przykład:

  1. Wybór narzędzi i przekazywanie zadań agentom: można łatwo wdrożyć za pomocą rozgałęzień warunkowych lub klasyfikatorów LLM.

  2. Ustalanie zakończenia: proste klasyfikatory LLM mogą sprawdzić kompletność odpowiedzi przed przekazaniem jej użytkownikowi.

„Planowanie” i „iteracyjne łączenie wyników” jest jednak niewątpliwie znacznie trudniejsze do osiągnięcia w sztywnym systemie opartym na routerze. Gdy zadanie wymaga tych funkcji — zgodnie z oceną klasyfikatora LLM lub innej logiki — sugerujemy utworzenie w systemie mniej ograniczonej gałęzi orkiestratora.

Podsumowanie i perspektywy na przyszłość

Wybór między architekturą routera a orkiestratora powinien zależeć od tego, jak jasno zdefiniowana i złożona jest aplikacja oraz jaki styl interakcji oferuje. Podejścia oparte na routerze zapewniają obecnie niezawodność, wydajność i łatwość testowania jasno zdefiniowanych zadań. Orkiestratory oferują większą elastyczność w szerszych interakcjach konwersacyjnych.

Wraz z rozwojem LLM proporcje między tymi podejściami mogą się zmieniać. W przypadku obciążeń produkcyjnych skłaniamy się ku architekturom opartym na routerze lub rozwiązaniom hybrydowym, a orkiestratory pozostawiamy do otwartych problemów wymagających dynamicznej interakcji przypominającej kontakt z człowiekiem.

Autor

Andrew Liubinas