Kuidas lisada mälu nii agendile kui ka selle tööriistadele LangChainis?

Kuidas Lisada Malu Nii Agendile Kui Ka Selle Tooriistadele Langchainis



LangChain pakub kõiki vajalikke tööriistu agentide loomiseks, et juhtida kasutaja jaoks teabe hankimise protsessi. Need tööriistad on vajalikud agendi loomiseks, kuna nad haldavad ülesandeid erinevate tööriistade abil. Agendid manipuleerivad neid tööriistu ka sammude läbimiseks ja kõigi tegevuste rakendamiseks. See teab, millist tööriista on töö jaoks vaja ja millal see konkreetse ülesande jaoks määrata.

Kiire ülevaade

See postitus näitab järgmist:

Kuidas lisada mälu nii agendile kui ka selle tööriistadele LangChainis?

Mälu lisamine agentidele ja tööriistadele võimaldab neil paremini töötada, kasutades mudeli vestlusajalugu. Mälu abil saab agent tõhusalt otsustada, millist tööriista ja millal juurutada. Eelistatakse kasutada ' ReadOnlyMemory ” nii agentide kui ka tööriistade jaoks, et nad ei saaks seda muuta. LangChainis nii agentidele kui ka tööriistadele mälu lisamise protsessi tundmaõppimiseks läbige loetletud sammud.







1. samm: raamistike installimine

Kõigepealt installige langchain-eksperimentaalne moodul, et saada selle sõltuvused agendi keelemudelite ja tööriistade loomiseks. LangChain eksperimentaalne on moodul, mis hangib sõltuvused mudelite ehitamiseks, mida kasutatakse enamasti katseteks ja katseteks:



pip install langchain - eksperimentaalne



Hankige google-otsingu tulemused OpenAI sõltuvustega moodulid, et saada Internetist kõige asjakohasemaid vastuseid:





pip install openai google - otsing - tulemused

2. samm: keskkondade seadistamine

Internetist vastuseid saava mudeli koostamiseks on vaja seadistada keskkonnad, kasutades OpenAI ja SerpAPi võtmed:



importida sina
importida saada pass

sina. umbes [ 'OPENAI_API_KEY' ] = saada pass. saada pass ( 'OpenAI API võti:' )
sina. umbes [ 'SERPAPI_API_KEY' ] = saada pass. saada pass ( 'Serpapi API võti:' )

3. samm: teekide importimine

Pärast keskkondade seadistamist importige teegid, et luua agendi tööriistad ja lisamälu nendega integreerimiseks. Järgmine kood kasutab vajalike teekide hankimiseks agente, mälu, llms-i, ahelaid, viipasid ja utiliite:

langchainist. agendid importida ZeroShotAgent , Tööriist , Agent Executor
langchainist. mälu importida ConversationBufferMemory , ReadOnlySharedMemory
langchainist. llms importida OpenAI
#hankige raamatukogu jaoks ahela loomine LangChaini abil
langchainist. ketid importida LLMChain
langchainist. viipasid importida PromptMall
#hankige raamatukogu jaoks teabe hankimine Internetist
langchainist. kommunaalteenused importida SerpAPIWrapper

4. samm: ReadOnlyMemory lisamine

Konfigureerige agendi mall, et alustada ülesannete täitmist kohe pärast kasutaja sisestamist. Pärast seda lisage 'ConversationBufferMemory()' mudeli vestlusajaloo salvestamiseks ja lähtestamiseks 'ReadOnlyMemory' agentide ja selle tööriistade jaoks:

malli = '' 'See on vestlus inimese ja roboti vahel:

{chat_history}
#määrake struktuur täpse ja lihtsa kokkuvõtte ekstraheerimiseks
Tehke vestluse {input} kokkuvõte:
'
''

viip = PromptMall ( sisend_muutujad = [ 'sisend' , 'vestluse_ajalugu' ] , malli = malli )
mälu = ConversationBufferMemory ( mälu_võti = 'vestluse_ajalugu' )
ainult lugemismälu = ReadOnlySharedMemory ( mälu = mälu )
#kokkuvõtte ahel kõigi komponentide integreerimiseks jaoks vestluse kokkuvõtte saamine
kokkuvõte_ahel = LLMChain (
llm = OpenAI ( ) ,
viip = viip ,
paljusõnaline = Tõsi ,
mälu = ainult lugemismälu ,
)

5. samm: tööriistade seadistamine

Nüüd seadistage sellised tööriistad nagu otsing ja kokkuvõte, et saada vastuseid Internetist koos vestluse kokkuvõttega:

otsing = SerpAPIWrapper ( )
tööriistad = [
Tööriist (
nimi = 'Otsing' ,
func = otsing. jooksma ,
kirjeldus = 'õiged vastused sihitud päringutele hiljutiste sündmuste kohta' ,
) ,
Tööriist (
nimi = 'Kokkuvõte' ,
func = kokkuvõte_ahel. jooksma ,
kirjeldus = 'abiks vestluse kokkuvõtte tegemiseks ja selle tööriista sisend peaks olema string, mis tähistab seda, kes seda kokkuvõtet loeb' ,
) ,
]

6. samm: agendi loomine

Konfigureerige agent niipea, kui tööriistad on vajalike ülesannete täitmiseks valmis ja vastused Internetist hankima. ' eesliide Muutuja ' käivitatakse enne, kui agendid määravad tööriistadele mis tahes ülesande ja ' järelliide ” käivitatakse pärast seda, kui tööriistad on vastuse välja võtnud:

eesliide = '' 'Vestlege inimesega, vastates järgmistele küsimustele võimalikult hästi, kasutades järgmisi tööriistu:' ''
järelliide = '' 'Alusta!'
#struktuur jaoks agent, mis hakkab mälu kasutamise ajal tööriistu kasutama
{ vestluse_ajalugu }
küsimus : { sisend }
{ agent_scratchpad } '' '

prompt = ZeroShotAgent.create_prompt(
#configure viipamalle, et mõista küsimuse konteksti
tööriistad,
prefiks = prefiks,
järelliide=liide,
input_variables=['
sisend ', ' vestluse_ajalugu ', ' agent_scratchpad '],
)

1. meetod: ReadOnlyMemory kasutamine

Kui agent on seatud tööriistu käivitama, on ReadOnlyMemory-ga mudel eelistatud viis vastuste toomiseks kettide loomiseks ja käivitamiseks ning protsess on järgmine:

1. samm: ahela ehitamine

Selle meetodi esimene samm on ahela ja täitja loomine 'ZeroShotAgent()' oma argumentidega. The 'LLMChain()' kasutatakse ühenduse loomiseks kõigi keelemudeli vestluste vahel, kasutades argumente llm ja prompt. Agent kasutab argumendina llm_chain, tools ja verbose ning ehitab agent_chain, et käivitada nii agente kui ka selle tööriistu mäluga:

llm_chain = LLMChain ( llm = OpenAI ( temperatuuri = 0 ) , viip = viip )
agent = ZeroShotAgent ( llm_chain = llm_chain , tööriistad = tööriistad , paljusõnaline = Tõsi )
agent_ahel = Agent Executor. from_agent_and_tools (
agent = agent , tööriistad = tööriistad , paljusõnaline = Tõsi , mälu = mälu
)

2. samm: ahela testimine

Helistage agent_ahel Internetist küsimuse esitamiseks meetodi run() abil:

agent_ahel. jooksma ( sisend = 'Mis on LangChain' )

Agent on otsinud otsingutööriistade abil vastuse Internetist:

Kasutaja saab agendiga ühendatud mälu testimiseks esitada ebaselge järelküsimuse:

agent_ahel. jooksma ( sisend = 'Kes selle välja töötas?' )

Agent on kasutanud eelmist vestlust küsimuste konteksti mõistmiseks ja toonud vastused, nagu on näidatud järgmisel ekraanipildil:

Agent kasutab tööriista (summary_chain), et ekstraheerida kokkuvõte kõigist varem agendi mälu kasutades ekstraheeritud vastustest:

agent_ahel. jooksma (
sisend = 'Aitäh! Tehke vestlusest kokkuvõte minu 5-aastase kohta'
)

Väljund
Eelnevalt esitatud küsimuste kokkuvõte on 5-aastase lapse kohta kuvatud järgmisel ekraanipildil:

3. samm: mälu testimine

Printige puhvermälu, et eraldada sellesse salvestatud vestlused, kasutades järgmist koodi:

printida ( agent_ahel. mälu . puhver )

Vestlused õiges järjekorras ilma muudatusteta on kuvatud järgmises katkendis:

2. meetod: sama mälu kasutamine nii agendi kui ka tööriistade jaoks

Teine meetod, mida platvorm ei soovita, on puhvermälu kasutamine nii agentide kui ka tööriistade jaoks. Tööriistad võivad muuta mällu salvestatud vestlusi, mis võivad suurtes vestlustes anda valeväljundeid:

1. samm: ahela ehitamine

Malli täieliku koodi kasutamine agentide tööriistade ja kettide koostamiseks väikese muudatusega, kuna ReadOnlyMemory seekord ei lisata:

malli = '' 'See on vestlus inimese ja roboti vahel:

{chat_history}

Kirjutage vestluse kokkuvõte {input} jaoks:
'
''
#ehitage vestluse struktuur liides kasutades viipa malli, lisades mälu ketiga
viip = PromptMall ( sisend_muutujad = [ 'sisend' , 'vestluse_ajalugu' ] , malli = malli )
mälu = ConversationBufferMemory ( mälu_võti = 'vestluse_ajalugu' )
kokkuvõte_ahel = LLMChain (
llm = OpenAI ( ) ,
viip = viip ,
paljusõnaline = Tõsi ,
mälu = mälu ,
)
#ehitage tööriistu ( otsing ja kokkuvõte ) jaoks agentide seadistamine
otsing = SerpAPIWrapper ( )
tööriistad = [
Tööriist (
nimi = 'Otsing' ,
func = otsing. jooksma ,
kirjeldus = 'õiged vastused sihitud päringutele hiljutiste sündmuste kohta' ,
) ,
Tööriist (
nimi = 'Kokkuvõte' ,
func = kokkuvõte_ahel. jooksma ,
kirjeldus = 'abiks vestluse kokkuvõtte hankimisel ja selle tööriista jaoks on vaja stringi, mis näitab, kes seda kokkuvõtet loeb' ,
) ,
]
#selgitage samme jaoks agent kasutab teabe hankimiseks tööriistu jaoks vestlus
eesliide = '' 'Vestlege inimesega, vastates päringutele parimal võimalikul viisil, kasutades järgmisi tööriistu:' ''
järelliide = '' 'Alusta!'
#struktuur jaoks agent, mis hakkab mälu kasutamise ajal tööriistu kasutama
{ vestluse_ajalugu }
küsimus : { sisend }
{ agent_scratchpad } '' '

prompt = ZeroShotAgent.create_prompt(
#configure viipamalle, et mõista küsimuse konteksti
tööriistad,
prefiks = prefiks,
järelliide=liide,
input_variables=['
sisend ', ' vestluse_ajalugu ', ' agent_scratchpad '],
)
#integreerige kõik komponendid agenditäituri loomise ajal
llm_ahel = LLMChain(llm=OpenAI(temperatuur=0), prompt=prompt)
agent = ZeroShotAgent(llm_chain=llm_chain, tools=tööriistad, verbose=True)
agent_chain = AgentExecutor.from_agent_and_tools(
agent=agent, tööriistad=tööriistad, verbose=tõene, mälu=mälu
)

2. samm: ahela testimine

Käivitage järgmine kood:

agent_ahel. jooksma ( sisend = 'Mis on LangChain' )

Vastus kuvatakse edukalt ja salvestatakse mällu:

Esitage järelküsimus, ilma palju konteksti avaldamata:

agent_ahel. jooksma ( sisend = 'Kes selle välja töötas?' )

Agent kasutab mälu, et mõista küsimust, muutes selle ja prindib seejärel vastuse:

Hankige agendiga ühendatud mälu abil vestluse kokkuvõte:

agent_ahel. jooksma (
sisend = 'Aitäh! Tehke vestlusest kokkuvõte minu 5-aastase kohta'
)

Väljund
Kokkuvõte on edukalt välja võetud ja siiani tundub kõik olevat sama, kuid muudatus tuleb järgmises etapis:

3. samm: mälu testimine

Vestlussõnumite mälust eraldamine järgmise koodi abil:

printida ( agent_ahel. mälu . puhver )

Tööriist on muutnud ajalugu, lisades veel ühe küsimuse, mida algselt ei küsitud. See juhtub siis, kui mudel mõistab küsimust kasutades a endalt küsima küsimus. Tööriist arvab ekslikult, et seda küsib kasutaja ja käsitleb seda eraldi päringuna. Seega lisab see mällu ka selle lisaküsimuse, mida saab seejärel kasutada vestluse konteksti leidmiseks:

Praeguseks kõik.

Järeldus

Nii agendile kui ka selle tööriistadele mälu lisamiseks LangChainis installige moodulid, et hankida nende sõltuvused ja importida neist teeke. Pärast seda looge mälu lisamiseks vestlusmälu, keelemudel, tööriistad ja agent. The soovitatav meetod mälu lisamiseks kasutab agendile ReadOnlyMemory ja selle tööriistu vestlusajaloo salvestamiseks. Kasutaja saab kasutada ka vestlusmälu nii agentide kui tööriistade jaoks. Aga nad saavad segaduses mõnikord ja muutke mälus olevaid vestlusi.