Dalam tutorial ini, Anda akan membuat sistem RAG agen LangChain menggunakan model IBM® Granite-3.0-8B-Instruct yang sekarang tersedia di watsonx.ai yang dapat menjawab pertanyaan kompleks tentang AS Terbuka 2024 menggunakan informasi eksternal.
Generasi dengan dukungan pengambilan data (RAG) adalah teknik dalam pemrosesan bahasa alami (NLP) yang memanfaatkan pengambilan informasi dan model generatif untuk menghasilkan respons yang lebih akurat, relevan, dan mempertimbangkan konteks. Dalam tugas pembuatan bahasa tradisional, model bahasa besar (LLM) seperti Model Llama dari Meta atau Model Granite dari IBM digunakan untuk membangun respons berdasarkan prompt input. Contoh penggunaan dunia nyata yang umum dari model bahasa besar ini adalah chatbot. Ketika model kehilangan informasi relevan yang terkini dalam basis pengetahuan mereka, RAG adalah alat yang tangguh.
Inti dari sistem RAG agen adalah agen kecerdasan buatan (AI). Agen AI mengacu pada sistem atau program yang mampu melakukan tugas secara mandiri atas nama pengguna atau sistem lain dengan merancang alur kerja dan menggunakan alat yang tersedia. Teknologi agen mengimplementasikan penggunaan alat pada backend untuk mendapatkan informasi terkini dari berbagai sumber data, mengoptimalkan alur kerja, dan membuat subtugas secara mandiri untuk menyelesaikan berbagai tugas yang kompleks. Alat eksternal ini dapat mencakup kumpulan data eksternal, mesin pencari, API, dan bahkan agen lainnya. Dalam langkah demi langkah, agen menilai kembali rencana tindakannya secara real-time dan mengoreksi diri.
Kerangka kerja RAG agen sangat tangguh karena dapat mencakup lebih dari satu alat. Dalam aplikasi RAG tradisional, LLM dilengkapi dengan basis data vektor sebagai referensi ketika membentuk responsnya. Sebaliknya, aplikasi AI agen tidak terbatas pada agen dokumen yang hanya melakukan pengambilan data. Agen RAG juga dapat memiliki berbagai alat untuk tugas-tugas seperti menyelesaikan perhitungan matematika, menulis email, melakukan analisis data, dan lainnya. Semua alat ini dapat menjadi tambahan pada proses pengambilan keputusan agen. Agen AI mempertimbangkan konteks dalam penalaran mereka yang terdiri dari beberapa langkah dan dapat menentukan kapan harus menggunakan alat yang sesuai.
Agen AI, atau agen cerdas, juga dapat bekerja secara kolaboratif dalam sistem multiagen, yang cenderung mengungguli agen tunggal. Skalabilitas dan kemampuan beradaptasi inilah yang membedakan agen RAG agen dengan jalur RAG tradisional.
Anda memerlukan akun IBM Cloud untuk membuat proyek watsonx.ai .
Meskipun terdapat pilihan beberapa alat, tutorial ini akan memandu Anda untuk menyiapkan akun IBM menggunakan Jupyter Notebook.
Masuk ke watsonx.ai menggunakan akun IBM Cloud Anda.
Buat proyek watsonx.ai.
Anda bisa mendapatkan ID proyek dari dalam proyek Anda. Klik tab Kelola . Kemudian, salin ID proyek dari bagian Detail di halaman Umum . Anda memerlukan ID ini untuk tutorial ini.
Buat Jupyter Notebook.
Langkah ini akan membuka lingkungan Notebook tempat Anda dapat menyalin kode dari tutorial ini. Atau, Anda dapat mengunduh aplikasi notebook ini ke sistem lokal Anda dan mengunggahnya ke proyek watsonx.ai sebagai aset. Untuk melihat tutorial Granite lain, lihat Komunitas Granite IBM. Aplikasi Jupyter Notebook ini bersama dengan kumpulan data yang digunakan dapat ditemukan di GitHub.
Buat instans layanan waktu proses watsonx.ai (pilih wilayah yang sesuai dan pilih paket Lite, yang merupakan instans gratis).
Buat Kunci API.
Kaitkan instans layanan Waktu Proses watsonx.ai ke proyek yang Anda buat di watsonx.ai.
Kita membutuhkan beberapa dependensi untuk tutorial ini. Pastikan untuk mengimpor yang berikut ini; jika tidak diinstal, Anda dapat menyelesaikan masalah ini dengan instalasi pip cepat.
Kerangka kerja Python umum untuk membangun sistem AI agen termasuk LangChain, LangGraph, dan LlamaIndex. Dalam tutorial ini, kita akan menggunakan LangChain.
Siapkan kredensial Anda. Simpan PROJECT_ID dan APIKEY Anda dalam file .env terpisah di tingkat direktori Anda yang sama dengan notebook ini.
Langkah ini penting karena akan menghasilkan contoh yang jelas tentang perilaku agen dengan dan tanpa sumber data eksternal. Mari kita mulai dengan mengatur parameter.
Parameter model yang tersedia dapat ditemukan di sini. Kita bereksperimen dengan berbagai parameter model, termasuk suhu, jumlah token baru minimum dan maksimum, serta urutan penghentian. Pelajari lebih lanjut tentang parameter model dan apa artinya di dokumen watsonx. Penting untuk mengatur stop_sequences kita di sini untuk membatasi halusinasi agen. Pengaturan ini memberi tahu agen untuk berhenti menghasilkan output lebih lanjut setelah menemukan substring tertentu. Dalam kasus ini, kita menginginkan agar agen menghentikan responsnya setelah mencapai suatu observasi dan tidak membuat halusinasi respons manusia. Oleh karena itu, salah satu stop_sequences kita adalah 'Manusia:' dan yang lainnya adalah Pengamatan agar berhenti setelah respons akhir dihasilkan.
Untuk tutorial ini, kami sarankan menggunakan model Granite-3.0-8B-Instruct dari IBM sebagai LLM untuk mencapai hasil yang serupa. Anda bebas menggunakan model AI apa pun pilihan Anda. Model dasar yang tersedia melalui watsonx dapat ditemukan di sini. Tujuan dari semua model ini dalam aplikasi LLM adalah untuk menjadi mesin penalaran yang memutuskan tindakan apa yang harus diambil.
Kita akan menyiapkan templat prompt jika Anda ingin mengajukan beberapa pertanyaan.
Dan sekarang kita dapat menyiapkan rantai dengan prompt dan LLM kita. Hal ini memungkinkan model generatif menghasilkan respons.
Mari kita uji untuk melihat bagaimana agen kita merespons kueri dasar.
Output: ' Jangan mencoba menduga jawaban.\n\nOlahraga yang dimainkan di AS Terbuka adalah tenis.'
Agen berhasil menanggapi kueri dasar dengan jawaban yang benar. Dalam langkah selanjutnya dari tutorial ini, kita akan membuat alat RAG agar agen dapat mengakses informasi yang relevan tentang keterlibatan IBM dalam AS Terbuka 2024. Seperti yang telah kami bahas, LLM tradisional tidak dapat memperoleh informasi terkini sendiri. Mari kita verifikasi hal ini.
Output: ' Jangan menduga jawaban.\n\nKejuaraan Tenis AS Terbuka 2024 belum diumumkan secara resmi, jadi lokasinya belum dikonfirmasi. Oleh karena itu, saya tidak tahu jawaban pertanyaan ini.'
Jelaslah bahwa LLM tidak dapat memberi kita informasi yang relevan. Data pelatihan yang digunakan untuk model ini berisi informasi sebelum AS Terbuka 2024 dan tanpa alat yang sesuai agen tidak memiliki akses ke informasi ini.
Langkah pertama dalam membuat basis pengetahuan adalah mencantumkan URL tempat kita akan mengekstrak konten. Dalam hal ini, sumber data kita akan dikumpulkan dari konten online yang merangkum keterlibatan IBM dalam AS Terbuka 2024. URL yang relevan ditetapkan dalam daftar url .
Selanjutnya, muat dokumen menggunakan LangChai WebBaseLoader untuk URL yang kita cantumkan. Kita juga akan mencetak dokumen sampel untuk melihat bagaimana dokumen dimuat.
Output: Document(metadata={'source': 'https://www.ibm.com/id-id/case-studies/us-open', 'title': 'U.S. Open | IBM', 'description': 'To help the US Open stay on the cutting edge of customer experience, IBM Consulting built powerful generative AI models with watsonx.', 'language': 'en'}, page_content='\n\n\n\n\n\n\n\n\n\nU.S. Open | IBM\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nBeranda\n\n\n\n\nStudi Kasus\n\n\n\nAS Terbuka \n\n\n\n \n\n\n\n \n Kesuksesan dalam pengalaman digital AS Terbuka\n\n\n\n\n\n\n \n\n\n \n\n \n\n\n \n \n Model AI yang dibangun dengan watsonx mengubah data menjadi insight\n \n\n\n\n\n \n\n\n \n\n\nDapatkan insight terbaru tentang AI dan teknologi\n\n\nPelajari Lebih Lanjut\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSelama dua minggu pada akhir musim panas, hampir satu juta orang berbondong-bondong ke Flushing, New York, untuk menyaksikan para pemain tenis terbaik dunia bertanding di Kejuaraan Tenis AS Terbuka...')
Untuk membagi data dalam dokumen ini menjadi potongan yang dapat diproses oleh LLM, kita dapat menggunakan pemisah teks seperti RecursiveCharacterTextSplitter. Pemisah teks ini memisahkan konten berdasarkan karakter berikut: ["\n\n", "\n", " ", ""]. Ini dilakukan dengan tujuan menjaga teks dalam potongan yang sama, seperti paragraf, kalimat, dan kata tidak terpisah.
Setelah pemisah teks dimulai, kita dapat menerapkannya ke docs_list kita.
Model penanaman yang kita gunakan adalah model IBM Slate melalui layanan penanaman watsonx.ai. Mari kita memulainya.
Untuk menyimpan dokumen tertanam, kita akan menggunakan Chroma DB, penyimpanan vektor sumber terbuka.
Untuk mengakses informasi di penyimpanan vektor, kita harus menyiapkan pengambil data.
Mari kita tentukan alat get_IBM_US_open_context () yang akan digunakan agen kita. Satu-satunya parameter alat ini adalah kueri pengguna. Deskripsi alat juga dicatat untuk menginformasikan agen tentang penggunaan alat. Dengan cara ini, agen tahu kapan harus memanggil alat ini. Alat ini dapat digunakan oleh sistem RAG agen untuk mengarahkan kueri pengguna ke penyimpanan vektor jika berkaitan dengan keterlibatan IBM dalam AS Terbuka 2024.
Selanjutnya, kita akan menyiapkan templat prompt baru untuk mengajukan beberapa pertanyaan. Templat ini lebih kompleks. Ini disebut sebagai prompt obrolan terstruktur dan dapat digunakan untuk membuat agen dengan banyak alat yang tersedia. Dalam kasus ini, alat yang kita gunakan ditetapkan dalam Langkah 6. Prompt obrolan terstruktur akan terdiri dari system_prompt, human_prompt, dan alat RAG kita.
Pertama, kita akan menyiapkan system_prompt. Prompt ini menginstruksikan agen untuk mencetak "proses pemikiran" agen yang melibatkan subtugas agen, alat yang digunakan, dan output akhir. Ini memberi kita insight tentang pemanggilan fungsi agen. Prompt juga menginstruksikan agen untuk memberikan responsnya dalam format JSON Blob.
Dalam kode berikut, kita membuat human_prompt. Prompt ini memberi tahu agen untuk menampilkan input pengguna diikuti oleh langkah-langkah perantara yang diambil oleh agen sebagai bagian dari agent_scratchpad.
Selanjutnya, kita menetapkan urutan prompt yang baru ditentukan dalam templat prompt. Kita membuat templat baru ini untuk menampilkan system_prompt diikuti oleh daftar pesan opsional yang dikumpulkan dalam memori agen, jika ada, dan terakhir, human_prompt yang mencakup input manusia dan agent_scratchpad.
Sekarang, mari kita selesaikan templat prompt dengan menambahkan nama alat, deskripsi, dan argumen menggunakan templat prompt parsial. Hal ini memungkinkan agen untuk mengakses informasi yang berkaitan dengan setiap alat termasuk contoh penggunaan yang dimaksudkan. Ini juga berarti bahwa kita dapat menambahkan dan menghapus alat tanpa mengubah seluruh templat prompt.
Fitur penting dari agen AI adalah memori mereka. Agen dapat menyimpan percakapan dan temuan sebelumnya dalam memori mereka untuk meningkatkan akurasi dan relevansi respons mereka pada masa mendatang. Dalam kasus ini, kita akan menggunakan ConversationBufferMemory() LangChain sebagai sarana penyimpanan memori.
Dan sekarang kita dapat menyiapkan rantai dengan scratchpad agen, memori, prompt, dan LLM. Kelas AgentExecutor digunakan untuk mengeksekusi agen. Dibutuhkan agen, alatnya, pendekatan penanganan kesalahan, parameter verbose, dan memori.
Kita sekarang dapat mengajukan pertanyaan kepada agen. Ingatlah ketidakmampuan agen sebelumnya untuk memberikan kita informasi yang berkaitan dengan AS Terbuka 2024. Sekarang agen memiliki alat RAG yang tersedia untuk digunakan, mari kita coba ajukan pertanyaan yang sama lagi.
Output: (beberapa deskripsi dan bidang konten halaman dipersingkat untuk menampilkan hasil secara ringkas)
> Memasuki rantai AgentExecutor baru...
Pemikiran: Manusia bertanya tentang lokasi Kejuaraan Tenis AS Terbuka 2024. Saya perlu mencari tahu di mana acara tersebut diselenggarakan.
Tindakan:
```
{
"action": "get_IBM_US_Open_context",
"action_input": "Where was the 2024 US Open Tennis Championship held?"
}
```
Pengamatan[Dokumen(metadata={'description': "IBM and the United States Tennis Association (USTA) announced several watsonx-powered fan features coming to the US Open digital platforms ahead of this year's tournament. These new and enhanced capabilities – a product of collaboration between IBM and the USTA digital team – aim to deliver a more informative and engaging experience for millions of tennis fans around the world.", 'language': 'en-us', 'source': 'https://newsroom.ibm.com/2024-08-15-ibm-and-the-usta-serve-up-new-and-enhanced-generative-ai-features-for-2024-us-open-digital-platforms', 'title': 'IBM and the USTA Serve Up New and Enhanced Generative AI Features for 2024 US Open Digital Platforms'}, page_content="IBM dan USTA Menghadirkan Fitur AI generatif Baru dan Ditingkatkan untuk Platform Digital AS Terbuka 2024\n-Ringkasan Laporan Pertandingan baru menawarkan...")]
Tindakan:
```
{
"action": "Final Answer",
"action_input": "The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York."
}
```
Pengamatan
> Rantai selesai.
{'input': 'Where was the 2024 US Open Tennis Championship?',
'history': '',
'output': 'The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York.'}
Hebat! Agen menggunakan alat RAG yang tersedia untuk memberikan lokasi AS Terbuka 2024, sesuai kueri pengguna. Kita bahkan bisa melihat dokumen yang tepat tempat agen mengambil informasinya. Sekarang, mari kita coba kueri pertanyaan yang sedikit lebih kompleks. Kali ini, kueri menyangkut keterlibatan IBM dalam AS Terbuka 2024.
Output: (beberapa bidang konten deskripsi dan halaman dipersingkat untuk menampilkan hasil secara ringkas)
> Memasuki rantai AgentExecutor baru...
```
{
"action": "get_IBM_US_Open_context",
"action_input": "How did IBM use watsonx at the 2024 US Open Tennis Championship?"
}
```
Pengamatan[Document(metadata={'description': 'To help the US Open stay on the cutting edge of customer experience, IBM Consulting built powerful generative AI models with watsonx.', 'language': 'en', 'source': 'https://www.ibm.com/id-id/case-studies/us-open', 'title': 'U.S. Open | IBM'}, page_content='AS Terbuka adalah turnamen besar yang berlangsung selama dua minggu, dengan ratusan pertandingan yang dimainkan di 22 lapangan berbeda. Mengikuti semua aksi di lapangan merupakan tantangan, baik bagi para penggemar tenis maupun tim editorial USTA yang meliput acara ini...)]
Tindakan:
```
{
"action": "Final Answer",
"action_input": "IBM used watsonx at the 2024 US Open Tennis Championship to create generative AI-powered features such as Match Reports, AI Commentary, and SlamTracker. These features enhance the digital experience for fans and scale the productivity of the USTA editorial team."
}
```
Pengamatan
> Rantai selesai.
{'input': 'How did IBM use watsonx at the 2024 US Open Tennis Championship?',
'history': 'Human: Where was the 2024 US Open Tennis Championship?\nAI: The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York.',
'output': 'IBM used watsonx at the 2024 US Open Tennis Championship to create generative AI-powered features such as Match Reports, AI Commentary, and SlamTracker. These features enhance the digital experience for fans and scale the productivity of the USTA editorial team.'}
Sekali lagi, agen berhasil mengambil informasi relevan yang berkaitan dengan kueri pengguna. Selain itu, agen berhasil memperbarui basis pengetahuannya saat mempelajari informasi baru dan mengalami interaksi baru seperti yang terlihat dari output riwayat.
Sekarang, mari kita uji apakah agen dapat menguraikan kapan pemanggilan alat tidak diperlukan untuk menjawab kueri pengguna. Kita dapat menguji hal ini dengan mengajukan pertanyaan yang tidak berkaitan dengan AS Terbuka kepada agen RAG.
Output:
> Memasuki rantai AgentExecutor baru...
{
"action": "Final Answer",
"action_input": "The capital of France is Paris."
}
Pengamatan
> Rantai selesai.
{'input': 'What is the capital of France?',
'history': 'Human: Where was the 2024 US Open Tennis Championship?\nAI: The 2024 US Open Tennis Championship was held at the USTA Billie Jean King National Tennis Center in Flushing, Queens, New York.\nHuman: How did IBM use watsonx at the 2024 US Open Tennis Championship?\nAI: IBM used watsonx at the 2024 US Open Tennis Championship to create generative AI-powered features such as Match Reports, AI Commentary, and SlamTracker. These features enhance the digital experience for fans and scale the productivity of the USTA editorial team.',
'output': 'The capital of France is Paris.'}
Seperti yang terlihat dalam rantai AgentExecutor, agen menyadari bahwa ia memiliki informasi dalam basis pengetahuannya untuk menjawab pertanyaan ini tanpa menggunakan alatnya.
Dalam tutorial ini, Anda membuat agen RAG menggunakan LangChain di python dengan watsonx. LLM yang Anda gunakan adalah model IBM Granite-3.0-8B-Instruct . Output sampel penting karena menunjukkan pentingnya kemajuan AI generatif ini. Agen AI berhasil mengambil informasi yang relevan melalui alat get_IBM_US_open_context , memperbarui memorinya dengan setiap interaksi, dan mengeluarkan respons yang sesuai. Selain itu, penting juga untuk mencatat kemampuan agen dalam menentukan apakah pemanggilan alat sesuai untuk setiap tugas spesifik. Ketika memiliki informasi yang diperlukan untuk menjawab kueri input, agen tidak menggunakan alat apa pun untuk menjawab pertanyaan.
Untuk konten agen AI lainnya, kami mendorong Anda untuk melihat tutorial agen AI kami yang memberikan Astronomy Picture of the Day edisi hari ini menggunakan API sumber terbuka NASA dan alat tanggal.
Bangun, terapkan, dan kelola asisten dan agen AI yang kuat yang mengotomatiskan alur kerja dan proses dengan AI generatif.
Bangun masa depan bisnis Anda dengan solusi AI yang dapat Anda percaya.
Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.