LangChain'de Çoklu Girişli Bir Zincire Bellek Nasıl Eklenir?

Langchain De Coklu Girisli Bir Zincire Bellek Nasil Eklenir



Chatbotlar ve Büyük Dil Modelleri dünya çapında milyonlarca kişi tarafından kullanılıyor ve bu modeller komut üzerine metin üretebiliyor. LangChain, geliştiricilerin bu tür modeller ve botlar oluşturmasına olanak tanıyan en etkili ve verimli çerçevelerden biridir. Kullanıcı girdi olarak bilgi istemleri veya sorgular verir ve model, komuta en çok benzeyen veya komuta benzeyen metni oluşturmadan önce komutu anlar.

Bu kılavuz, LangChain'de birden fazla girişi olan bir zincire bellek ekleme sürecini gösterecektir.

LangChain'de Çoklu Girişli Bir Zincire Bellek Nasıl Eklenir?

Modelin komutun içeriğini anlayabilmesi için en son mesajları veya verileri depolamak üzere bellek LLM'lere veya sohbet robotlarına eklenebilir. LangChain'de birden fazla girişi olan bir zincire bellek ekleme işlemini öğrenmek için aşağıdaki adımları uygulamanız yeterlidir:







Adım 1: Modülleri Kurun

İlk olarak, dil modelleri oluşturmak için çeşitli bağımlılıklara sahip olduğundan LangChain çerçevesini yükleyin:



pip kurulumu langchain



Bellek tarafından kullanılan verileri Chroma vektör deposunda depolamak için chromadb'yi yükleyin:





pip install chromadb

Tiktoken, kolayca yönetilebilmeleri için büyük belgelerden küçük parçalar oluşturmak için kullanılan tokenizerdir:



pip tiktoken kurulumu

OpenAI, OpenAI() yöntemini kullanarak zincirler ve LLM'ler oluşturmak için kullanılabilecek modüldür:

pip kurulumu openai

Adım 2: Ortamın Kurulumu ve Verilerin Yüklenmesi

Bu işlem için gerekli tüm modülleri kurduktan sonraki adım çevreyi ayarlama OpenAI hesabındaki API anahtarını kullanarak:

içe aktarmak Sen
içe aktarmak geçiş izni

Sen . yaklaşık olarak [ 'OPENAI_API_KEY' ] = geçiş izni . geçiş izni ( 'OpenAI API Anahtarı:' )

LangChain çerçevesinde zincirler oluşturmak için dosya kitaplığını kullanarak belgeleri yükleyin:

itibaren google. ve diğerleri içe aktarmak Dosyalar

yüklendi = Dosyalar. yüklemek ( )

3. Adım: Kitaplıkları İçe Aktarın

Belge başarıyla yüklendikten sonra gerekli kitaplıkları Langchain modülünden içe aktarmanız yeterlidir:

itibaren Langchain. gömmeler . açık içe aktarmak OpenAIE Yerleştirmeleri

itibaren Langchain. gömmeler . tutarlı olmak içe aktarmak TutarlıGömmeler

itibaren Langchain. metin_splitter içe aktarmak KarakterMetin Bölücü

itibaren Langchain. vektör mağazaları . elastic_vector_search içe aktarmak ElasticVectorArama

itibaren Langchain. vektör mağazaları içe aktarmak Renk

itibaren Langchain. doküman deposu . belge içe aktarmak Belge

4. Adım: Chroma Veritabanını Kullanarak Bellek Oluşturma

Şimdi, daha önce yüklenen belgenin yerleştirmelerini ve belirteçlerini depolamak için vektör alanını oluşturmaya başlayın:

ile açık ( 'birliğin_durumu.txt' ) gibi F:
birliğin Durumu = F. Okumak ( )
metin_splitter = KarakterMetin Bölücü ( Parça boyutu = 1000 , chunk_overlap = 0 )
metinler = text_splitter. bölünmüş metin ( birliğin Durumu )

gömmeler = OpenAIE Yerleştirmeleri ( )

Belgedeki metni ve eklemeleri depolamak için Chroma veritabanını yapılandırın:

doküman arama = Kroma. from_texts (

metinler , gömmeler , meta veriler = [ { 'kaynak' : Ben } için Ben içinde menzil ( sadece ( metinler ) ) ]

)

Sorgu değişkenindeki komutu sorarak belleği test edin ve ardından benzerlik_search() yöntemini yürütün:

sorgu = 'NATO ne zaman kuruldu'

dokümanlar = doküman araması. benzerlik_araması ( sorgu )

Adım 5: Bilgi İstemi Şablonunu Yapılandırma

Bu adım, aşağıdaki kitaplıkları içe aktararak bilgi istemleri için şablonu yapılandırma sürecini açıklamaktadır:

itibaren Langchain. zincirler . soru_cevaplama içe aktarmak load_qa_chain

itibaren Langchain. lms içe aktarmak OpenAI

itibaren Langchain. istemler içe aktarmak İstem Şablonu

itibaren Langchain. hafıza içe aktarmak Konuşma Tampon Belleği

Bundan sonra, sorgu için şablonu veya yapıyı yapılandırmanız ve modele bellek eklendikten sonra zinciri çalıştırmanız yeterlidir:

şablon = '''Bir insanla sohbet eden bir modelsin
Uzun bir belgeden alınan parçalar ve bir soru göz önüne alındığında son bir cevap oluşturun

{bağlam}

{geçmiş}
İnsan: {giriş}
Sohbet robotu:'''


çabuk = İstem Şablonu (
girdi_değişkenleri = [ 'geçmiş' , 'giriş' , 'bağlam' ] , şablon = şablon
)
hafıza = Konuşma Tampon Belleği ( hafıza_anahtarı = 'geçmiş' , giriş_anahtarı = 'giriş' )
zincir = load_qa_chain (
OpenAI ( sıcaklık = 0 ) , zincir_tipi = 'şey' , hafıza = hafıza , çabuk = çabuk
)

Adım 6: Belleği Test Etme

Sorgu değişkenini kullanarak soruyu sorarak ve ardından Chain() yöntemini parametreleriyle birlikte çalıştırarak modeli test etmenin zamanı geldi:

sorgu = 'NATO ne zaman kuruldu'

zincir ( { 'giriş_belgeleri' : dokümanlar , 'giriş' : sorgu } , return_only_outputs = Doğru )

Modelin verdiği yanıt yakın zamanda bellekte saklandığından, ara bellekte saklanan verileri yazdırın:

Yazdır ( zincir. hafıza . tampon )

Bu tamamen LangChain'de birden fazla girişi olan bir zincire bellek eklemekle ilgilidir.

Çözüm

LangChain'de birden fazla girişe sahip bir zincire bellek eklemek için, metinleri ve eklemeleri depolamak üzere modülleri ve vektör deposunu kurmanız yeterlidir. Bundan sonra, verileri/belgeyi yerel sistemden yükleyin ve ardından LLM için bellek oluşturmak amacıyla verileri depolamak için gerekli kitaplıkları içe aktarın. En son mesajları ara bellekte saklamak için bilgi istemi şablonunu yapılandırın ve ardından zincire mesaj gönderin. Bu kılavuz, LangChain'de birden fazla girişi olan bir zincire bellek ekleme sürecini ayrıntılı olarak ele almıştır.