Panduan ini akan menggambarkan proses menambah memori pada rantai dengan berbilang input dalam LangChain.
Bagaimana untuk Menambah Memori pada Rantaian Dengan Berbilang Input dalam LangChain?
Memori boleh ditambahkan pada LLM atau chatbots untuk menyimpan mesej atau data terbaharu supaya model dapat memahami konteks arahan. Untuk mempelajari proses menambah memori pada rantaian dengan berbilang input dalam LangChain, hanya melalui langkah berikut:
Langkah 1: Pasang Modul
Mula-mula, pasang rangka kerja LangChain kerana ia mempunyai pelbagai kebergantungan untuk membina model bahasa:
pip pasang langchain
Pasang chromadb untuk menyimpan data yang digunakan oleh memori dalam stor vektor Chroma:
pip pasang chromadb
Tiktoken ialah tokenizer yang digunakan untuk mencipta kepingan kecil dokumen besar supaya ia boleh diuruskan dengan mudah:
pip pasang tiktoken
OpenAI ialah modul yang boleh digunakan untuk membina rantai dan LLM menggunakan kaedah OpenAI():
pip pasang openai
Langkah 2: Sediakan Persekitaran dan Muat Naik Data
Langkah seterusnya selepas memasang semua modul yang diperlukan untuk proses ini ialah menetapkan persekitaran menggunakan kunci API daripada akaun OpenAI:
import awakimport getpass
awak . lebih kurang [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API Key:' )
Muat naik dokumen menggunakan perpustakaan fail untuk membina rantaian dalam rangka kerja LangChain:
daripada google. ET AL import faildimuat naik = fail. muat naik ( )
Langkah 3: Import Perpustakaan
Setelah dokumen berjaya dimuat naik, hanya import perpustakaan yang diperlukan daripada modul Langchain:
daripada langchain. benam . openai import OpenAIEmbeddingsdaripada langchain. benam . bersatu padu import CohereEmbeddings
daripada langchain. text_splitter import CharacterTextSplitter
daripada langchain. kedai vektor . carian_vektor_elastik import ElasticVectorSearch
daripada langchain. kedai vektor import Chroma
daripada langchain. kedai doktor . dokumen import Dokumen
Langkah 4: Membina Memori Menggunakan Pangkalan Data Chroma
Sekarang, mula bina ruang vektor untuk menyimpan pembenaman dan token dokumen yang dimuat naik lebih awal:
dengan buka ( 'state_of_the_union.txt' ) sebagai f:negeri_kesatuan = f. membaca ( )
text_splitter = CharacterTextSplitter ( saiz_ketulan = 1000 , chunk_overlap = 0 )
teks = text_splitter. split_text ( negeri_kesatuan )
benam = OpenAIEmbeddings ( )
Konfigurasikan pangkalan data Chroma untuk menyimpan teks dan benam daripada dokumen:
docsearch = Chroma. from_texts (teks , benam , metadata = [ { 'sumber' : i } untuk i dalam julat ( sahaja ( teks ) ) ]
)
Uji memori dengan meminta arahan dalam pembolehubah pertanyaan dan kemudian laksanakan kaedah similarity_search():
pertanyaan = 'Bilakah NATO ditubuhkan'dokumen = docsearch. carian_kesamaan ( pertanyaan )
Langkah 5: Mengkonfigurasi Templat Prompt
Langkah ini menerangkan proses mengkonfigurasi templat untuk gesaan dengan mengimport perpustakaan berikut:
daripada langchain. rantai . soal_jawab import load_qa_chaindaripada langchain. llms import OpenAI
daripada langchain. gesaan import PromptTemplate
daripada langchain. ingatan import ConversationBufferMemory
Selepas itu, hanya konfigurasikan templat atau struktur untuk pertanyaan dan jalankan rantaian sebaik sahaja memori ditambahkan pada model:
templat = '''Anda seorang model sedang berbual dengan manusiaMemandangkan potongan yang diekstrak daripada dokumen panjang dan soalan, buat jawapan akhir
{konteks}
{sejarah}
Manusia: {input}
Chatbot:'''
segera = PromptTemplate (
input_variables = [ 'sejarah' , 'input' , 'konteks' ] , templat = templat
)
ingatan = ConversationBufferMemory ( kunci_memori = 'sejarah' , kunci_input = 'input' )
rantai = load_qa_chain (
OpenAI ( suhu = 0 ) , rantai_jenis = 'barang' , ingatan = ingatan , segera = segera
)
Langkah 6: Menguji Memori
Inilah masanya untuk menguji model dengan bertanya soalan menggunakan pembolehubah pertanyaan dan kemudian melaksanakan kaedah chain() dengan parameternya:
pertanyaan = 'Bilakah NATO ditubuhkan'rantai ( { 'input_documents' : docs , 'input' : pertanyaan } , return_only_outputs = betul )
Cetak data yang disimpan dalam memori penimbal kerana jawapan yang diberikan oleh model disimpan baru-baru ini dalam ingatan:
cetak ( rantai. ingatan . penampan )
Itu semua tentang menambah memori pada rantai dengan berbilang input dalam LangChain.
Kesimpulan
Untuk menambah memori pada rantaian dengan berbilang input dalam LangChain, cuma pasang modul dan stor vektor untuk menyimpan teks dan benam. Selepas itu, muat naik data/dokumen daripada sistem tempatan dan kemudian import perpustakaan yang diperlukan untuk menyimpan data untuk membina memori untuk LLM. Konfigurasikan templat gesaan untuk menyimpan mesej terbaharu dalam memori penimbal dan kemudian teks rantai. Panduan ini telah menghuraikan proses menambah memori pada rantai dengan berbilang input dalam LangChain.