Bagaimana untuk Menambah Memori pada Rantaian Dengan Berbilang Input dalam LangChain?

Bagaimana Untuk Menambah Memori Pada Rantaian Dengan Berbilang Input Dalam Langchain



Chatbots dan Model Bahasa Besar sedang digunakan oleh berjuta-juta di seluruh dunia dan model ini boleh menjana teks atas arahan. LangChain ialah salah satu rangka kerja yang paling berkesan dan cekap yang membolehkan pembangun membina model dan bot sedemikian. Pengguna memberikan gesaan atau pertanyaan sebagai input dan model memahami arahan sebelum menjana teks yang kelihatan paling berkaitan atau seperti arahan itu.

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 awak
import 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 fail

dimuat 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 OpenAIEmbeddings

daripada 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_chain

daripada 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 manusia
Memandangkan 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.