Snabb översikt
Det här inlägget kommer att visa:
- Hur man implementerar ReAct-logiken med hjälp av en agent i LangChain
- Installera ramar
- Laddar språkmodell
- Metod 1: Använda LandChain Expression Language
- Byggnadsagent
- Metod 2: Använd ZeroShotReactAgent
- Metod 3: Använda chattmodeller
- Bygger agenten
- Metod 4: Använd ChatZeroShotReactAgent
- Slutsats
Hur implementerar man ReAct-logiken med hjälp av en agent i LangChain?
den ' Reagera ” är kombinationen av Reason- och Action-faserna för att förbättra prestandan hos språkmodellen som ” Re ' hänvisar till förnuft och ' spela teater ” till handling. En ReAct-logik anses ofta vara den mest optimerade för att bygga LLM:er eller chatbots för att förstå och generera text. Agenten är beslutsfattaren som bestämmer vilka åtgärder som ska utföras och i vilken ordning som ska utföras.
För att lära dig processen att implementera ReAct-logiken med hjälp av en agent i LangChain, gå helt enkelt igenom följande guide:
Steg 1: Installera ramverk
Först av allt, installera LangChain för att komma igång med processen att implementera ReAct-logik:
pip installera langkedja
Installera google-search-results-modulen för att få beroenden för att bygga agenten som kan hämta sökresultaten från google:
pip installera openai google-search-results
Därefter installerar du OpenAI-modulerna som kan användas för att ladda de stora språkmodellerna eller LLM:erna för att implementera ReAct-logik:
pip installera openai
När du har fått alla nödvändiga moduler ställer du bara in OpenAI-miljö för att bygga LLM och SerpAPI miljö för att använda agenten i modellen:
importera duimportera getpass
du . ungefär [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API Key:' )
du . ungefär [ 'SERPAPI_API_KEY' ] = getpass . getpass ( 'Serpapi API Key:' )
Steg 2: Laddar språkmodell
Nästa steg är att ladda språkmodellerna genom att importera de nödvändiga biblioteken med hjälp av LangChain-ramverket:
från långkedja. agenter importera load_toolsfrån långkedja. agenter importera initialize_agent
från långkedja. agenter importera AgentType
från långkedja. llms importera OpenAI
Använd metoden OpenAI() för att bygga språkmodellen (llm) och konfigurera sedan verktygen för agenterna med SerpAPI:
llm = OpenAI ( temperatur = 0 )verktyg = ladda_verktyg ( [ 'serpapi' , 'llm-matte' ] , llm = llm )
Metod 1: Använda LandChain Expression Language
LCEL är processen att integrera eller komponera kedjor tillsammans samtidigt som man bygger språkmodellerna i LangChain. Starta processen genom att installera LangChainHub för att få dess beroenden för att bygga och använda ReAct-logik med agenter i LangChain:
pip installera langchainhub
Importera biblioteken från LangChain som ReActSingleInputOutputParser för att bygga modellen som kan använda ReAct-modellen:
från långkedja. verktyg . framställa importera render_text_descriptionfrån långkedja. agenter . output_parsers importera ReActSingleInputOutputParser
från långkedja. agenter . format_scratchpad importera format_log_to_str
från långkedja importera nav
Ladda språkmodellen för att designa ReAct-logiken med metoden pull() och lagra den i promptvariabeln. Definiera några verktyg som kan användas för att implementera logiken på den laddade datamängden för att implementera dess arbete med en agent:
prompt = nav. dra ( 'hwchase17/react' )prompt = prompt. partiell (
verktyg = render_text_description ( verktyg ) ,
verktygsnamn = ', ' . Ansluta sig ( [ t. namn för t i verktyg ] ) ,
)
Byggnadsagent
Konfigurera nu agenten och dess verktyg genom att integrera den med språkmodellen som laddas i steg 2 i den här guiden:
llm_with_stop = llm. binda ( sluta = [ ' \n Observation' ] )Definiera en agentvariabel för att tillhandahålla argument och verktyg för att konfigurera agenten som förklarar dess funktion. De tidigare konfigurerade delarna som llm_with_stop och ReActSingleInputOutputParser()-metoden integreras med agenten:
ombud = {'inmatning' : lambda x: x [ 'inmatning' ] ,
'agent_scratchpad' : lambda x: format_log_to_str ( x [ 'mellansteg' ] )
} | uppmaning | llm_with_stop | ReActSingleInputOutputParser ( )
Skaffa AgentExecutor-biblioteket och konfigurera dess metod med hjälp av argument som agent, verktyg och verbose för att få en mer läsbar utdata:
från långkedja. agenter importera AgentExecutoragent_exekutor = AgentExecutor ( ombud = ombud , verktyg = verktyg , mångordig = Sann )
Anropa metoden agent_executor() med strängfrågan som indata som kommer att trigga agenten att extrahera utdata:
agent_exekutor. åberopa ( { 'inmatning' : 'Vem är Leo DiCaprios flickvän' } )Produktion
Följande skärmdump visar att agenten har extraherat informationen med hjälp av ReAct-logiken och genererat texten på naturligt språk:
Metod 2: Använd ZeroShotReactAgent
ReAct-logiken kan också implementeras genom att använda en annan agent som ZeroShotReactAgent samtidigt som variabeln agent_executor konfigureras. Efter det, anropa variabeln agent_executor med frågan som indata för att anropa agenten:
agent_exekutor = initialize_agent ( verktyg , llm , ombud = AgentType. ZERO_SHOT_REACT_DESCRIPTION , mångordig = Sann )agent_exekutor. åberopa ( { 'inmatning' : 'Vad är Leo DiCaprios flickvänålder upphöjd till 0,21' } )
Produktion
Agenten har extraherat informationen baserat på indata som frågade när han anropade agent_executor:
Metod 3: Använda chattmodeller
En annan process som kan användas för att implementera ReAct-logiken genom att använda chattmodellerna efter import av ChatOpenAI-biblioteket:
från långkedja. chat_modeller importera ChatOpenAIBygg chattmodellen med metoden ChatOpenAI() med värdet på temperaturen lika med 0 som kan styra slumpen i resultaten av modellen:
chat_model = ChatOpenAI ( temperatur = 0 )Ladda modellen på vilken användaren kan implementera ReAct-logiken för att lagra den i promptvariabeln och konfigurera verktygen som ska användas i processen:
prompt = nav. dra ( 'hwchase17/react-json' )prompt = prompt. partiell (
verktyg = render_text_description ( verktyg ) ,
verktygsnamn = ', ' . Ansluta sig ( [ t. namn för t i verktyg ] ) ,
)
Bygger agenten
Använd chattmodellen för att lagra observationerna eller de senaste meddelandena när modellen slutar generera texten:
chattmodell_med_stopp = chat_model. binda ( sluta = [ ' \n Observation' ] )Skaffa ReActJsonSingleInputOutputParser-biblioteket för att implementera ReAct-logiken och producera resultaten i JSON-formatet:
från långkedja. agenter . output_parsers importera ReActJsonSingleInputOutputParserBygg och konfigurera agenten med chat_model-variabeln och metoden för att producera resultat genom att anropa agenten:
ombud = {'inmatning' : lambda x: x [ 'inmatning' ] ,
'agent_scratchpad' : lambda x: format_log_to_str ( x [ 'mellansteg' ] )
} | uppmaning | chat_model_with_stop | ReActJsonSingleInputOutputParser ( )
Konfigurera agent_executor och kör den för att få resultaten baserat på frågan i indatavariabeln:
agent_exekutor = AgentExecutor ( ombud = ombud , verktyg = verktyg , mångordig = Sann )agent_exekutor. åberopa ( { 'inmatning' : 'Vad är Leo DiCaprios flickvänålder upphöjd till 0,21' } )
Produktion
Agenten har extraherat utdata som visas i följande skärmdump:
Metod 4: Använd ChatZeroShotReactAgent
Att ändra värdet på agenten kan också användas för att implementera ReAct-logiken med LangChain-ramverket:
ombud = initialize_agent ( verktyg , chat_model , ombud = AgentType. CHAT_ZERO_SHOT_REACT_DESCRIPTION , mångordig = Sann )ombud. springa ( 'Vad är Leo DiCaprios flickvänålder upphöjd till 0,21' )
Produktion
Utdatastrukturen innehåller detaljerad information om hur agenten fungerar från tokens och modellen som används för att extrahera informationen:
Det handlar om processen att implementera ReAct-logiken med hjälp av en agent i LangChain.
Slutsats
För att implementera ReAct-logiken med en agent som använder LangChain-ramverket, installera moduler som google-search-results för att konfigurera agenten. Efter det ställer du in miljön med OpenAI- och SerpAPI-uppgifterna från deras konton för att börja använda modellen. ReAct-logiken kan implementeras med hjälp av LCEL- och chattmodellerna med flera agenter som erbjuds av LangChain-modulen. Den här guiden har utvecklat implementeringen av ReAct-logiken med hjälp av agenten i LangChain.