Kitchen Nightmares: Edisi Agen LangChain
Saya membangun aplikasi kesehatan untuk mengurai resep dan membuat rencana makan.
Saya menggunakan FastAPI dan React untuk aplikasi web tersebut. Saya menggunakan LangChain untuk agen-agennya. Saya menggunakan LangSmith untuk melihat apa yang sedang dilakukan oleh agen-agen saya.
Tujuannya sederhana. Pengguna memberikan sebuah URL. Aplikasi akan mengambil resep tersebut dan membaginya menjadi komponen-komponen seperti hidangan utama, hidangan pendamping, dan saus. Pengguna kemudian dapat mencampur dan mencocokkan komponen ini untuk menyusun makanan atau melacak kalori.
Saya menghadapi masalah besar terkait keandalan agen.
Awalnya, saya menggunakan satu agen untuk mengelompokkan resep dan memformat outputnya. Agen tersebut terus-menerus gagal. Ia menghasilkan item duplikat. Ia melewatkan instruksi. Ia menggabungkan semuanya menjadi satu blok besar.
Saya mencoba pengaturan agen ganda untuk memperbaikinya:
- Agen 1 (Grouping): Menemukan berbagai komponen resep dan mengatur bahan-bahan serta instruksi.
- Agen 2 (Structuring): Mengambil teks yang sudah terorganisir tersebut dan mengubahnya menjadi format JSON yang bersih.
Ini berhasil selama satu hari. Keesokan harinya, kesalahan tersebut muncul kembali. Agen structuring mulai mengembalikan JSON yang kehilangan semua bahan dan instruksi.
Saya berhenti menggunakan pernyataan print dan mulai menggunakan LangSmith.
LangSmith menunjukkan latensi, penggunaan token, dan biaya kepada saya. Yang paling penting, ia menunjukkan dengan tepat di mana rantai (chain) tersebut terputus.
Dalam kasus saya, agen grouping bekerja dengan sempurna. Ia menghasilkan markdown yang bagus dengan semua detailnya. Kegagalan terjadi pada agen kedua. Ia kehilangan data selama proses transformasi.
Sekarang saya sedang mengerjakan tiga perbaikan:
- Meningkatkan keandalan agen: Saya menyadari bahwa agen structuring mencoba menebak field masakan yang tidak ada dalam prompt asli. Kebingungan ini menyebabkan kesalahan.
- Menambahkan validasi: Saya akan menggunakan fungsi Python untuk memeriksa output. Saya ingin memastikan markdown sudah benar dan tidak ada duplikat.
- Observabilitas yang lebih baik: Saya ingin menghubungkan setiap eksekusi agen ke permintaan pengguna tertentu agar pelacakan (tracing) menjadi lebih mudah.
Membangun dengan agen bukanlah tugas satu kali jalan. Ini adalah siklus pengujian dan perbaikan yang terus-menerus.
Sumber: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co
Komunitas belajar opsional: https://t.me/GyaanSetuAi
