Kiire ülevaade
See postitus näitab:
Kuidas kasutada agenti LangChainis struktureeritud väljundi tagastamiseks
- Raamistiku installimine
- OpenAI keskkond
- Vektoripoe loomine
- Tee määramine
- Andmete laadimine ja tükeldamine
- Retriiveri loomine
1. meetod: Agensi kombineerimine vektorpoodidega
2. meetod: agendi kasutamine ruuterina
3. meetod: agendi kasutamine Multi-Hop Vector Store'iga
Kuidas kasutada agenti LangChainis struktureeritud väljundi tagastamiseks?
Arendaja kasutab agente, et marsruutida mudelite koolitusandmeid sisaldavate andmebaaside vahel. Agendil on kogu protsessi plaan, salvestades kõik sammud. Agendil on tööriistad kõigi nende toimingute tegemiseks protsessi lõpuleviimiseks. Kasutaja saab agenti kasutada ka andmete hankimiseks erinevatest andmesalvedest, et mudel oleks mitmekesine.
Agentide ja vektoripoodide ühendamise protsessi õppimiseks LangChainis järgige lihtsalt loetletud samme.
1. samm: raamistike installimine
Esmalt installige moodul LangChain ja selle sõltuvused agentide ja vektorisalvede kombineerimiseks:
pip install langchain
Selles juhendis kasutame Chroma andmebaasi, mis võib salvestada andmeid erinevatesse asukohtadesse või tabelitesse.
pip install chromadb
Andmete paremaks mõistmiseks jagage suured failid tiktokeni tokenisaatori abil väiksemateks tükkideks:
pip install tiktoken
OpenAI on moodul, mida saab kasutada suure keelemudeli loomiseks LangChaini raamistikus:
pip install openai
2. samm: OpenAI keskkond
Järgmine samm on siin seada keskkonda kasutades OpenAI API-võtit, mille saab välja võtta OpenAI ametlikult kontolt:
importida sinaimportida saada pass
sina . umbes [ 'OPENAI_API_KEY' ] = saada pass . saada pass ( 'OpenAI API võti:' )
Nüüd laadige andmed kohalikust süsteemist üles Google'i koostöös, et neid edaspidi kasutada:
alates google. ET AL importida failidüles laaditud = failid. Laadi üles ( )
3. samm: vektorpoe loomine
See samm konfigureerib meie ülesande esimese komponendi, mis on üleslaaditud andmete salvestamiseks vektorihoidla. Vektorihoidlate konfigureerimiseks on vaja teeke, mida saab importida LangChaini erinevatest sõltuvustest:
alates langchain. manused . openai importida OpenAIEembeddings#Vector salvestab sõltuvuse vajaliku andmebaasi või vektori hankimiseks
alates langchain. vektorpoed importida Chroma
#Tekstijaoturit kasutatakse suure teksti teisendamiseks väiksemateks tükkideks
alates langchain. teksti_jagaja importida CharacterTextSplitter
alates langchain. llms importida OpenAI
alates langchain. document_loaders importida WebBaseLoader
alates langchain. ketid importida RetrievalQA
llm = OpenAI ( temperatuuri = 0 )
4. samm: tee määramine
Pärast teekide importimist määrake lihtsalt enne andmete salvestamist vektormäludele juurdepääsu tee:
alates pathlib importida Teeasjakohased_osad = [ ]
jaoks lk sisse Tee ( '.' ) . absoluutne ( ) . osad :
asjakohased_osad. lisama ( lk )
kui asjakohased_osad [ - 3 : ] == [ 'langchain' , 'dokumendid' , 'moodulid' ] :
murda
#Tingimuslik lause tsükli sees, et määrata iga andmebaasi tee
doc_path = str ( Tee ( *asjakohased_osad ) / 'liit_riik.txt' )
5. samm: andmete laadimine ja tükeldamine
Nüüd lihtsalt laadige andmed ja jagage need väiksemateks tükkideks, et muuta need loetavuse ja arusaadavuse paremaks. Looge andmete manuseid, teisendades teksti numbriteks, muutes nende vektorruumid ja salvestades need Chorma andmebaasi:
alates langchain. document_loaders importida TextLoader#Andmestiku laadimise teelt ja selle väiksemate osade salvestamiseks andmebaasi
laadur = TextLoader ( doc_path )
dokumente = laadur. koormus ( )
teksti_jagaja = CharacterTextSplitter ( tüki_suurus = 2000 , chunk_overlap = 0 )
tekstid = text_splitter. jagatud_dokumendid ( dokumente )
#Teisenda tekst numbriteks ja salvestage manustused andmebaasi
manused = OpenAIEembeddings ( )
docsearch = Chroma. from_documents ( tekstid , manused , kollektsiooni_nimi = 'liidu riik' )
6. samm: retriiveri loomine
Agendi- ja vektorpoodide ühendamiseks on vaja luua retriiver, kasutades LangChaini raamistikust meetodit RetrievalQA(). Seda otsingumeetodit soovitatakse vektorpoodidest andmete hankimiseks, kasutades agente andmebaasidega töötamiseks:
liidu_riik = RetrievalQA. from_chain_type (llm = llm , ahela_tüüp = 'kraam' , retriiver = docsearch. retriiverina ( )
)
Laadige teine andmestik, et integreerida agent mitme andmekogumi või vektorsalvega:
laadur = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )Salvestage ruffi andmestik chromadb-s pärast väiksemate andmetükkide loomist ka manustamisvektoritega:
dok = laadur. koormus ( )ruff_texts = text_splitter. jagatud_dokumendid ( dok )
ruff_db = Chroma. from_documents ( ruff_texts , manused , kollektsiooni_nimi = 'ruff' )
ruff = RetrievalQA. from_chain_type (
llm = llm , ahela_tüüp = 'kraam' , retriiver = ruff_db. retriiverina ( )
)
1. meetod: Agensi kombineerimine vektorpoodidega
Esimest meetodit nii agentide kui ka vektormälude ühendamiseks teabe eraldamiseks mainitakse allpool:
1. samm: tööriistade konfigureerimine
Nüüd, kui vektorite poed on konfigureeritud, liigume edasi meie protsessi teise komponendi, st agendi loomise poole. Protsessi agendi loomiseks importige teegid, kasutades selliseid sõltuvusi nagu agendid, tööriistad jne.
alates langchain. agendid importida initsialiseeri_agentalates langchain. agendid importida Agendi tüüp
#Agendi koostamiseks tööriistade hankimine LangChainist
alates langchain. tööriistad importida BaseTool
alates langchain. llms importida OpenAI
#LLMMathChaini hankimine kettidest keelemudeli koostamiseks
alates langchain. ketid importida LLMMathChain
alates langchain. kommunaalteenused importida SerpAPIWrapper
alates langchain. agendid importida Tööriist
Konfigureerige tööriistad, mida kasutatakse koos agentidega, kasutades QA süsteemi või varem konfigureeritud otsingut koos tööriistade nime ja kirjeldusega:
tööriistad = [Tööriist (
nimi = 'Liidu osariigi kvaliteedi tagamise süsteem' ,
func = liidu_riik. jooksma ,
kirjeldus = 'Annab vastuseid laaditud andmekogumiga seotud küsimustele koos sisendiga täielikult vormistatud küsimusena' ,
) ,
Tööriist (
nimi = 'Ruff QA süsteem' ,
func = ruff. jooksma ,
kirjeldus = 'Annab vastuseid küsimustele ruffi (püütoni linteri) kohta, sisestades täielikult vormistatud küsimuse' ,
) ,
]
2. samm: lähtestage agent
Kui tööriistad on konfigureeritud, määrake agent lihtsalt meetodi inicializa_agent() argumendis. Agent, mida me siin kasutame, on ZERO_SHOT_REACT_DESCRIPTION koos tööriistadega llm (keelemudel) ja paljusõnaline:
agent = initsialiseeri_agent (tööriistad , llm , agent = Agendi tüüp. ZERO_SHOT_REACT_DESCRIPTION , paljusõnaline = Tõsi
)
3. samm: testige agenti
Lihtsalt käivitage agent, kasutades meetodit run(), mis sisaldab argumendis küsimust:
agent. jooksma (Mida ütles president Joe Biden kõnes kanji browni kohta?
)
Järgmisel ekraanipildil kuvatakse vastus, mis on eraldatud mõlemast andmesalvest, kasutades agendi mällu salvestatud vaatlust:
2. meetod: agendi kasutamine ruuterina
Teine võimalus mõlema komponendi kombineerimiseks on agendi kasutamine ruuterina ja järgmine selgitab protsessi:
1. samm: tööriistade konfigureerimine
Agendi kasutamine ruuterina tähendab, et RetrievalQA süsteem tagastab väljundi otse, kuna tööriistad on konfigureeritud väljundit otse tagastama:
tööriistad = [#Agendi loomiseks vajalike tööriistade seadistamine andmetest andmete hankimiseks
Tööriist (
nimi = 'Liidu osariigi kvaliteedi tagamise süsteem' ,
func = liidu_riik. jooksma ,
kirjeldus = 'Annab vastuseid laaditud andmekogumiga seotud küsimustele koos sisendiga täieliku küsimusena' ,
return_direct = Tõsi ,
) ,
Tööriist (
nimi = 'Ruff QA süsteem' ,
func = ruff. jooksma ,
kirjeldus = 'Annab vastuseid küsimustele ruffi (püütoni linteri) kohta, sisestades täieliku küsimuse' ,
return_direct = Tõsi ,
) ,
]
2. samm: lähtestage ja testige agenti
Pärast tööriistade seadistamist määrake lihtsalt agent, mida saab kasutada ainult ruuterina, kasutades meetodit inicialiseeritud_agent():
agent = initsialiseeri_agent (tööriistad , llm , agent = Agendi tüüp. ZERO_SHOT_REACT_DESCRIPTION , paljusõnaline = Tõsi
)
Testige agenti, esitades meetodis agent.run() sisendküsimuse, käivitades järgmise käsu:
agent. jooksma (Mida ütles president Joe Biden kõnes kanji browni kohta?
)
Väljund
Väljundi ekraanipilt näitab, et agent on lihtsalt tagastanud vastuse küsimusele RetrievalQA süsteemi ekstraktitud andmekogumist:
3. meetod: agendi kasutamine Multi-Hop Vector Store'iga
Kolmas meetod, mille abil arendajad saavad kombineerida nii agendi- kui ka vektorisalve, on mitme hüppega vektormälu päringute jaoks. Järgmine jaotis selgitab kogu protsessi:
1. samm: tööriistade konfigureerimine
Esimene samm on, nagu tavaliselt, tööriistade konfigureerimine, mida kasutatakse agentide loomiseks, et andmesalvedest andmeid ekstraheerida:
tööriistad = [Tööriist (
nimi = 'Liidu osariigi kvaliteedi tagamise süsteem' ,
func = liidu_riik. jooksma ,
kirjeldus = 'Annab vastused laaditud andmestikuga seotud küsimustele koos sisendiga täielikult vormistatud küsimusena, viitamata eelmise vestluse asesõnadele' ,
) ,
Tööriist (
nimi = 'Ruff QA süsteem' ,
func = ruff. jooksma ,
kirjeldus = 'Annab vastused laaditud andmestikuga seotud küsimustele koos sisendiga täielikult vormistatud küsimusena, viitamata eelmise vestluse asesõnadele' ,
) ,
]
2. samm: lähtestage ja testige agenti
Pärast seda koostage agendi muutuja, kasutades meetodit inicialize_agent() koos agendi nimega:
agent = initsialiseeri_agent (tööriistad , llm , agent = Agendi tüüp. ZERO_SHOT_REACT_DESCRIPTION , paljusõnaline = Tõsi
)
Käivitage agent, kasutades mitme hüppega küsimust, mis sisaldab rohkem kui ühte aspekti või funktsiooni, kuna järgmine koodiplokk sisaldab sellist küsimust:
agent. jooksma ('Millist tööriista kasutab ruff Pythoni märkmike üle jooksmiseks ja kas keegi kõnelejatest mainis seda tööriista oma aadressil?'
)
Väljund
Järgmine ekraanipilt viitab sellele, et agent peab küsimuse keerukuse mõistmiseks läbi töötama. See on tagastanud vastuse, mille QA süsteem eraldas mitmest andmesalvest, mille me protsessi käigus varem üles laadisime:
See kõik puudutab agentide ja vektorpoodide ühendamist LangChainis.
Järeldus
Agentide ühendamiseks vektorihoidlatega LangChainis alustage keskkonna seadistamiseks ja andmekogumite laadimiseks moodulite installimisega. Konfigureerige vektorpoed andmete laadimiseks, jagades need esmalt väiksemateks tükkideks ja seejärel koostage keelemudel OpenAI() meetodi abil. Konfigureerige agent integreerima seda vektorite salvestamisega, et ekstraheerida andmeid erinevat tüüpi päringute jaoks. Selles artiklis on käsitletud LangChainis agentide ja vektorpoodide kombineerimise protsessi.