Wzorzec PRG dla agentów AI

Agenci AI napotykają stary problem. To ten sam błąd, który psuł formularze internetowe w latach 90.

W dawnych czasach internetowych użytkownik przesyłał formularz. Jeśli odświeżył stronę, przeglądarka ponownie przesyłała dane. Oznaczało to dwa zamówienia, dwie płatności lub dwa e-maile.

Rozwiązaniem był wzorzec Post/Redirect/Get (PRG).

Logika jest prosta:

  • Użytkownik wysyła żądanie POST.
  • Serwer przetwarza zadanie.
  • Serwer wysyła przekierowanie 302 (302 Redirect) pod nowy adres URL.
  • Przeglądarka podąża za przekierowaniem, wysyłając żądanie GET.

Odświeżenie ładuje teraz tylko stronę z wynikiem. Nie powtarza akcji.

Agenci AI przywrócili ten błąd na nowym poziomie.

Gdy agent wywołuje narzędzie, aby obciążyć kartę lub utworzyć rekord, coś idzie nie tak. Następuje przerwanie połączenia. Kontener restartuje się. Włącza się limit zapytań (rate limit). Agent nie wie, czy ostatnie wywołanie się powiodło. Dlatego ponawia próbę.

Bez poprawki agent tworzy duplikaty zamówień i obciąża karty zdenerwowanych klientów.

Musisz zastosować wzorzec PRG w swoich potokach agentowych (agentic pipelines), używając kluczy idempotencji.

Klucz idempotencji jest Twoim przekierowaniem. Oddziela on akcję od wyniku.

Jak to wdrożyć:

  • Każde narzędzie zmieniające stan (mutating tool) musi akceptować klucz idempotencji.
  • Wygeneruj klucz przed pierwszą próbą.
  • Wyznacz klucz na podstawie intencji użytkownika, a nie znacznika czasu.
  • Serwer musi sprawdzić, czy widział już ten klucz wcześniej.
  • Jeśli klucz istnieje, zwróć zapisany wynik zamiast ponownie uruchamiać zadanie.

W przypadku długotrwałych zadań potrzebujesz czegoś więcej niż tylko klucza. Potrzebujesz checkpointingu.

Checkpointing zapisuje stan na każdym kroku. Jeśli agent ulegnie awarii w połowie dwudziestominutowego zadania, wznowi pracę w miejscu, w którym przerwał. Nie zaczyna od nowa.

Jeśli możesz zrobić tylko jedną rzecz, spraw, aby każde wywołanie narzędzia było bezpieczne do dwukrotnego uruchomienia.

Buduj swoich agentów, stosując te pięć kontroli:

  • Czy każde narzędzie akceptuje klucz idempotencji?
  • Czy klucz opiera się na intencji, a nie na czasie?
  • Czy klucz jest ponownie używany przy każdej ponownej próbie?
  • Czy serwer zwraca zapisane wyniki dla duplikujących się kluczy?
  • Czy kroki pośrednie są zapisywane w przypadku długich zadań?

Wzorzec jest ten sam. Zmieniła się tylko warstwa.

Źródło: https://dev.to/ravikiran438/the-prg-pattern-for-ai-agents-a-25-year-old-fix-coming-of-age-in-a-new-era-23fh