Google’s Agent Development Kit (ADK) oferuje dwa główne sposoby zarządzania zadaniami.
Dynamiczne routowanie wieloagentowe
W modelu routowania centralny koordynator odbiera żądanie użytkownika i przekazuje je wyspecjalizowanym agentom. Koordynator decyduje, który specjalista powinien podjąć działanie, specjalista wykonuje swoją część pracy, a następnie kontrola wraca do elementu nadrzędnego.
- Jak to działa – Koordynator wybiera specjalistę, przekazuje mu zadanie, a następnie czeka na odpowiedź, zanim przejdzie dalej.
- Zalety – Elastyczność. Ponieważ LLM wybiera ścieżkę w czasie rzeczywistym (runtime), system adaptuje się do nowych lub nieoczekiwanych danych wejściowych bez konieczności przepisywania przepływu.
- Wady – Każdy skok dodaje narzut sieciowy i procesowy, co powoduje wzrost opóźnień w porównaniu z liniowym potokiem (pipeline).
Sekwencyjne pętle przepływu pracy
Model pętli zastępuje koordynatora pojedynczym agentem LoopAgent, który przechodzi przez z góry określoną sekwencję kroków, współdzieląc zmienny stan sesji.
- Jak to działa – Agenci odczytują współdzielony klucz, aktualizują go i przekazują kontrolę do następnego kroku, aż sekwencja dobiegnie końca.
- Zalety – Przewidywalność. Kolejność nigdy się nie zmienia, co sprawia, że debugowanie i optymalizacja wydajności są proste.
- Wady – Sztywność. Każda potrzeba odstępstwa od ustalonej kolejności wymusza przeprojektowanie pętli.
Praktyczny test: Parser wyrażeń matematycznych
Aby zobaczyć te wzorce w działaniu, zbudowaliśmy prosty parser, który ocenia wyrażenia arytmetyczne przy użyciu czterech wyspecjalizowanych agentów: adder, subtracter, multiplier oraz divider.
Lekcje z pętli przepływu pracy
- Zapobieganie nieskończonym pętlom – Poleciliśmy każdemu agentowi wypisanie tekstu i natychmiastowe zakończenie swojej tury po zaktualizowaniu współdzielonego stanu. Bez tego zabezpieczenia pętla mogłaby kręcić się w nieskończoność.
- Zachowanie logiki matematycznej – Agentowi adder przekazaliśmy wyraźne instrukcje dotyczące przestrzegania kolejności działań, aby zapobiec łamaniu zasad odejmowania.
- Unikanie cichych wyjść – Zmusiliśmy agentów do wypisania końcowego wyniku przed wywołaniem narzędzia wyjścia (exit tool), dzięki czemu użytkownik widzi rezultat zamiast nagłego przerwania działania.
Obsługa błędów
Przed agentem divider dodaliśmy zabezpieczenie przed dzieleniem przez zero. Zabezpieczenie to najpierw sprawdza dzielnik; jeśli wynosi on zero, wstrzymuje proces, chroniąc cały system przed wyjątkiem w czasie wykonywania (runtime exception).
Który wzorzec pasuje do Twojego projektu?
- Wybierz routowanie wieloagentowe, gdy zadania ewoluują na bieżąco, dane wejściowe znacznie się różnią lub gdy potrzebujesz, aby LLM decydował o wyborze najlepszego specjalisty w czasie rzeczywistym. Kosztem jest wyższe opóźnienie, ale system radzi sobie z nieprzewidzianymi scenariuszami bez zmian w kodzie.
- Wybierz pętle przepływu pracy, gdy masz dobrze zdefiniowany potok — na przykład czyszczenie, transformację i agregację danych — gdzie każdy krok musi odbywać się w ściśle określonej kolejności. Korzyścią jest niższe opóźnienie i łatwiejsze debugowanie, kosztem braku możliwości dynamicznego rozgałęziania się.
