Mimpi Ngeri Dapur: Edisi Ejen LangChain

Saya membina sebuah aplikasi kesihatan untuk menganalisis resipi dan mencipta pelan pemakanan.

Saya menggunakan FastAPI dan React untuk aplikasi web tersebut. Saya menggunakan LangChain untuk ejen-ejennya. Saya menggunakan LangSmith untuk melihat apa yang dilakukan oleh ejen saya.

Matlamatnya mudah. Pengguna memberikan satu URL. Aplikasi tersebut akan mengambil resipi dan membahagikannya kepada komponen seperti hidangan utama, sampingan, dan sos. Pengguna kemudian boleh mencampur dan memadankan komponen ini untuk membina hidangan atau menjejak kalori.

Saya menghadapi masalah besar dengan kebolehpercayaan ejen.

Pada mulanya, saya menggunakan satu ejen untuk mengelompokkan resipi dan memformat output. Ia sering gagal. Ia menghasilkan item pendua. Ia meninggalkan arahan. Ia menggabungkan segalanya menjadi satu blok besar.

Saya mencuba tetapan dwi-ejen untuk membaiki perkara ini:

  • Ejen 1 (Pengelompokan): Mencari komponen resipi yang berbeza dan menyusun bahan-bahan serta arahan.
  • Ejen 2 (Penyusunan): Mengambil teks yang telah disusun itu dan menukarkannya kepada format JSON yang bersih.

Ini berfungsi selama sehari. Keesokan harinya, ralat kembali muncul. Ejen penyusunan mula menghasilkan JSON yang kehilangan semua bahan dan arahan.

Saya berhenti menggunakan pernyataan print dan mula menggunakan LangSmith.

LangSmith menunjukkan kepada saya kependaman (latency), penggunaan token, dan kos. Yang paling penting, ia menunjukkan dengan tepat di mana rantaian (chain) tersebut terputus.

Dalam kes saya, ejen pengelompokan berfungsi dengan sempurna. Ia menghasilkan markdown yang hebat dengan semua butiran. Kegagalan berlaku pada ejen kedua. Ia kehilangan data semasa proses transformasi.

Kini saya sedang mengusahakan tiga pembaikan:

  • Tingkatkan kebolehpercayaan ejen: Saya perasan ejen penyusunan cuba meneka medan masakan (cuisine field) yang tidak ada dalam arahan (prompt) asal. Kekeliruan ini menyebabkan ralat.
  • Tambah pengesahan (validation): Saya akan menggunakan fungsi Python untuk menyemak output. Saya ingin memastikan markdown adalah betul dan tiada item pendua.
  • Kebolehlihatan (observability) yang lebih baik: Saya ingin menghubungkan setiap pelaksanaan ejen kepada permintaan pengguna yang khusus untuk memudahkan pengesanan (tracing).

Membina dengan ejen bukanlah tugas sekali jalan. Ia adalah satu kitaran berterusan untuk menguji dan membaiki.

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

Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi