Garis Besar Singkat
Posting ini akan menunjukkan:
Cara Menggunakan Agen untuk Mengembalikan Output Terstruktur di LangChain
- Menginstal Kerangka
- Lingkungan OpenAI
- Membuat Toko Vektor
- Menetapkan Jalan
- Memuat & Memisahkan Data
- Membuat Retriever
Metode 1: Menggabungkan Agen dengan Penyimpanan Vektor
Metode 2: Menggunakan Agen sebagai Router
Metode 3: Menggunakan Agen Dengan Penyimpanan Vektor Multi-Hop
Bagaimana Cara Menggunakan Agen untuk Mengembalikan Output Terstruktur di LangChain?
Pengembang menggunakan agen untuk merutekan antar database yang berisi data pelatihan untuk model. Agen memiliki cetak biru proses lengkap dengan menyimpan semua langkahnya. Agen memiliki alat untuk melakukan semua aktivitas ini untuk menyelesaikan proses. Pengguna juga dapat menggunakan agen untuk mendapatkan data dari penyimpanan data yang berbeda untuk membuat model menjadi beragam.
Untuk mempelajari proses menggabungkan agen dan penyimpanan vektor di LangChain, cukup ikuti langkah-langkah berikut:
Langkah 1: Menginstal Kerangka
Pertama, instal modul LangChain dan dependensinya untuk menggabungkan agen dan penyimpanan vektor:
pip instal langchain
Dalam panduan ini, kami menggunakan database Chroma yang dapat menyimpan data di lokasi atau tabel berbeda:
pip instal chromedb
Untuk mendapatkan pemahaman yang lebih baik tentang data, bagi file besar menjadi beberapa bagian yang lebih kecil menggunakan tokenizer tiktoken:
pip instal tiktoken
OpenAI adalah modul yang dapat digunakan untuk membangun model bahasa besar dalam kerangka LangChain:
pip instal openai
Langkah 2: Lingkungan OpenAI
Langkah selanjutnya di sini adalah mengatur lingkungan menggunakan kunci API OpenAI yang dapat diekstraksi dari akun resmi OpenAI:
impor Andaimpor dapatkan pass
Anda . sekitar [ 'OPENAI_API_KEY' ] = dapatkan pass . dapatkan pass ( 'Kunci API OpenAI:' )
Sekarang, unggah data dari sistem lokal ke kolaborasi Google untuk digunakan di masa mendatang:
dari google. DAN AL impor filediunggah = file. mengunggah ( )
Langkah 3: Membuat Toko Vektor
Langkah ini mengonfigurasi komponen pertama tugas kita yaitu penyimpanan vektor untuk menyimpan data yang diunggah. Mengonfigurasi penyimpanan vektor memerlukan pustaka yang dapat diimpor dari berbagai dependensi LangChain:
dari rantailang. penyematan . terbuka impor OpenAIEmbeddings#Vector menyimpan ketergantungan untuk mendapatkan database atau vektor yang diperlukan
dari rantailang. toko vektor impor Kroma
#Pemisah teks digunakan untuk mengubah teks besar menjadi potongan-potongan kecil
dari rantailang. pemisah_teks impor Pemisah Teks Karakter
dari rantailang. llms impor OpenAI
dari rantailang. document_loaders impor WebBaseLoader
dari rantailang. rantai impor PengambilanQA
llm = OpenAI ( suhu = 0 )
Langkah 4: Menetapkan Jalur
Setelah mengimpor perpustakaan, cukup atur jalur untuk mengakses penyimpanan vektor sebelum menyimpan data di dalamnya:
dari pathlib impor Jalurbagian_relevan = [ ]
untuk P di dalam Jalur ( '.' ) . mutlak ( ) . bagian :
bagian_relevan. menambahkan ( P )
jika bagian_relevan [ - 3 : ] == [ 'rantai panjang' , 'dokumen' , 'modul' ] :
merusak
#Pernyataan Kondisional di dalam loop untuk mengatur jalur untuk setiap database
doc_path = str ( Jalur ( *bagian_relevan ) / 'state_of_the_union.txt' )
Langkah 5: Memuat & Memisahkan Data
Sekarang, cukup muat data dan bagi menjadi beberapa bagian yang lebih kecil agar lebih mudah dibaca dan dipahami. Buat penyematan data dengan mengonversi teks menjadi angka dengan membuat ruang vektornya dan menyimpannya di database Chorma:
dari rantailang. document_loaders impor Pemuat Teks#Memuat kumpulan data dari jalurnya dan menyimpan potongan yang lebih kecil di database
pemuat = Pemuat Teks ( doc_path )
dokumen = pemuat. memuat ( )
pemisah_teks = Pemisah Teks Karakter ( potongan_ukuran = 2000 , potongan_tumpang tindih = 0 )
teks = pemisah_teks. split_documents ( dokumen )
#Ubah teks menjadi angka dan simpan penyematannya di database
penyematan = OpenAIEmbeddings ( )
pencarian dokumen = Kroma. dari_dokumen ( teks , penyematan , nama_koleksi = 'negara kesatuan' )
Langkah 6: Membuat Retriever
Untuk menggabungkan agen dan penyimpanan vektor, diperlukan pembuatan retriever menggunakan metode RetrievalQA() dari framework LangChain. Metode pengambilan ini direkomendasikan untuk mendapatkan data dari penyimpanan vektor dengan menggunakan agen sebagai alat untuk bekerja dengan database:
keadaan_of_union = PengambilanQA. dari_rantai_tipe (llm = llm , tipe_rantai = 'hal-hal' , mengambil = pencarian dokumen. sebagai_retriever ( )
)
Muat himpunan data lain untuk mengintegrasikan agen dengan beberapa himpunan data atau penyimpanan vektor:
pemuat = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )Simpan kumpulan data ruff di chromedb setelah membuat potongan data yang lebih kecil dengan vektor penyematan juga:
dokumen = pemuat. memuat ( )ruff_texts = pemisah_teks. split_documents ( dokumen )
ruff_db = Kroma. dari_dokumen ( ruff_texts , penyematan , nama_koleksi = 'kasar' )
ruff = PengambilanQA. dari_rantai_tipe (
llm = llm , tipe_rantai = 'hal-hal' , mengambil = ruff_db. sebagai_retriever ( )
)
Metode 1: Menggabungkan Agen dengan Penyimpanan Vektor
Metode pertama yang menggabungkan agen dan penyimpanan vektor untuk mengekstrak informasi disebutkan di bawah:
Langkah 1: Konfigurasikan Alat
Sekarang setelah penyimpanan vektor dikonfigurasi, lanjutkan ke pembuatan komponen kedua dari proses kita, yaitu agen. Untuk membuat agen untuk proses tersebut, impor perpustakaan menggunakan dependensi seperti agen, alat, dll.
dari rantailang. agen impor inisialisasi_agentdari rantailang. agen impor Tipe Agen
#Mendapatkan Alat dari LangChain untuk membangun agen
dari rantailang. peralatan impor Alat Dasar
dari rantailang. llms impor OpenAI
#Mendapatkan LLMMathChain dari rantai untuk membangun model bahasa
dari rantailang. rantai impor LLMMathChain
dari rantailang. keperluan impor SerpAPIWrapper
dari rantailang. agen impor Alat
Konfigurasikan alat yang akan digunakan dengan agen menggunakan sistem QA atau pengambilan yang dikonfigurasi sebelumnya dengan nama dan deskripsi alat:
peralatan = [Alat (
nama = 'Sistem QA Negara Bagian' ,
fungsi = keadaan_of_union. berlari ,
keterangan = 'Memberikan tanggapan terhadap pertanyaan terkait kumpulan data yang dimuat dengan masukan sebagai pertanyaan yang terbentuk sepenuhnya' ,
) ,
Alat (
nama = 'Sistem QA Ruff' ,
fungsi = ruff. berlari ,
keterangan = 'Memberikan tanggapan terhadap pertanyaan tentang ruff (a python linter) dengan masukan sebagai pertanyaan yang terbentuk sepenuhnya' ,
) ,
]
Langkah 2: Inisialisasi Agen
Setelah alat dikonfigurasi, cukup atur agen dalam argumen metode inisialisasi_agent(). Agen yang kami gunakan disini adalah NOL_SHOT_REACT_DESCRIPTION beserta alatnya, llm (model bahasa), dan verbose:
agen = inisialisasi_agent (peralatan , llm , agen = Tipe Agen. NOL_SHOT_REACT_DESCRIPTION , bertele-tele = BENAR
)
Langkah 3: Uji Agen
Cukup jalankan agen menggunakan metode run() yang berisi pertanyaan dalam argumennya:
agen. berlari ('Apa yang Presiden Joe Biden katakan tentang kanji coklat dalam pidatonya'
)
Tangkapan layar berikut menampilkan jawaban yang diambil dari kedua penyimpanan data menggunakan observasi yang disimpan dalam memori agen:
Metode 2: Menggunakan Agen sebagai Router
Cara lain untuk menggabungkan kedua komponen tersebut adalah dengan menggunakan agen sebagai router dan berikut penjelasan prosesnya:
Langkah 1: Konfigurasikan Alat
Menggunakan agen sebagai router berarti sistem RetrievalQA akan mengembalikan keluaran secara langsung saat alat dikonfigurasi untuk mengembalikan keluaran secara langsung:
peralatan = [#mengonfigurasi alat yang diperlukan untuk membangun agen untuk mendapatkan data dari data
Alat (
nama = 'Sistem QA Negara Bagian' ,
fungsi = keadaan_of_union. berlari ,
keterangan = 'Memberikan respon terhadap pertanyaan terkait dataset yang dimuat dengan input sebagai pertanyaan lengkap' ,
kembali_langsung = BENAR ,
) ,
Alat (
nama = 'Sistem QA Ruff' ,
fungsi = ruff. berlari ,
keterangan = 'Memberikan respon terhadap pertanyaan tentang ruff (a python linter) dengan input sebagai pertanyaan lengkap' ,
kembali_langsung = BENAR ,
) ,
]
Langkah 2: Inisialisasi dan Uji Agen
Setelah menyetel alat, cukup atur agen yang hanya dapat digunakan sebagai router menggunakan metode inisialisasi_agent():
agen = inisialisasi_agent (peralatan , llm , agen = Tipe Agen. NOL_SHOT_REACT_DESCRIPTION , bertele-tele = BENAR
)
Uji agen dengan memberikan pertanyaan masukan pada metode agent.run() dengan menjalankan perintah berikut:
agen. berlari ('Apa yang Presiden Joe Biden katakan tentang kanji coklat dalam pidatonya'
)
Keluaran
Tangkapan layar keluaran menunjukkan bahwa agen baru saja mengembalikan jawaban atas pertanyaan dari kumpulan data yang diekstraksi oleh sistem RetrievalQA:
Metode 3: Menggunakan Agen Dengan Penyimpanan Vektor Multi-Hop
Metode ketiga di mana pengembang dapat menggabungkan agen dan penyimpanan vektor adalah untuk kueri penyimpanan vektor multi-hop. Bagian berikut menjelaskan proses lengkapnya:
Langkah 1: Konfigurasikan Alat
Langkah pertama, seperti biasa, adalah konfigurasi alat yang digunakan untuk membangun agen guna mengekstrak data dari penyimpanan data:
peralatan = [Alat (
nama = 'Sistem QA Negara Bagian' ,
fungsi = keadaan_of_union. berlari ,
keterangan = 'Memberikan respons terhadap pertanyaan terkait kumpulan data yang dimuat dengan masukan sebagai pertanyaan lengkap, tidak merujuk pada kata ganti apa pun dari percakapan sebelumnya' ,
) ,
Alat (
nama = 'Sistem QA Ruff' ,
fungsi = ruff. berlari ,
keterangan = 'Memberikan respons terhadap pertanyaan terkait kumpulan data yang dimuat dengan masukan sebagai pertanyaan lengkap, tidak merujuk pada kata ganti apa pun dari percakapan sebelumnya' ,
) ,
]
Langkah 2: Inisialisasi dan Uji Agen
Setelah itu, build variabel agen menggunakan metode inisialisasi_agent() dengan nama agen:
agen = inisialisasi_agent (peralatan , llm , agen = Tipe Agen. NOL_SHOT_REACT_DESCRIPTION , bertele-tele = BENAR
)
Jalankan agen menggunakan pertanyaan multi-hop yang berisi lebih dari satu aspek atau fitur karena blok kode berikut berisi pertanyaan seperti itu:
agen. berlari ('Alat apa yang digunakan ruff untuk menjalankan buku catatan Python dan apakah ada pembicara yang menyebutkan alat tersebut di alamatnya'
)
Keluaran
Tangkapan layar berikut menunjukkan bahwa agen harus mengerjakan pertanyaan untuk memahami kompleksitasnya. Ini telah mengembalikan jawaban yang diekstraksi oleh sistem QA dari beberapa penyimpanan data yang kami unggah sebelumnya dalam proses:
Sekian tentang cara menggabungkan agen dan penyimpanan vektor di LangChain.
Kesimpulan
Untuk menggabungkan agen dengan penyimpanan vektor di LangChain, mulailah dengan instalasi modul untuk menyiapkan lingkungan dan memuat kumpulan data. Konfigurasikan penyimpanan vektor untuk memuat data dengan membaginya menjadi bagian-bagian yang lebih kecil terlebih dahulu, lalu buat model bahasa menggunakan metode OpenAI(). Konfigurasikan agen untuk mengintegrasikannya dengan penyimpanan vektor guna mengekstrak data untuk berbagai jenis kueri. Artikel ini telah menguraikan proses penggabungan agen dan penyimpanan vektor di LangChain.