Bisakah Anda membangun alur kerja agen tanpa memerlukan [model bahasa besar (LLM)] yang sangat besar dan mahal (https://www.ibm.com/id-id/think/topics/large-language-models)? Jawabannya adalah ya. Dalam tutorial ini, kami akan menunjukkan cara membangun sistem RAG multiagen setempat dengan AutoGen menggunakan IBM [Granite] (https://www.ibm.com/id-id/granite).
Retrieval-augmented generation (RAG) adalah cara yang efektif untuk menyediakan LLM dengan kumpulan data tambahan dari berbagai sumber data tanpa penyempurnaan yang mahal. Demikian pula dengan RAG agen, mereka memanfaatkan kemampuan agen AI untuk merencanakan dan melaksanakan subtugas bersama dengan pengambilan informasi yang relevan untuk melengkapi basis pengetahuan LLM. Kemampuan ini memungkinkan pengoptimalan dan skalabilitas aplikasi RAG yang lebih besar dibandingkan dengan chatbot tradisional. Kita tidak perlu lagi menulis SQL Query yang kompleks untuk mengekstrak data yang relevan dari basis pengetahuan.
Masa depan RAG agen adalah RAG multiagen, di mana beberapa agen khusus berkolaborasi untuk mencapai latensi dan efisiensi yang optimal. Kami akan mendemonstrasikan kolaborasi ini dengan menggunakan model kecil yang efisien seperti Granite 3.2 dan menggabungkannya dengan arsitektur agen modular. Kami akan menggunakan beberapa "agen mini" khusus yang berkolaborasi untuk menyelesaikan tugas melalui perencanaan adaptif dan pemanggilan alat atau fungsi. Seperti halnya manusia, tim agen atau sistem multiagen sering kali mengungguli upaya heroik seorang individu, terutama jika mereka memiliki peran yang diuraikan dengan jelas dan komunikasi yang efektif.
Untuk orkestrasi kolaborasi ini, kita bisa menggunakan AutoGen (AG2) sebagai kerangka kerja inti untuk mengelola alur kerja dan pengambilan keputusan, di samping alat lain seperti Ollama untuk penyajian LLM lokal dan Open WebUI untuk interaksi. AutoGen adalah kerangka kerja untuk membuat aplikasi AI multiagen yang dikembangkan oleh Microsoft.1 Patut dicatat bahwa setiap komponen yang digunakan dalam tutorial ini adalah sumber terbuka. Bersama-sama, semua alat ini memungkinkan Anda untuk membangun sistem AI yang kuat dan sadar privasi, tanpa meninggalkan laptop Anda.
Agen pengambilan Granite kami bergantung pada arsitektur modular di mana setiap agen memiliki peran khusus. Seperti halnya manusia, agen bekerja paling baik ketika mereka memiliki instruksi yang ditargetkan dan konteks yang cukup untuk membuat keputusan yang tepat. Terlalu banyak informasi tidak relevan, seperti riwayat obrolan yang tidak difilter, dapat menciptakan masalah "jarum di tumpukan jerami", di mana semakin sulit untuk membedakan sinyal dari ketidakakuratan.
Dalam arsitektur AI agen ini, agen bekerja sama secara berurutan untuk mencapai tujuan. Berikut adalah penataan sistem AI generatif:
Agen perencana: Membuat rencana tingkat tinggi awal, sekali di awal alur kerja. Misalnya, jika pengguna bertanya, "Apa proyek sumber terbuka yang sebanding dengan proyek yang digunakan tim saya?" kemudian, agen akan menyusun rencana langkah demi langkah yang mungkin terlihat seperti ini: “1. Cari teknologi sumber terbuka di dokumen tim. 2. Cari proyek sumber terbuka di web yang serupa dengan proyek yang ditemukan di langkah 1.” Jika salah satu dari semua langkah ini gagal atau memberikan hasil yang tidak mencukupi, langkah-langkah tersebut nantinya dapat disesuaikan oleh agen refleksi.
Asisten Peneliti: Asisten peneliti adalah pekerja keras dalam sistem ini. Alat ini mengambil dan mengeksekusi instruksi seperti “Cari teknologi sumber terbuka di dokumen tim.” Untuk langkah 1 dari rencana ini, ia menggunakan instruksi awal dari agen perencana. Untuk langkah selanjutnya, alat ini juga menerima konteks yang dikurasi dari hasil langkah sebelumnya.
Misalnya, jika diminta untuk “Cari proyek sumber terbuka serupa di web,” alat ini juga akan menerima output dari langkah pencarian dokumen sebelumnya. Bergantung pada instruksi, asisten peneliti dapat menggunakan alat bantu seperti pencarian web atau pencarian dokumen, atau keduanya, untuk memenuhi tugasnya.
Pengkritik langkah: Pengkritik langkah bertanggung jawab untuk memutuskan apakah output dari langkah sebelumnya telah memenuhi instruksi yang diberikan dengan memuaskan. Ia menerima dua informasi: instruksi satu langkah yang baru saja dieksekusi dan output dari instruksi tersebut. Memiliki pengkritik langkah dalam percakapan akan memberikan kejelasan tentang apakah tujuan tercapai, yang diperlukan untuk perencanaan langkah selanjutnya.
Penilai tujuan: Penilai tujuan menentukan apakah tujuan akhir telah tercapai, berdasarkan semua persyaratan dari tujuan yang diberikan, rencana yang disusun untuk mencapainya, dan informasi yang dikumpulkan sejauh ini. Output dari juri adalah "YA" atau "BELUM" diikuti dengan penjelasan singkat yang tidak lebih dari satu atau dua kalimat.
Agen refleksi: Agen refleksi adalah pengambil keputusan eksekutif kami. Alat ini memutuskan langkah apa yang harus diambil selanjutnya, apakah ia merambah ke langkah yang direncanakan berikutnya, berputar arah untuk menebus kesalahan, atau mengonfirmasi bahwa tujuan telah selesai. Seperti CEO dalam kehidupan nyata, ia melakukan pengambilan keputusan terbaiknya ketika memiliki tujuan yang jelas dalam pikirannya dan disajikan dengan temuan singkat tentang kemajuan yang telah atau belum dibuat untuk mencapai tujuan itu. Output dari agen refleksi adalah langkah selanjutnya yang harus diambil atau instruksi untuk mengakhiri jika tujuan telah tercapai. Kami memberikan item berikut kepada agen refleksi:
Menyajikan semua item ini dalam format yang terstruktur akan memperjelas alat pengambil keputusan tentang apa yang telah dilakukan sehingga mereka dapat memutuskan apa yang harus dilakukan selanjutnya.
Pembuat Laporan: Setelah tujuan tercapai, Pembuat Laporan menggabungkan semua temuan ke dalam output kohesif yang secara langsung menjawab kueri asli. Meskipun setiap langkah dalam proses ini menghasilkan output yang ditargetkan, Pembuat Laporan menyatukan semuanya ke dalam satu laporan akhir.
Untuk pemula, mungkin sulit untuk membangun aplikasi AI agen dari awal. Oleh karena itu, kami akan menggunakan seperangkat alat sumber terbuka. Agen Pengambilan Granite mengintegrasikan beberapa alat untuk RAG agen.
Open WebUI: Pengguna berinteraksi dengan sistem melalui antarmuka obrolan intuitif yang dihosting di Open WebUI. Antarmuka ini bertindak sebagai titik utama untuk mengirimkan kueri (seperti "Ambilkan saya artikel berita terbaru yang berkaitan dengan catatan proyek saya") dan melihat output.
Agen berbasis Python (kerangka kerja AG2): Inti dari sistem ini adalah agen berbasis Python yang dibangun menggunakan AutoGen (AG2). Agen ini mengoordinasikan alur kerja dengan memecah tugas dan memanggil alat secara dinamis untuk menjalankan langkah-langkah.
Agen ini memiliki akses ke dua alat utama:
Alat pencarian dokumen: Mengambil informasi yang relevan dari basis data vektor yang berisi catatan proyek yang diunggah atau dokumen yang disimpan sebagai penanaman. Pencarian vektor ini memanfaatkan API pengambilan dokumen bawaan di dalam Open WebUI, daripada menyiapkan penyimpanan data yang sepenuhnya terpisah.
Alat pencarian web: Melakukan pencarian berbasis web untuk mengumpulkan pengetahuan eksternal dan informasi real-time. Dalam hal ini, kami menggunakan SearXNG sebagai mesin pencari meta kami.
Ollama: IBM Granite 3.2 LLM berfungsi sebagai model bahasa yang mendukung sistem. Sistem dihosting secara setempat menggunakan Ollama, memastikan inferensi cepat, efisiensi biaya, dan privasi data. Jika Anda tertarik untuk menjalankan proyek ini dengan model yang lebih besar, akses API melalui IBM watsonx.ai atau OpenAI, misalnya, lebih disukai. Namun, pendekatan ini memerlukan kunci API watsonx.ai atau OpenAI. Sebagai gantinya, kami menggunakan Ollama yang dihosting secara setempat dalam tutorial ini.
Sumber terbuka umum lainnya, kerangka kerja agen yang tidak tercakup dalam tutorial ini termasuk LangChain, LangGraph, dan crewAI.
Petunjuk penyiapan terperinci serta seluruh proyek dapat dilihat di Komunitas IBM Granite di GitHub. Versi Jupyter Notebook dari tutorial ini juga dapat ditemukan di GitHub.
Langkah-langkah berikut memberikan pengaturan cepat untuk agen pengambilan Granite.
Menginstal Ollama semudah mengunduh klien dari situs resmi Ollama. Setelah menginstal Ollama, jalankan perintah berikut untuk mengambil Granite 3.2 LLM.
Anda sekarang aktif dan beroperasi dengan Ollama dan Granite.
Solusi low-code untuk membangun alur kerja agen adalah AutoGen Studio. Namun, membangun agen sederhana sendiri dapat membantu kita lebih memahami pengaturan proyek RAG multiagen yang lengkap ini. Untuk melanjutkan, siapkan Jupyter Notebook di lingkungan pengembangan terintegrasi (IDE) pilihan Anda dan aktifkan lingkungan virtual dengan menjalankan perintah berikut di terminal Anda.
python3.11 -m venv venv
source venv/bin/activate
Kita memerlukan beberapa pustaka dan modul untuk agen sederhana ini. Pastikan untuk menginstal dan mengimpor yang berikut ini.
!pip install -qU langchain chromadb tf-keras pyautogen "ag2[ollama]" sentence_transformers
import getpass
from autogen.agentchat.contrib.retrieve_assistant_agent import AssistantAgent
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent
Di sana terdapat beberapa parameter konfigurasi yang diatur setempat untuk memanggil LLM yang benar yang kami tarik menggunakan Ollama.
ollama_llm_config = {
"config_list": [
{
"model": "granite3.2:8b",
"api_type": "ollama",
}
],
}
Kita dapat memberikan parameter konfigurasi ini di parameter llm_config kelas AssistantAgent untuk membuat instans agen AI pertama kita.
assistant = AssistantAgent(
name="assistant",
system_message="You are a helpful assistant.",
llm_config=ollama_llm_config,
)
Agen ini menggunakan Granite 3.2 untuk menggabungkan informasi yang dihasilkan oleh agen ragproxyagent. Dokumen yang kami berikan kepada agen RAG sebagai konteks tambahan adalah file README Markdown mentah yang ada di repositori AutoGen di GitHub. Selain itu, kita dapat meneruskan kamus konfigurasi baru khusus untuk agen pengambilan. Beberapa kunci tambahan yang mungkin berguna bagi Anda adalah vector_db, chunk_token_size, dan embedding_model.
Untuk daftar lengkap kunci konfigurasi, lihat dokumentasi resmi.
ragproxyagent = RetrieveUserProxyAgent(
name="ragproxyagent",
max_consecutive_auto_reply=3,
is_termination_msg=lambda msg: msg.get("content") is not None or "TERMINATE" in msg["content"],
system_message = "Context retrieval assistant.",
retrieve_config={
"task": "qa",
"docs_path": "https://raw.githubusercontent.com/microsoft/autogen/main/README.md",
"get_or_create": True,
"collection_name": "autogen_docs",
"overwrite": True
},
code_execution_config=False,
human_input_mode="NEVER",
)
Sekarang, kita dapat memulai obrolan dengan agen RAG kita untuk mengajukan pertanyaan yang berkaitan dengan dokumen yang disediakan sebagai konteks.
qs = "What languages does AutoGen support?"
result = ragproxyagent.initiate_chat(
assistant, message=ragproxyagent.message_generator, problem=qs
)
print(result)
Harap diketahui bahwa konten Markdown file README telah diedit dari output agar ringkas.
Output:
Mencoba membuat pengumpulan.
2025-07-21 12:20:36,125 - autogen.agentchat.contrib.retrieve_user_proxy_agent - INFO - Found 1 chunks.
2025-07-21 12:20:36,129 - autogen.agentchat.contrib.vectordb.chromadb - INFO - No content embedding is provided. Will use the VectorDB's embedding function to generate the content embedding.
VectorDB menghasilkan doc_ids: [['8e9131c7']]
Menambahkan konten dokumen 8e9131c7 pada konteks.
ragproxyagent (ke asisten):
Anda adalah chatbot dengan pengambilan data yang ditingkatkan. Anda menjawab pertanyaan pengguna berdasarkan pengetahuan Anda sendiri dan konteks yang diberikan oleh pengguna.
Jika Anda tidak dapat menjawab pertanyaan dengan atau tanpa konteks saat ini, Anda harus menjawab dengan tepat `UPDATE CONTEXT`.
Anda harus memberikan jawaban sesingkat mungkin.
Pertanyaan pengguna adalah: Bahasa apa saja yang didukung oleh AutoGen?
Konteksnya adalah:
[DIEDIT]
asisten (ke ragproxyagent): Teks yang disediakan tampaknya merupakan file README untuk proyek AutoGen, sebuah inisiatif sumber terbuka oleh Microsoft. Berikut ini ringkasan isinya:
README juga menyertakan tabel yang merangkum paket yang tersedia untuk setiap bahasa yang didukung (C # dan Python) dan manajer paket masing-masing (NuGet dan PyPI). Hal ini memudahkan pengembang untuk dengan cepat mengidentifikasi komponen yang diperlukan untuk memulai AutoGen dalam bahasa pilihan mereka.
>> > > > > > > MENGAKHIRI PROSES (601a53dc-8a5d-4e19-8503-1517fe3c7634): Kondisi pesan penghentian pada agen 'ragproxyagent' terpenuhi
Hebat! Asisten agen dan agen RAG kami berhasil menggabungkan konteks tambahan untuk merespons kueri pengguna dengan benar dengan bahasa pemrograman yang saat ini didukung oleh AutoGen. Anda dapat membayangkan ini seperti obrolan grup antara agen yang bertukar informasi. Contoh ini adalah demonstrasi sederhana penerapan setempat RAG agen dengan AutoGen.
Sekarang, mari kita beralih ke membangun sistem RAG agen yang lebih canggih. Di terminal Anda, instal dan jalankan Open WebUI.
pip install open-webui
open-webui serve
Untuk pencarian web, kita akan memanfaatkan kemampuan pencarian web bawaan di Open WebUI.
Open WebUI mendukung sejumlah penyedia pencarian. Secara umum, Anda dapat menggunakan layanan antarmuka pemrograman aplikasi (API) pihak ketiga, di mana Anda perlu mendapatkan kunci API, atau Anda dapat menyiapkan kontainer SearXNG Docker secara setempat. Dalam kedua kasus tersebut, Anda harus mengonfigurasi penyedia pencarian Anda di konsol Open WebUI.
Konfigurasi ini, baik pointer ke SearXNG atau input kunci API Anda, ada di Panel Admin > Pengaturan > Pencarian Web di konsol Open WebUI.
Lihat petunjuk dalam dokumentasi Open WebUI untuk petunjuk yang lebih terperinci.
1. Di browser Anda, buka http://localhost:8080/ untuk mengakses Open Web UI. Jika ini adalah pertama kalinya Anda membuka antarmuka Open WebUI, daftarkan nama pengguna dan kata sandi. Informasi ini sepenuhnya disimpan setempat di mesin Anda.
2. Setelah masuk, klik ikon di sisi kiri bawah tempat nama pengguna Anda berada. Dari menu, klik panel Admin.
3. Di tab Fungsi , klik + untuk menambahkan fungsi baru.
4. Berikan nama fungsi, seperti "Agen RAG Granite" dan deskripsi, keduanya berjenis
5. Tempelkan skrip Python granite_autogen_rag.py ke dalam kotak teks yang disediakan, menggantikan konten yang ada.
6. Klik Simpan di bagian bawah layar.
7. Kembali ke halaman Fungsi, pastikan agen dialihkan ke Diaktifkan.
8. Klik ikon roda gigi di samping tombol pengaktifan untuk menyesuaikan pengaturan apa pun seperti titik akhir inferensi, titik akhir SearXNG, atau ID model.
Sekarang, agen AutoGen baru Anda muncul sebagai model di antarmuka Open WebUI. Anda dapat memilihnya dan memberinya permintaan pengguna.
Untuk menyiapkan penyedia pencarian (misalnya SearXNG), ikuti panduan ini.
Parameter konfigurasi adalah sebagai berikut:
| Parameter | Deskripsi | Nilai Default |
|---|---|---|
| task_model_id | Model utama untuk eksekusi tugas | granite3.2:8b |
| vision_model_id | Model visual untuk analisis gambar | granite-vision3.2:2b |
| openai_api_url | Titik akhir API untuk pemanggilan model bergaya OpenAI | http://localhost:11434 |
| openai_api_key | Kunci API untuk autentikasi | ollama |
| vision_api_url | Titik akhir untuk tugas terkait visual | http://localhost:11434 |
| model_temperature | Mengontrol keacakan respons | 0 |
| max_plan_steps | Langkah maksimum dalam perencanaan agen | 6 |
Catatan: Parameter ini dapat dikonfigurasi melalui ikon roda gigi di bagian "Functions" pada Open WebUI Admin Panel setelah menambahkan fungsi.
Agen pengambilan Granite melakukan RAG berbasis AG2 dengan menanyakan dokumen lokal dan sumber web, melakukan perencanaan tugas multiagen, dan menegakkan eksekusi adaptif. Mulai obrolan dan berikan sistem agen Anda kueri yang terkait dengan dokumen yang disediakan untuk melihat rantai RAG beraksi.
Pengaturan multiagen memungkinkan pembuatan alat yang praktis dan dapat digunakan dengan mengoptimalkan model sumber terbuka berukuran sedang seperti Granite 3.2. Arsitektur RAG agen ini yang dibangun dengan alat sumber terbuka sepenuhnya, dapat berfungsi sebagai titik awal untuk merancang dan menyesuaikan agen penjawab pertanyaan dan algoritma AI Anda. Arsitektur ini juga dapat digunakan di luar konteks untuk berbagai contoh penggunaan. Dalam tutorial ini, Anda berkesempatan untuk mempelajari sistem agen yang sederhana dan kompleks, dengan memanfaatkan kemampuan AutoGen. Granite LLM dipanggil menggunakan Ollama yang memungkinkan eksplorasi yang sepenuhnya lokal pada sistem ini. Sebagai langkah selanjutnya, pertimbangkan untuk mengintegrasikan lebih banyak alat khusus ke dalam sistem agen Anda.
Gunakan AI di bisnis Anda dalam perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.
Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.
[1] Wu, Qingyun, et al. “AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework.” GitHub, 2023, github.com/microsoft/autogen.