Kucharskie koszmary: Edycja agentów LangChain

Zbudowałem aplikację zdrowotną do analizowania przepisów i tworzenia planów posiłków.

Do aplikacji webowej użyłem FastAPI i React. Do agentów wykorzystałem LangChain. Do monitorowania działań moich agentów użyłem LangSmith.

Cel był prosty. Użytkownik podaje URL. Aplikacja pobiera przepis i dzieli go na komponenty, takie jak dania główne, dodatki i sosy. Użytkownicy mogą następnie dowolnie je łączyć, aby tworzyć posiłki lub śledzić kalorie.

Napotkałem poważny problem z niezawodnością agentów.

Początkowo użyłem jednego agenta do grupowania przepisu i formatowania wyjścia. Ciągle się mylił. Generował duplikaty pozycji. Pomijał instrukcje. Łączył wszystko w jeden wielki blok tekstu.

Aby to naprawić, spróbowałem konfiguracji z dwoma agentami:

  • Agent 1 (Grupowanie): Znajduje różne komponenty przepisu oraz porządkuje składniki i instrukcje.
  • Agent 2 (Strukturyzacja): Pobiera ten uporządkowany tekst i zamienia go na czysty format JSON.

To działało przez jeden dzień. Następnego dnia błędy powróciły. Agent strukturyzujący zaczął zwracać JSON, w którym brakowało wszystkich składników i instrukcji.

Przestałem używać instrukcji print i zacząłem korzystać z LangSmith.

LangSmith pokazuje mi opóźnienia (latency), zużycie tokenów oraz koszty. Co najważniejsze, pokazuje mi dokładnie, w którym miejscu łańcuch (chain) ulega przerwaniu.

W moim przypadku agent grupujący działał idealnie. Generował świetny markdown ze wszystkimi szczegółami. Awaria miała miejsce w drugim agencie. Tracił on dane podczas transformacji.

Obecnie pracuję nad trzema poprawkami:

  • Poprawa niezawodności agentów: Zauważyłem, że agent strukturyzujący próbuje zgadnąć pole cuisine, którego nie było w oryginalnym prompcie. To zamieszanie powoduje błędy.
  • Dodanie walidacji: Użyję funkcji Python, aby sprawdzać wyjście. Chcę mieć pewność, że markdown jest poprawny i nie ma duplikatów.
  • Lepsza obserwowalność: Chcę powiązać każde wykonanie agenta z konkretnym żądaniem użytkownika, aby ułatwić śledzenie (tracing).

Budowanie z użyciem agentów nie jest zadaniem jednorazowym. To ciągła pętla testowania i naprawiania.

Źródło: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi