LangChain'e Özel Bellek Türü Nasıl Eklenir?

Langchain E Ozel Bellek Turu Nasil Eklenir



LangChain, insanlarla sohbet gibi etkileşim kurabilen Dil Modellerini veya Sohbet Robotlarını yapılandırmak/tasarlamak için kullanılır. Bu sohbet mesajları LangChain adından da anlaşılacağı gibi zincirlerle birbirine bağlıdır ve kullanıcı bunları hafızasında da saklayabilir. LangChain, geliştiricilerin yerleşik sınıfların kullanımını veya kendi belleklerinin özelleştirilmesini sağlayan bellek kitaplıklarını kullanmalarına olanak tanır.

Hızlı Taslak

Bu gönderi şunları gösterecek:







LangChain'e Özel Bellek Türü Nasıl Eklenir?



Çözüm



LangChain'e Özel Bellek Türü Nasıl Eklenir?

LangChain'e özelleştirilmiş bir bellek türü eklemek, kullanıcının bellek olarak en fazla performansı elde etmesini sağlar. Kullanıcı, bellek tipini gereksinimlerine göre yapılandırabilir. LangChain'e özel bir bellek türü eklemek için aşağıdaki adımları uygulamanız yeterlidir:





Adım 1: Çerçeveleri Yükleme

Öncelikle, özel bir bellek türü ekleme işlemine başlamak için LangChain çerçevesini yükleyin:

pip kurulumu langchain

Yukarıdaki komutu Python Notebook'ta çalıştırmak, aşağıdaki kod parçasında görüntülendiği gibi LangChain bağımlılıklarını yükleyecektir:



Yüksek Lisans'ları yapılandırmak için kullanılabilecek kitaplıklarını almak için OpenAI modülünü yükleyin:

pip kurulumu openai

Bu kılavuz, LangChain'deki özel bellek tipini tasarlamak için spaCy çerçevesini kullanacak ve modülü kurmak için aşağıdaki kod kullanılacaktır:

pip kurulum alanı

SpaCy modeli, önceki sohbet mesajları gibi bilgileri gözlem olarak saklamak için karma tablosunu kullanır. Gelişmiş bir NLP modeli oluşturmak amacıyla Büyük Dil Modeli'ni veya LLM'yi spaCy kütüphanesinden indirmek için aşağıdaki kod kullanılır:

! python -m spacy indirme tr_core_web_lg

İçe aktarılıyor “ Sen ' Ve ' geçiş izni ” kitaplıklar OpenAI hesabından API anahtarını girmek içindir ortamını kurdu :

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ı:' )

Adım 2: Kitaplıkları İçe Aktarma

Bir sonraki adım, bellek türünü sohbet modeline göre özelleştirmek için gerekli kitaplıkları içe aktarmaktır:

itibaren Langchain. şema içe aktarmak Temel Bellek

itibaren Langchain. zincirler içe aktarmak Konuşma Zinciri

itibaren pıdantik içe aktarmak Temel Model

itibaren Langchain. lms içe aktarmak OpenAI

itibaren yazıyor içe aktarmak Liste , Dikte , Herhangi

“İçe aktarılıyor uzay “ kütüphanesini yüklemek için tr_core_web_lg ” modelini seçin ve onu “ nlp ” değişkeni Doğal Dil İşleme modeli olduğu için:

içe aktarmak ferah

nlp = ferah. yük ( 'tr_core_web_lg' )

3. Adım: Özel Bellek Oluşturma

Bundan sonra, Memory sınıfındaki BaseMemory ve BaseModel bağımsız değişkenlerini kullanarak özel belleği oluşturmanız yeterlidir. Ardından, tam bilgi olarak veya tek bir birim olarak bellekte saklanabilecek varlıkları (verilerden toplanan/saklanan) yapılandırın. Bellek, belleğin ve modelin performansını optimize etmek için belgedeki tüm varlıkları içerecek şekilde yapılandırılmıştır:

sınıf SpacyEntityMemory ( Temel Bellek , Temel Model ) :
''' Varlıklar hakkında bilgi depolamak için hafıza sınıfı'''
varlıklar: dikte etmek = { }
hafıza_anahtarı: cadde = 'varlıklar'
kesinlikle temizlemek ( öz ) :
öz . varlıklar = { }
@ mülk
kesinlikle hafıza_değişkenleri ( öz ) - > Liste [ cadde ] :
''' Sorguya sağlanan değişkenleri başlat'''
geri dönmek [ öz . hafıza_anahtarı ]
#bağımsız değişkenleri kullanarak bellek değişkenlerini tanımlayın
kesinlikle load_memory_variables ( öz , girişler: Dikte [ cadde , Herhangi ] ) - > Dikte [ cadde , cadde ] :
''' Bellek için değişkenleri, yani varlık anahtarını çağırın'''
doktor = nlp ( girişler [ liste ( girişler. anahtarlar ( ) ) [ 0 ] ] )
#bir birimin hafızasında saklanacak varlıkları yapılandırma
varlıklar = [
öz . varlıklar [ cadde ( ent ) ] için ent içinde doktor. entler eğer cadde ( ent ) içinde öz . varlıklar
]
geri dönmek { öz . hafıza_anahtarı : ' \N ' . katılmak ( varlıklar ) }
#belleği kullanmak için save_context() yöntemini tanımlayın
kesinlikle save_context ( öz , girişler: Dikte [ cadde , Herhangi ] , çıktılar: Dikte [ cadde , cadde ] ) - > Hiçbiri :
'''Bu sohbetteki gözlemleri hafızaya kaydet'''
metin = girişler [ liste ( girişler. anahtarlar ( ) ) [ 0 ] ]
doktor = nlp ( metin )
için ent içinde doktor. entler :
ent_str = cadde ( ent )
eğer ent_str içinde öz . varlıklar :
öz . varlıklar [ ent_str ] + = F ' \N {metin}'
başka :
öz . varlıklar [ ent_str ] = metin

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

Bundan sonra, kullanıcı/insan tarafından sağlanan girdinin yapısını açıklayan bilgi istemi şablonunu yapılandırmanız yeterlidir:

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

şablon = '''Aşağıdaki bir makine ile insan arasındaki etkileşimdir Bilmiyor diyor Makine cevabı bilmiyorsa Makine (AI) kendi bağlamından ayrıntılar sağlar ve herhangi bir sorunun cevabını anlamazsa cevap verir sadece üzgünüm diyor

Varlık bilgisi:

{varlıklar}

İletişim:

İnsan: {giriş}

AI:'''


çabuk = İstem Şablonu ( girdi_değişkenleri = [ 'varlıklar' , 'giriş' ] , şablon = şablon )

Adım 5: Modelin Test Edilmesi

Modeli test etmeden önce, LLM'yi OpenAI() yöntemini kullanarak yapılandırmanız ve ConversationChain() işlevini argümanlarla ayarlamanız yeterlidir:

llm = OpenAI ( sıcaklık = 0 )

konuşma = Konuşma Zinciri (

llm = llm , çabuk = çabuk , ayrıntılı = Doğru , hafıza = SpacyEntityMemory ( )

)

Konuşma değişkeniyle tahmin() yöntemini çağırırken giriş bağımsız değişkenini kullanarak modele bilgi verin:

konuşma. tahmin etmek ( giriş = 'Harrison makine öğrenimini seviyor' )

Çıktı

Model, bilgiyi özümseyerek hafızasında sakladı ve ayrıca konuşmaya devam etmek için bilgiyle ilgili soruyu sordu:

Kullanıcı, belleğe daha fazla bilgi eklemek için modelden soruya yanıt verebilir veya bilgilerle ilgili soruyu sorarak belleği test edebilir:

konuşma. tahmin etmek (

giriş = 'Harrison'un en sevdiği konu nedir?'

)

Model, önceki bilgilere dayanarak çıktıyı verir ve bunu aşağıdaki kod parçasında gösterildiği gibi ekranda görüntüler:

Hepsi LangChain'e özel bir bellek türü eklemekle ilgili.

Çözüm

LangChain'e özel bir bellek türü eklemek için, özel belleği oluşturmak üzere kitaplıkları içe aktarmak için gerekli modülleri kurmanız yeterlidir. spaCy, bu kılavuzda NLP modelini kullanarak özel bir bellek eklemek için kullanılan önemli kitaplıktır. Bundan sonra, sohbet arayüzünün yapısını vermek için özel belleği ve bilgi istemi şablonunu yapılandırın. Yapılandırma tamamlandıktan sonra, depolanan verilerle ilgili bilgileri sorarak modelin belleğini test etmeniz yeterlidir.