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
