Bagaimana untuk Melaksanakan Logik ReAct Menggunakan Ejen dalam LangChain?

Bagaimana Untuk Melaksanakan Logik React Menggunakan Ejen Dalam Langchain



LangChain ialah rangka kerja untuk membina model bahasa dan chatbot yang boleh memahami dan menjana teks dalam bahasa manusia. Prestasi model adalah berdasarkan pemahaman bahasa dan kerumitannya semasa fasa latihan proses. Fasa seterusnya ialah menjana data atau teks dalam bahasa semula jadi yang mudah dibaca dan difahami. Fasa-fasa ini disebut sebagai “ Penaakulan ” dan “ berlakon ” masing-masing dalam domain Pemprosesan Bahasa Semulajadi.

Rangka Pantas

Siaran ini akan menunjukkan:

Bagaimana untuk Melaksanakan Logik ReAct Menggunakan Ejen dalam LangChain?

' Bertindak ” ialah gabungan fasa Sebab dan Tindakan untuk meningkatkan prestasi model bahasa sebagai “ Re ' merujuk kepada sebab dan ' Bertindak ” untuk bertindak. Logik ReAct sering dianggap paling dioptimumkan untuk membina LLM atau chatbot untuk memahami dan menjana teks. Ejen ialah pembuat keputusan yang memutuskan tindakan mana yang perlu dilakukan dan mengikut susunan yang akan dilakukan.







Untuk mempelajari proses melaksanakan logik ReAct menggunakan ejen dalam LangChain, hanya melalui panduan berikut:



Langkah 1: Memasang Rangka Kerja

Pertama sekali, pasang LangChain untuk memulakan proses melaksanakan logik ReAct:



pip pasang langchain





Pasang modul google-search-results untuk mendapatkan kebergantungan untuk membina ejen yang boleh mendapatkan hasil carian daripada google:

pip pasang openai google-search-results



Selepas itu, pasang modul OpenAI yang boleh digunakan untuk memuatkan Model Bahasa Besar atau LLM untuk melaksanakan logik ReAct:

pip pasang openai

Selepas mendapat semua modul yang diperlukan, sediakan sahaja Persekitaran OpenAI untuk membina LLM dan Persekitaran SerpAPI untuk menggunakan ejen dalam model:

import awak

import getpass

awak . lebih kurang [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API Key:' )

awak . lebih kurang [ 'SERPAPI_API_KEY' ] = getpass . getpass ( 'Kunci API Serpapi:' )

Langkah 2: Memuatkan Model Bahasa

Langkah seterusnya ialah memuatkan model bahasa dengan mengimport perpustakaan yang diperlukan menggunakan rangka kerja LangChain:

daripada langchain. ejen import load_tools

daripada langchain. ejen import initialize_agent

daripada langchain. ejen import Jenis Agen

daripada langchain. llms import OpenAI

Gunakan kaedah OpenAI() untuk membina Model Bahasa (llm) dan kemudian konfigurasikan alatan untuk ejen menggunakan SerpAPI:

llm = OpenAI ( suhu = 0 )

alatan = load_tools ( [ 'serpapi' , 'llm-math' ] , llm = llm )

Kaedah 1: Menggunakan Bahasa Ekspresi LandChain

LCEL ialah proses menyepadukan atau mengarang rantai bersama-sama sambil membina model bahasa dalam LangChain. Mulakan proses dengan memasang LangChainHub untuk mendapatkan kebergantungannya untuk membina dan menggunakan logik ReAct dengan ejen dalam LangChain:

pip pasang langchainhub

Mengimport perpustakaan daripada LangChain seperti ReActSingleInputOutputParser untuk membina model yang boleh menggunakan model ReAct:

daripada langchain. alatan . render import render_text_description

daripada langchain. ejen . output_parser import ReActSingleInputOutputParser

daripada langchain. ejen . format_scratchpad import format_log_to_str

daripada langchain import hab

Muatkan model bahasa untuk mereka bentuk logik ReAct menggunakan kaedah pull() dan simpannya dalam pembolehubah segera. Tentukan beberapa alatan yang boleh digunakan untuk melaksanakan logik pada set data yang dimuatkan untuk melaksanakan kerjanya dengan ejen:

segera = hab. tarik ( 'hwchase17/react' )

segera = segera. separa (

alatan = render_text_description ( alatan ) ,

nama_alat = ',' . sertai ( [ t. nama untuk t dalam alatan ] ) ,

)

Ejen Bangunan

Sekarang, konfigurasikan ejen dan alatannya dengan menyepadukannya dengan model bahasa yang dimuatkan dalam langkah 2 panduan ini:

llm_with_stop = llm. mengikat ( berhenti = [ ' \n Pemerhatian' ] )

Tentukan pembolehubah ejen untuk menyediakan hujah dan alat untuk mengkonfigurasi ejen yang menerangkan kerjanya. Bahagian yang dikonfigurasikan sebelum ini seperti kaedah llm_with_stop dan ReActSingleInputOutputParser() sedang disepadukan dengan ejen:

ejen = {

'input' : lambda x: x [ 'input' ] ,

'agent_scratchpad' : lambda x: format_log_to_str ( x [ 'langkah_perantaraan' ] )

} | segera | llm_with_stop | ReActSingleInputOutputParser ( )

Dapatkan pustaka AgentExecutor dan konfigurasikan kaedahnya menggunakan hujah seperti ejen, alatan dan verbose untuk mendapatkan output yang lebih mudah dibaca:

daripada langchain. ejen import AgenPelaksana

ejen_pelaksana = AgenPelaksana ( ejen = ejen , alatan = alatan , bertele-tele = betul )

Guna kaedah agent_executor() dengan pertanyaan rentetan sebagai input yang akan mencetuskan ejen untuk mengekstrak output:

ejen_pelaksana. menyeru ( { 'input' : 'Siapa teman wanita Leo DiCaprio' } )

Pengeluaran

Tangkapan skrin berikut memaparkan bahawa ejen telah mengekstrak maklumat menggunakan logik ReAct dan menghasilkan teks dalam bahasa semula jadi:

Kaedah 2: Menggunakan ZeroShotReactAgent

Logik ReAct juga boleh dilaksanakan dengan menggunakan ejen lain seperti ZeroShotReactAgent semasa mengkonfigurasi pembolehubah agent_executor. Selepas itu, hanya panggil pembolehubah agent_executor dengan soalan sebagai input untuk memanggil ejen:

ejen_pelaksana = initialize_agent ( alatan , llm , ejen = Jenis Agen. ZERO_SHOT_REACT_DESCRIPTION , bertele-tele = betul )

ejen_pelaksana. menyeru ( { 'input' : 'Berapakah umur teman wanita Leo DiCaprio dinaikkan kepada kuasa 0.21' } )

Pengeluaran

Ejen telah mengekstrak maklumat berdasarkan input yang ditanya semasa menggunakan agent_executor:

Kaedah 3: Menggunakan Model Sembang

Proses lain yang boleh digunakan untuk melaksanakan logik ReAct dengan menggunakan model sembang selepas mengimport perpustakaan ChatOpenAI:

daripada langchain. chat_models import ChatOpenAI

Bina model sembang menggunakan kaedah ChatOpenAI() dengan nilai suhu bersamaan dengan 0 yang boleh mengawal rawak dalam keputusan model:

chat_model = ChatOpenAI ( suhu = 0 )

Muatkan model di mana pengguna boleh melaksanakan logik ReAct untuk menyimpannya dalam pembolehubah segera dan konfigurasikan alat untuk digunakan dalam proses:

segera = hab. tarik ( 'hwchase17/react-json' )

segera = segera. separa (

alatan = render_text_description ( alatan ) ,

nama_alat = ',' . sertai ( [ t. nama untuk t dalam alatan ] ) ,

)

Membina Ejen

Gunakan model sembang untuk menyimpan pemerhatian atau mesej terbaharu apabila model berhenti menjana teks:

chat_model_with_stop = chat_model. mengikat ( berhenti = [ ' \n Pemerhatian' ] )

Dapatkan pustaka ReActJsonSingleInputOutputParser untuk melaksanakan logik ReAct dan menghasilkan keputusan dalam format JSON:

daripada langchain. ejen . output_parser import ReActJsonSingleInputOutputParser

Bina dan konfigurasikan ejen menggunakan pembolehubah dan kaedah chat_model untuk menghasilkan hasil dengan memanggil ejen:

ejen = {

'input' : lambda x: x [ 'input' ] ,

'agent_scratchpad' : lambda x: format_log_to_str ( x [ 'langkah_perantaraan' ] )

} | segera | chat_model_with_stop | ReActJsonSingleInputOutputParser ( )

Konfigurasikan agent_executor dan jalankannya untuk mendapatkan hasil berdasarkan pertanyaan yang disediakan dalam pembolehubah input:

ejen_pelaksana = AgenPelaksana ( ejen = ejen , alatan = alatan , bertele-tele = betul )

ejen_pelaksana. menyeru ( { 'input' : 'Berapakah umur teman wanita Leo DiCaprio dinaikkan kepada kuasa 0.21' } )

Pengeluaran

Ejen telah mengekstrak output seperti yang dipaparkan dalam tangkapan skrin berikut:

Kaedah 4: Menggunakan ChatZeroShotReactAgent

Menukar nilai ejen juga boleh digunakan untuk melaksanakan logik ReAct dengan rangka kerja LangChain:

ejen = initialize_agent ( alatan , chat_model , ejen = Jenis Agen. CHAT_ZERO_SHOT_REACT_DESCRIPTION , bertele-tele = betul )

ejen. lari ( 'Berapakah umur teman wanita Leo DiCaprio dinaikkan kepada kuasa 0.21' )

Pengeluaran

Struktur output mengandungi maklumat terperinci tentang kerja ejen daripada token dan model yang digunakan untuk mengekstrak maklumat:

Itu sahaja tentang proses melaksanakan logik ReAct menggunakan ejen dalam LangChain.

Kesimpulan

Untuk melaksanakan logik ReAct dengan ejen menggunakan rangka kerja LangChain, pasang modul seperti google-search-results untuk mengkonfigurasi ejen. Selepas itu, sediakan persekitaran menggunakan bukti kelayakan OpenAI dan SerpAPI daripada akaun mereka untuk mula menggunakan model. Logik ReAct boleh dilaksanakan menggunakan model LCEL dan sembang dengan berbilang ejen yang ditawarkan oleh modul LangChain. Panduan ini telah menghuraikan tentang pelaksanaan logik ReAct menggunakan ejen dalam LangChain.