Pola desain sistem agen

Agen GenAI menggabungkan kecerdasan model GenAI dengan alat untuk pengambilan data, tindakan eksternal, dan kemampuan lainnya. Halaman ini menjelaskan desain agen:

  • Contoh konkret membangun suatu sistem agen menggambarkan cara mengatur bagaimana panggilan model dan alat terkoordinasi.
  • Pola desain untuk sistem agen membentuk kontinum kompleksitas dan otonomi, dari rantai deterministik, melalui sistem agen tunggal yang dapat membuat keputusan dinamis, hingga arsitektur multi-agen yang mengoordinasikan beberapa agen khusus.
  • Bagian saran praktis memberikan saran tentang memilih desain yang tepat dan tentang mengembangkan agen, pengujian, dan pindah ke produksi.

Agen sangat bergantung pada alat untuk mengumpulkan informasi dan mengambil tindakan eksternal. Untuk latar belakang selengkapnya tentang alat, lihat Alat.

Contoh sistem agen

Untuk contoh konkret sistem agen, pertimbangkan agen GenAI pusat panggilan yang berinteraksi dengan pelanggan:

Diagram alur interaksi pelanggan dengan aplikasi GenAI.

Pelanggan membuat permintaan: "Bisakah Anda membantu saya mengembalikan pesanan terakhir saya?"

  1. Alasan dan rencana: Mengingat niat kueri, agen "merencanakan": "Cari pesanan terbaru pengguna dan periksa kebijakan pengembalian kami."
  2. Menemukan informasi (kecerdasan data): Agen meminta database pesanan untuk mengambil pesanan yang relevan dan mereferensikan dokumen kebijakan.
  3. Alasan: Agen memeriksa apakah pesanan tersebut cocok di jendela pengembalian.
    • Human-in-the-loop opsional: Agen memeriksa aturan tambahan berikut: Jika item termasuk dalam kategori tertentu yang ditentukan atau berada di luar masa pengembalian normal, lakukan eskalasi ke manusia.
  4. Action: Agen memicu proses pengembalian dan menghasilkan label pengiriman.
  5. Reason: Agen menghasilkan respons terhadap pelanggan.

Agen AI menanggapi pelanggan: "Selesai! Berikut adalah label pengiriman Anda ..."

Langkah-langkah ini sudah menjadi kebiasaan dalam konteks pusat panggilan manusia. Dalam konteks sistem agen, LLM "berpikir logis" sementara sistem memanggil alat khusus atau sumber data untuk melengkapi rincian.

Alat dan sumber data yang digunakan sistem agen.

Tingkat kompleksitas: Dari LLM hingga sistem agen

Aplikasi GenAI dapat didukung oleh berbagai sistem, mulai dari panggilan LLM sederhana hingga sistem multi-agen yang kompleks. Saat membangun aplikasi yang didukung AI, mulailah dengan sederhana. Perkenalkan perilaku agenik yang lebih kompleks ketika Anda benar-benar membutuhkannya untuk fleksibilitas yang lebih baik atau keputusan berbasis model. Rantai deterministik menawarkan alur berbasis aturan yang dapat diprediksi untuk tugas yang terdefinisi dengan baik. Pendekatan yang lebih agenik menawarkan fleksibilitas dan potensi yang lebih besar, tetapi mereka datang dengan biaya kompleksitas ekstra dan latensi potensial.

Pola Desain Kapan Harus Digunakan Keuntungan Kontra
LLM + prompt
  • Pertanyaan dan jawaban umum
  • Prototipe cepat untuk penggunaan jangka pendek
  • Sangat sederhana
  • Mudah dibuat
  • Kustomisasi minimal
rantai deterministik
  • Tugas yang terdefinisi dengan baik
  • Alur statis seperti RAG dasar
  • Tidak perlu keputusan secara seketika
  • Simple
  • Mudah diaudit
  • Tidak fleksibel
  • Memerlukan perubahan kode untuk beradaptasi
sistem agen tunggal
  • Kueri tingkat sedang hingga kompleks dalam domain yang sama
  • Beberapa keputusan dinamis tanpa beban tambahan dari berbagai agen khusus
  • Flexibel
  • Lebih sederhana dari multi-agen
  • "Default" yang baik
  • Kurang dapat diprediksi
  • Harus waspada terhadap panggilan alat yang berulang atau salah
sistem multi-agen
  • Domain besar atau lintas fungsi
  • Beberapa agen "ahli", dengan konteks logika atau percakapan yang berbeda
  • Sangat modular
  • Menskalakan ke domain besar
  • Kompleks untuk mengorkestrasi
  • Lebih sulit dilacak dan di-debug

Agent Framework bersifat agnostik terhadap pola-pola ini, sehingga mudah untuk memulai dengan sederhana dan berevolusi menuju tingkat otomatisasi dan otonomi yang lebih tinggi seiring berkembangnya persyaratan aplikasi Anda.

Untuk membaca selengkapnya tentang teori di balik sistem agen, lihat posting blog dari pendiri Databricks:

LLM dan prompt

Desain paling sederhana memiliki LLM mandiri atau model GenAI lainnya yang merespons permintaan berdasarkan pengetahuan dari himpunan data pelatihan yang luas. Desain ini bagus untuk kueri sederhana atau umum tetapi sering terputus dari data bisnis dunia nyata Anda. Anda dapat menyesuaikan perilaku dengan memberikan permintaan sistem dengan instruksi kustom atau data yang disematkan.

LLM merespons pengguna

Rantai deterministik (langkah-langkah berkode keras)

Rantai deterministik menambah model GenAI dengan panggilan alat, tetapi pengembang menentukan alat atau model mana yang dipanggil, dalam urutan apa, dan dengan parameter mana. LLM tidak membuat keputusan tentang alat mana yang akan dipanggil atau dalam urutan apa. Sistem mengikuti alur kerja atau "rantai" yang telah ditentukan sebelumnya untuk semua permintaan, membuatnya sangat dapat diprediksi.

Misalnya, rantai Retrieval Augmented Generation (RAG) deterministik mungkin selalu:

  1. Ambil hasil top-k dari indeks vektor untuk menemukan konteks yang relevan dengan permintaan pengguna.
  2. Tingkatkan permintaan dengan menggabungkan permintaan pengguna dengan konteks yang diambil.
  3. Hasilkan respons dengan mengirim perintah tambahan ke LLM.

Diagram rantai RAG dasar

Kapan menggunakan:

  • Untuk tugas yang ditentukan dengan baik dengan alur kerja yang dapat diprediksi.
  • Ketika konsistensi dan audit adalah prioritas utama.
  • Untuk meminimalkan latensi atau waktu respons, hindari melakukan beberapa panggilan LLM untuk keputusan orkestrasi.

Keunggulan :

  • Tingkat prediktabilitas dan auditabilitas tertinggi.
  • Biasanya latensi lebih rendah (panggilan LLM lebih sedikit untuk orkestrasi).
  • Lebih mudah diuji dan divalidasi.

Pertimbangan :

  • Fleksibilitas terbatas untuk menangani permintaan yang beragam atau tidak terduga.
  • Dapat menjadi kompleks dan sulit untuk dipertahankan saat cabang logika tumbuh.
  • Dapat memerlukan pemfaktoran ulang yang signifikan untuk mengakomodasi kemampuan baru.

Sistem agen tunggal

Sistem agen tunggal memiliki LLM yang mengatur satu alur logika terkoordinasi. LLM secara adaptif memutuskan alat mana yang akan digunakan, kapan harus melakukan lebih banyak panggilan LLM, dan kapan harus berhenti. Pendekatan ini mendukung keputusan dinamis yang sadar konteks.

Sistem agen tunggal dapat:

  1. Terima permintaan seperti kueri pengguna dan konteks yang relevan seperti riwayat percakapan.
  2. Pertimbangkan cara terbaik untuk merespons, secara opsional memutuskan apakah akan memanggil alat untuk data eksternal atau tindakan.
  3. Iterasi jika diperlukan, memanggil LLM atau alat berulang kali hingga tujuan tercapai atau kondisi tertentu terpenuhi, seperti menerima data yang valid atau menyelesaikan kesalahan.
  4. Integrasikan output alat ke dalam percakapan.
  5. Menghasilkan respons yang kohesif sebagai keluaran.

Misalnya, agen asisten staf dukungan mungkin beradaptasi sebagai berikut:

  • Jika pengguna mengajukan pertanyaan sederhana ("Apa kebijakan pengembalian kami?"), agen mungkin merespons langsung dari pengetahuan LLM.
  • Jika pengguna menginginkan status pesanan mereka, agen mungkin memanggil fungsi lookup_order(customer_id, order_id). Jika alat tersebut merespons dengan "nomor pesanan yang tidak valid", agen dapat mencoba kembali atau meminta ID yang benar kepada pengguna, melanjutkan hingga dapat memberikan jawaban akhir.

Agen AI merasialisasi rencana dan menjalankannya dengan alat.

Kapan menggunakan:

  • Anda mengharapkan kueri pengguna yang bervariasi tetapi masih berada dalam domain atau area produk yang kohesif.
  • Kueri atau kondisi tertentu dapat menjamin penggunaan alat seperti memutuskan kapan harus mengambil data pelanggan.
  • Anda menginginkan lebih banyak fleksibilitas daripada rantai deterministik tetapi tidak memerlukan agen khusus terpisah untuk tugas yang berbeda.

Keunggulan :

  • Agen dapat beradaptasi dengan kueri baru atau tidak terduga dengan memilih alat (jika ada) mana yang akan dipanggil.
  • Agen dapat mengulangi panggilan LLM atau pemanggilan alat berulang kali untuk menyempurnakan hasil - tanpa perlu pengaturan multi-agen yang lengkap.
  • Pola desain ini sering kali menjadi solusi tepat untuk kasus penggunaan perusahaan - lebih sederhana untuk memperbaiki kesalahan daripada pengaturan multi-agen sambil tetap memungkinkan logika dinamis dan otonomi yang terbatas.

Pertimbangan :

  • Dibandingkan dengan rantai kode tetap, Anda harus berjaga-jaga terhadap panggilan alat yang berulang atau tidak valid. Perulangan tak terbatas dapat terjadi dalam skenario panggilan alat apa pun, jadi atur batas perulangan atau batas waktu habis.
  • Jika aplikasi Anda meliputi sub-domain yang sangat berbeda (keuangan, devops, pemasaran, dll.), satu agen dapat menjadi sulit dikelola atau kelebihan beban dengan persyaratan fungsi.
  • Anda masih memerlukan perintah dan batasan yang dirancang dengan hati-hati untuk menjaga agen tetap fokus dan relevan.
  • Agensi adalah kontinum; semakin banyak kebebasan Anda menyediakan model untuk mengontrol perilaku sistem, semakin agenik aplikasi menjadi. Dalam praktiknya, sebagian besar sistem produksi dengan hati-hati membatasi otonomi agen untuk memastikan kepatuhan dan prediksi, misalnya dengan memerlukan persetujuan manusia untuk tindakan berisiko.

Sistem multi-agen

Sistem multi-agen melibatkan dua atau beberapa agen khusus yang bertukar pesan atau berkolaborasi dalam tugas. Setiap agen memiliki domain atau keahlian tugas, konteks, dan set alat yang berpotensi berbeda. "Koordinator" atau "pengawas AI" terpisah mengarahkan permintaan ke agen yang sesuai, atau memutuskan kapan harus menyerahkan dari satu agen ke agen lain. Supervisor dapat berupa LLM lain atau router berbasis aturan.

Koordinator mengelola beberapa agen AI.

Misalnya, asisten pelanggan mungkin memiliki supervisor yang mendelegasikan ke agen khusus:

  • Asisten belanja: Membantu pelanggan mencari produk dan memberikan saran tentang pro dan kontra dari ulasan
  • Agen dukungan pelanggan: Menangani umpan balik, pengembalian, dan pengiriman

Kapan menggunakan:

  • Anda memiliki area masalah atau set keterampilan yang berbeda seperti agen pengkodian atau agen keuangan.
  • Setiap agen memerlukan akses ke riwayat percakapan atau perintah khusus domain.
  • Anda memiliki begitu banyak alat sehingga memasukkan semuanya ke dalam skema satu agen menjadi tidak praktis; setiap agen dapat memiliki bagian dari alat-alat tersebut.
  • Anda ingin menerapkan refleksi, kritik, atau kolaborasi bolak-balik di antara agen khusus.

Keunggulan :

  • Pendekatan modular ini berarti setiap agen dapat dikembangkan atau dikelola oleh tim terpisah, yang mengkhususkan diri dalam domain sempit.
  • Dapat menangani alur kerja perusahaan yang besar dan kompleks yang mungkin sulit dikelola oleh satu agen secara kohesif.
  • Memfasilitasi penalaran multi-langkah atau multi-perspektif lanjutan - misalnya, satu agen menghasilkan jawaban, yang lain memverifikasinya.

Pertimbangan :

  • Memerlukan strategi untuk perutean antar agen, ditambah biaya tambahan untuk pencatatan log, pelacakan, dan penelusuran kesalahan di beberapa titik akhir.
  • Jika Anda memiliki banyak sub-agen dan alat, itu bisa menjadi rumit untuk memutuskan agen mana yang memiliki akses ke data atau API mana.
  • Agen dapat bertukar-tukar tugas selamanya di antara mereka sendiri tanpa resolusi jika tidak dibatasi dengan hati-hati. Risiko loop tak terbatas juga ada dalam pemanggilan alat oleh agen tunggal, tetapi pengaturan multi-agen menambahkan lapisan kompleksitas tambahan pada debugging.

Saran praktis

Jika kasus penggunaan Anda dapat ditangani menggunakan Asisten Pengetahuan atau penawaran fungsi AI , maka mulailah dengan opsi yang dipandu dan lebih sederhana tersebut.

Jika Anda perlu membangun sistem agen kustom, maka Azure Databricks dan Mosaic AI Agent Framework adalah agnostik dari pola apa pun yang Anda pilih, sehingga mudah untuk mengembangkan pola desain saat aplikasi Anda tumbuh. Pertimbangkan praktik terbaik berikut untuk mengembangkan sistem agen yang stabil dan dapat dipertahankan:

  1. Mulai sederhana: Jika Anda hanya membutuhkan rantai yang mudah, rantai deterministik akan cepat dibangun.
  2. Secara bertahap menambahkan kompleksitas: Saat Anda membutuhkan kueri yang lebih dinamis atau sumber data fleksibel, pindah ke sistem agen tunggal dengan panggilan alat. Jika Anda memiliki domain atau tugas yang jelas berbeda, beberapa konteks percakapan, atau set alat besar, maka pertimbangkan sistem multi-agen.
  3. Gabungkan pola: Dalam praktiknya, banyak sistem agen dunia nyata menggabungkan pola. Misalnya, sebagian besar rantai deterministik dapat memiliki satu langkah di mana LLM dapat secara dinamis memanggil API tertentu jika diperlukan.

Panduan pengembangan

  • Petunjuk dan alat
    • Jaga agar permintaan tetap jelas dan minimal untuk menghindari instruksi yang bertentangan, informasi yang mengalihkan perhatian, dan mengurangi halusinasi.
    • Berikan hanya alat dan konteks yang diperlukan agen Anda, bukan sekumpulan API yang tidak terbatas atau konteks besar yang tidak relevan. Pilih pendekatan penggunaan alat selama desain.
  • Pengelogan dan pengamatan
    • Terapkan pengelogan terperinci untuk setiap permintaan pengguna, paket agen, dan panggilan alat menggunakan MLflow Tracing.
    • Simpan log dengan aman dan perhatikan informasi identitas pribadi (PII) dalam data percakapan. Pertimbangkan Klasifikasi Data untuk otomatisasi.

Panduan pengujian dan perulangan

  • Evaluasi
  • Penanganan kesalahan dan logika fallback
    • Persiapkan diri untuk kegagalan alat atau LLM. Waktu habis, respons cacat, atau hasil kosong dapat merusak alur kerja. Sertakan strategi ulang, logika pemulihan, atau rantai pemulihan yang lebih sederhana saat fitur canggih gagal.
  • Peningkatan berulang
    • Harap memperbaiki permintaan dan logika agen seiring waktu. Perubahan versi menggunakan MLflow Prompt Registry untuk perintah dan pelacakan versi aplikasi MLflow untuk aplikasi Anda. Penggunaan versi akan menyederhanakan operasi dan memungkinkan pembatalan dan perbandingan.
    • Saat Anda mengumpulkan data evaluasi dan menentukan metrik, pertimbangkan metode pengoptimalan yang lebih otomatis seperti Pengoptimalan Prompt MLflow.

Panduan produksi

  • Pembaruan model dan penyematan versi
    • Perilaku LLM dapat bergeser saat penyedia memperbarui model di belakang layar. Gunakan penyematan versi dan pengujian regresi yang sering untuk memastikan logika agen Anda tetap kuat dan stabil.
  • Latensi dan pengoptimalan biaya
    • Setiap LLM atau panggilan alat tambahan meningkatkan penggunaan token dan waktu respons. Jika memungkinkan, gabungkan langkah-langkah atau simpan kueri berulang dalam cache untuk menjaga performa dan biaya tetap terkelola.
  • Keamanan dan sandboxing
    • Jika agen Anda dapat memperbarui rekaman atau menjalankan kode, isolasi tindakan tersebut atau berlakukan persetujuan manusia jika diperlukan. Ini sangat penting di perusahaan atau lingkungan yang diatur untuk menghindari bahaya yang tidak diinginkan. Fungsi Unity Catalog menyediakan eksekusi terisolasi untuk produksi.
    • Lihat Alat agen AI untuk panduan selengkapnya tentang opsi alat.

Dengan mengikuti panduan ini, Anda dapat mengurangi banyak mode kegagalan paling umum seperti kesalahan pemanggilan alat, penurunan performa LLM, atau lonjakan biaya yang tidak terduga, dan membangun sistem agen yang lebih andal dan dapat diskalakan.