Arama Zinciri ile Kendi Kendine Sor Nasıl Uygulanır?

Arama Zinciri Ile Kendi Kendine Sor Nasil Uygulanir



LangChain, doğal dildeki metni anlayabilen ve çıkarabilen dil modelleri ve sohbet robotları oluşturmaya yönelik bir modüldür. Doğal diller insanlar tarafından kolayca anlaşılabilir ancak makinelerin verileri tekrar tekrar inceleyerek öğrenmeleri gerekir. Doğal dillerdeki veriler/belgeler, modeli eğitmek ve ardından modelin performansını kontrol etmek için verilerden gelen istemleri istemek için kullanılabilir.

Hızlı Taslak

Bu gönderi aşağıdakileri gösterecektir:







Arama Zinciri ile Kendi Kendine Sor Nasıl Uygulanır?



Çözüm



Arama Zinciri ile Kendi Kendine Sor Nasıl Uygulanır?

Self-Ask, komutları iyice anladığı için zincirleme sürecini iyileştirme sürecidir. Zincirler, veri kümesinden tüm önemli terimlerle ilgili verileri çıkararak soruyu anlar. Model eğitilip sorguyu anladıktan sonra kullanıcı tarafından sorulan sorguya yanıt üretir.





LangChain'deki arama zincirleriyle kendi kendine sormayı uygulama sürecini öğrenmek için aşağıdaki kılavuzu incelemeniz yeterlidir:

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

Öncelikle aşağıdaki kodu kullanarak LangChain sürecini yükleyerek süreci başlatın ve sürece ilişkin tüm bağımlılıkları edinin:



pip kurulumu langchain

LangChain'i kurduktan sonra “ google-arama-sonuçları ” OpenAI ortamını kullanarak Google'dan arama sonuçlarını almak için:

pip install openai google arama sonuçları

Adım 2: Bina Ortamı

Modüller ve çerçeveler yüklendikten sonra ortamı ayarlayın. OpenAI Ve SerpAPi aşağıdaki kodu kullanarak API'lerini kullanarak. İlgili hesaplardan API anahtarlarını girmek için kullanılabilecek os ve getpass kitaplıklarını içe aktarın:

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ı:' )
Sen . yaklaşık olarak [ 'SERPAPI_API_KEY' ] = geçiş izni . geçiş izni ( 'Serpapi API Anahtarı:' )

3. Adım: Kitaplıkları İçe Aktarma

Ortamı kurduktan sonra gerekli kitaplıkları yardımcı programlar, aracılar, llm ve diğerleri gibi LangChain bağımlılıklarından içe aktarmanız yeterlidir:

itibaren Langchain. lms içe aktarmak OpenAI

itibaren Langchain. araçlar içe aktarmak SerpAPIWrapper

itibaren Langchain. ajanlar . çıktı_ayrıştırıcıları içe aktarmak SelfAskOutputParser

itibaren Langchain. ajanlar . format_scratchpad içe aktarmak format_log_to_str

itibaren uzun zincir içe aktarmak merkez

itibaren Langchain. ajanlar içe aktarmak başlat_agent , Alet

itibaren Langchain. ajanlar içe aktarmak Temsilci Türü

Adım 4: Dil Modellerinin Oluşturulması

Dil modelini yapılandırmak için OpenAI() kullanıldığından, süreç boyunca yukarıdaki kitaplıkların alınması gerekir. Arama değişkenini yapılandırmak ve aracının tüm görevleri gerçekleştirmesi için gereken araçları ayarlamak için SerpAPIWrapper() yöntemini kullanın:

llm = OpenAI ( sıcaklık = 0 )
aramak = SerpAPIWrapper ( )
aletler = [
Alet (
isim = 'Orta Cevap' ,
işlev = aramak. koşmak ,
Tanım = 'aramayla sormanız gerektiğinde kullanışlıdır' ,
)
]

Adım 5: LangChain İfade Dilini Kullanma

Modeli istem değişkenine yükleyerek aracıyı LangChain İfade Dili (LCEL) kullanarak yapılandırmaya başlarken:

çabuk = merkez. çekmek ( 'hwchase17/aramayla kendi kendine sor' )

Metin oluşturmayı durdurmak ve yanıtların uzunluğunu kontrol etmek için yürütülebilecek başka bir değişken tanımlayın:

llm_with_stop = llm. bağlamak ( durmak = [ ' \N Ara cevap:' ] )

Şimdi soruların yanıtlarını oluşturmak için aracıları olay odaklı sunucusuz bir platform olan Lambda'yı kullanarak yapılandırın. Ayrıca, daha önce yapılandırılan bileşenleri kullanarak optimize edilmiş sonuçları elde etmek amacıyla modeli eğitmek ve test etmek için gereken adımları da yapılandırın:

ajan = {
'giriş' : lambda x: x [ 'giriş' ] ,
'agent_scratchpad' : lambda x: format_log_to_str (
X [ 'ara_adımlar' ] ,
gözlem_prefix = ' \N Ara cevap: ' ,
llm_prefix = '' ,
) ,
} | bilgi istemi | llm_with_stop | SelfAskOutputParser ( )

Adım 6: Agent Executor'u Yapılandırma

Yöntemi test etmeden önce, aracının duyarlı olmasını sağlamak için AgentExecutor kitaplığını LangChain'den içe aktarmanız yeterlidir:

itibaren Langchain. ajanlar içe aktarmak AjanYürütücü

AgentExecutor() yöntemini çağırarak ve bileşenleri bağımsız değişken olarak kullanarak Agent_executor değişkenini tanımlayın:

ajan_yürütücü = AjanYürütücü ( ajan = ajan , aletler = aletler , ayrıntılı = Doğru )

Adım 7: Aracıyı Çalıştırma

Aracı yürütücüsü yapılandırıldıktan sonra, giriş değişkeninde soruyu/istemi sağlayarak aracı test etmeniz yeterlidir:

ajan_yürütücü. çağırmak ( { 'giriş' : 'Erkekler ABD Açık şampiyonu kim?' } )

Yukarıdaki kodun çalıştırılması, çıktıda ABD Açık Şampiyonunun adıyla yanıt verdi, yani Dominic Thiem:

Adım 8: Kendi Kendine Sor Aracısını Kullanma

Temsilciden yanıt aldıktan sonra, SELF_ASK_WITH_SEARCH run() yöntemindeki sorguyla aracı:

self_ask_with_search = başlat_agent (
aletler , llm , ajan = AgentType. SELF_ASK_WITH_SEARCH , ayrıntılı = Doğru
)
self_ask_with_search. koşmak (
'ABD Açık Dünya Şampiyonu Dominic Thiem'in memleketi neresidir?'
)

Aşağıdaki ekran görüntüsü, kendi kendine sorma aracısının veri kümesinden her önemli terim hakkındaki bilgileri çıkardığını göstermektedir. Sorguyla ilgili tüm bilgileri toplayıp soruları anladıktan sonra yanıtı üretir. Temsilcinin kendisine sorduğu sorular şunlardır:

  • Dominic Thiem kimdir?
  • Dominic Thiem'in memleketi neresidir?

Temsilci bu soruların cevaplarını aldıktan sonra asıl sorunun cevabını oluşturmuştur: “ Wiener Neustadt, Avusturya ”:

Tamamen LangChain çerçevesini kullanan bir arama zinciriyle kendi kendine sormayı uygulama süreciyle ilgilidir.

Çözüm

LangChain'de arama ile kendi kendine sormayı uygulamak için, aracıdan sonuçları almak üzere google-search-results gibi gerekli modülleri kurmanız yeterlidir. Bundan sonra sürece başlamak için OpenAI ve SerpAPi hesaplarındaki API anahtarlarını kullanarak ortamı ayarlayın. Aracıyı yapılandırın ve AgentExecutor() yöntemini kullanarak test etmek için kendi kendine sorma modeliyle modeli oluşturun.