Twoje agenty są w porządku. Przekazywanie zadań między nimi – już nie.

Większość demonstracji systemów wieloagentowych pokazuje pojedynczego agenta w przebraniu. Pokazują Agenta A wykonującego jedno zadanie, a następnie Agenta B wykonującego kolejne. Nie pokazują jednak tego, co się dzieje, gdy Agent A nie dostarczy Agentowi B tego, czego ten potrzebuje.

W tym roku wdrożyłem trzy systemy wieloagentowe na produkcję. Agenci nie byli najtrudniejszym elementem. Najtrudniejsze było przekazywanie zadań (handoffs).

Przekazanie zadania to coś więcej niż tylko przesłanie tekstu. Musisz zarządzać:

  • Zgodnością schematu: Agent B musi za każdym razem parsować wyjście Agenta A.
  • Propagacją błędów: System musi wiedzieć, kiedy jeden z agentów zawiedzie.
  • Higieną kontekstu: Każde przekazanie zadania dodaje szum do okna kontekstowego.

Największym błędem jest traktowanie agentów jak czarnych skrzynek połączonych sznurkiem. Wpisujesz prompt dla Agenta A, otrzymujesz wynik i wrzucasz go do Agenta B. To działa, dopóki się nie zepsuje. A kiedy się zepsuje, nie będziesz wiedzieć dlaczego.

Unikaj tych trzech typowych trybów awarii:

  1. Ciche ucinanie danych (Silent truncation): Agent A generuje zbyt dużo danych. Agent B ucina koniec. Następnie Agent B przetwarza niepełne dane i zwraca bezsensowne wyniki. Mierz liczbę tokenów na każdym etapie.

  2. Dryf schematu (Schema drift): Zmieniasz prompt dla Agenta A. Teraz zwraca on inny format. Agent B przestaje działać, ponieważ oczekuje starego formatu. Zamiast polegać na promptach, używaj ustrukturyzowanych wyjść, takich jak Pydantic.

  3. Wyścigi (Race conditions): Uruchamiasz pięciu pracowników jednocześnie. Trzech kończy pracę, ale dwóch wciąż działa. Twój agregator zaczyna zbyt wcześnie, korzystając z niepełnych danych. W testach to działa, ale na produkcji zawodzi. Użyj bariery, aby poczekać na wszystkie zadania.

Mój pierwszy system był pomysłowy, ale niechlujny. Wykorzystywał dynamiczne trasowanie i niejawne przekazywanie zadań. Działał, dopóki nie napotkał rzeczywistego ruchu i nie zawiódł w sposób cichy.

Mój drugi system był brzydki, ale poprawny. Każde przekazanie zadania opierało się na typowanym kontrakcie. Każdy błąd był jawny. Każdy agent był odizolowany.

Mój obecny system łączy oba podejścia. Wykorzystuje dyscyplinę drugiej wersji, ale ukrywa nudny kod za pomocą frameworka.

Jeśli budujesz systemy wieloagentowe, zacznij od wersji brzydkiej, ale poprawnej. Nie próbuj od razu być pomysłowy. Najpierw doprowadź do porządku działanie na produkcji, a dopiero potem spraw, by było eleganckie.

Problem przekazywania zadań nie staje się łatwiejszy. Ale przestajesz być nim zaskakiwany.

Source: https://dev.to/mrclaw207/your-agents-are-fine-the-handoff-between-them-isnt-2dij

Optional learning community: https://t.me/GyaanSetuAi