Mutfak Kabusları: LangChain Ajanlar Versiyonu

Tarifleri ayrıştırmak ve öğün planları oluşturmak için bir sağlık uygulaması geliştirdim.

Web uygulaması için FastAPI ve React kullandım. Ajanlar için LangChain kullandım. Ajanlarımın ne yaptığını görmek için LangSmith kullandım.

Hedef basitti. Kullanıcı bir URL sağlar. Uygulama tarifi çeker ve onu ana yemekler, garnitürler ve soslar gibi bileşenlere ayırır. Kullanıcılar daha sonra öğün oluşturmak veya kalori takibi yapmak için bunları karıştırıp eşleştirebilirler.

Ajan güvenilirliği konusunda büyük bir sorunla karşılaştım.

İlk başta, tarifi gruplandırmak ve çıktıyı formatlamak için tek bir ajan kullandım. Sürekli hata veriyordu. Yinelenen öğeler oluşturuyordu. Talimatları atlıyordu. Her şeyi devasa bir blok halinde birleştiriyordu.

Bunu düzeltmek için çift ajanlı bir kurulum denedim:

  • Ajan 1 (Gruplandırma): Farklı tarif bileşenlerini bulur, malzemeleri ve talimatları düzenler.
  • Ajan 2 (Yapılandırma): Düzenlenmiş metni alır ve temiz bir JSON formatına dönüştürür.

Bu bir gün işe yaradı. Ertesi gün hatalar geri döndü. Yapılandırma ajanı, tüm malzemeleri ve talimatları eksik bırakan JSON'lar döndürmeye başladı.

Print ifadelerini kullanmayı bıraktım ve LangSmith kullanmaya başladım.

LangSmith bana gecikme süresini, token kullanımını ve maliyeti gösteriyor. En önemlisi, zincirin tam olarak nerede koptuğunu gösteriyor.

Benim durumumda, gruplandırma ajanı mükemmel çalışıyordu. Tüm detayları içeren harika markdown çıktıları üretiyordu. Hata ikinci ajanda meydana geliyordu. Dönüşüm sırasında veri kaybediyordu.

Şimdi üç düzeltme üzerinde çalışıyorum:

  • Ajan güvenilirliğini artırmak: Yapılandırma ajanının, orijinal istemde (prompt) bulunmayan bir mutfak (cuisine) alanını tahmin etmeye çalıştığını fark ettim. Bu kafa karışıklığı hatalara neden oluyor.
  • Doğrulama eklemek: Çıktıyı kontrol etmek için Python fonksiyonları kullanacağım. Markdown'ın doğru olduğundan ve yinelenen öğeler olmadığından emin olmak istiyorum.
  • Daha iyi gözlemlenebilirlik: İzlemeyi kolaylaştırmak için her ajan yürütmesini belirli bir kullanıcı isteğine bağlamak istiyorum.

Ajanlarla geliştirme yapmak tek seferlik bir görev değildir. Sürekli bir test etme ve düzeltme döngüsüdür.

Kaynak: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi