Esquema ràpid
Aquesta publicació mostrarà:
Com utilitzar un agent per retornar una sortida estructurada a LangChain
- Instal·lació de Frameworks
- Entorn OpenAI
- Creació d'una botiga de vectors
- Establint el camí
- Carregant i dividint les dades
- Creació d'un retriever
Mètode 1: combinació d'agent amb botigues de vectors
Mètode 2: Ús de l'agent com a encaminador
Mètode 3: ús de l'agent amb la botiga de vectors multi-Salt
Com utilitzar un agent per retornar una sortida estructurada a LangChain?
El desenvolupador utilitza agents per encaminar entre les bases de dades que contenen dades d'entrenament per als models. Un agent té el pla del procés complet emmagatzemant tots els passos. L'agent té les eines per realitzar totes aquestes activitats per completar el procés. L'usuari també pot utilitzar l'agent per obtenir dades de diferents magatzems de dades per tal que el model sigui divers.
Per conèixer el procés de combinació d'agents i botigues de vectors a LangChain, només cal que seguiu els passos indicats:
Pas 1: instal·lació de marcs
Primer, instal·leu el mòdul LangChain i les seves dependències per combinar els agents i els magatzems de vectors:
pip install langchain
En aquesta guia, estem utilitzant la base de dades Chroma que pot emmagatzemar dades en diferents ubicacions o taules:
pip instal·lar chromadb
Per entendre millor les dades, divideix els fitxers grans en trossos més petits mitjançant el tokenizer tiktoken:
pip install tiktoken
OpenAI és el mòdul que es pot utilitzar per construir el gran model de llenguatge al marc LangChain:
pip install openai
Pas 2: Entorn OpenAI
El següent pas aquí és configurar l'entorn utilitzant la clau API d'OpenAI que es pot extreure del compte oficial d'OpenAI:
importar vostèimportar getpass
vostè . aproximadament [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'Clau de l'API OpenAI:' )
Ara, carregueu les dades del sistema local al col·laborador de Google per utilitzar-les en el futur:
des de Google. ET AL importar Fitxerscarregat = Fitxers. carregar ( )
Pas 3: creació d'una botiga de vectors
Aquest pas configura el primer component de la nostra tasca que és un magatzem de vectors per emmagatzemar les dades carregades. La configuració dels magatzems vectorials requereix les biblioteques que es poden importar des de diferents dependències del LangChain:
des de langchain. incrustacions . oberta importar OpenAIEmbeddings#Vector emmagatzema la dependència per obtenir la base de dades o el vector necessari
des de langchain. botigues de vectors importar Croma
#Text Splitter s'utilitza per convertir el text gran en fragments més petits
des de langchain. divisor_text importar CharacterTextSplitter
des de langchain. llms importar OpenAI
des de langchain. carregadors_de_documents importar WebBaseLoader
des de langchain. cadenes importar QA de recuperació
llm = OpenAI ( temperatura = 0 )
Pas 4: establir el camí
Després d'importar les biblioteques, simplement configureu el camí per accedir als magatzems de vectors abans d'emmagatzemar-hi les dades:
des de pathlib importar Camíparts_rellevants = [ ]
per pàg en Camí ( '.' ) . absolut ( ) . parts :
parts_rellevants. adjuntar ( pàg )
si parts_rellevants [ - 3 : ] == [ 'langchain' , 'docs' , 'mòduls' ] :
trencar
#Declaració condicional dins del bucle per establir el camí de cada base de dades
Doc_path = str ( Camí ( *parts_rellevants ) / 'estat_de_la_unió.txt' )
Pas 5: carregar i dividir les dades
Ara, només cal carregar les dades i dividir-les en trossos més petits per millorar la seva llegibilitat i comprensió. Creeu incrustacions de dades convertint el text en números fent els seus espais vectorials i emmagatzemant-lo a la base de dades Chorma:
des de langchain. carregadors_de_documents importar TextLoader#Càrrega del conjunt de dades des del seu camí i emmagatzema els seus trossos més petits a la base de dades
carregador = TextLoader ( Doc_path )
documents = carregador. càrrega ( )
divisor_text = CharacterTextSplitter ( mida_part = 2000 , chunk_overlap = 0 )
textos = divisor_text. dividir_documents ( documents )
#Converteix el text en números i emmagatzema les incrustacions a la base de dades
incrustacions = OpenAIEmbeddings ( )
docsearch = Croma. de_documents ( textos , incrustacions , nom_col·lecció = 'estat d'unió' )
Pas 6: Creació d'un Retriever
Per combinar magatzems d'agents i vectors, cal crear un recuperador mitjançant el mètode RetrievalQA() del framework LangChain. Es recomana aquest mètode de recuperació per obtenir dades dels magatzems de vectors utilitzant els agents com a eina per treballar amb les bases de dades:
estat_de_unió = QA de recuperació. de_tipus_cadena (llm = llm , tipus_cadena = 'coses' , retriever = docsearch. com_retriever ( )
)
Carregueu un altre conjunt de dades per integrar l'agent amb diversos conjunts de dades o magatzems de vectors:
carregador = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )Emmagatzemeu el conjunt de dades de ruff al chromadb després de crear també els fragments més petits de les dades amb els vectors d'incrustació:
docs = carregador. càrrega ( )ruff_texts = divisor_text. dividir_documents ( docs )
ruff_db = Croma. de_documents ( ruff_texts , incrustacions , nom_col·lecció = 'ruf' )
ruff = QA de recuperació. de_tipus_cadena (
llm = llm , tipus_cadena = 'coses' , retriever = ruff_db. com_retriever ( )
)
Mètode 1: combinació d'agent amb botigues de vectors
El primer mètode per combinar agents i magatzems de vectors per extreure informació s'esmenta a continuació:
Pas 1: configureu les eines
Ara que les botigues de vectors estan configurades, avançant cap a la construcció del segon component del nostre procés, és a dir, l'agent. Per crear l'agent per al procés, importeu les biblioteques utilitzant les dependències com ara agents, eines, etc.
des de langchain. agents importar initialize_agentdes de langchain. agents importar Tipus d'agent
# Obtenir eines de LangChain per crear l'agent
des de langchain. eines importar Base Tool
des de langchain. llms importar OpenAI
#Aconseguir LLMMathChain de les cadenes per construir el model de llenguatge
des de langchain. cadenes importar LLMMathChain
des de langchain. utilitats importar SerpAPIWrapper
des de langchain. agents importar Eina
Configureu les eines que s'utilitzaran amb els agents mitjançant el sistema de control de qualitat o la recuperació configurada anteriorment amb el nom i la descripció de les eines:
eines = [Eina (
nom = 'Sistema de control de qualitat de l'estat de la Unió' ,
func = estat_de_unió. correr ,
descripció = 'Ofereix respostes a les preguntes relacionades amb el conjunt de dades carregat amb entrada com a pregunta totalment formada' ,
) ,
Eina (
nom = 'Sistema de control de qualitat Ruff' ,
func = ruff. correr ,
descripció = 'Ofereix respostes a les preguntes sobre ruff (un python linter) amb entrada com a pregunta totalment formada' ,
) ,
]
Pas 2: inicialitzeu l'agent
Un cop configurades les eines, simplement configureu l'agent a l'argument del mètode initializa_agent(). L'agent que estem utilitzant aquí és el ZERO_SHOT_REACT_DESCRIPTION juntament amb les eines, llm (model de llenguatge) i verbose:
agent = initialize_agent (eines , llm , agent = Tipus d'agent. ZERO_SHOT_REACT_DESCRIPTION , verbosa = És cert
)
Pas 3: prova l'agent
Simplement executeu l'agent mitjançant el mètode run() que conté la pregunta al seu argument:
agent. correr ('Què va dir el president Joe Biden sobre kanji brown a l'adreça'
)
La següent captura de pantalla mostra la resposta extreta dels dos magatzems de dades mitjançant l'observació emmagatzemada a la memòria de l'agent:
Mètode 2: Ús de l'agent com a encaminador
Una altra manera de combinar els dos components és utilitzant l'agent com a encaminador i a continuació s'explica el procés:
Pas 1: configureu les eines
L'ús de l'agent com a encaminador significa que el sistema RetrievalQA retornarà la sortida directament a mesura que les eines estan configurades per retornar la sortida directament:
eines = [#configuració de les eines necessàries per crear l'agent per obtenir dades de les dades
Eina (
nom = 'Sistema de control de qualitat de l'estat de la Unió' ,
func = estat_de_unió. correr ,
descripció = 'Ofereix respostes a les preguntes relacionades amb el conjunt de dades carregat amb entrada com a pregunta completa' ,
retorn_directe = És cert ,
) ,
Eina (
nom = 'Sistema de control de qualitat Ruff' ,
func = ruff. correr ,
descripció = 'Ofereix respostes a les preguntes sobre ruff (un python linter) amb entrada com a pregunta completa' ,
retorn_directe = És cert ,
) ,
]
Pas 2: inicialitzeu i proveu l'agent
Després de configurar les eines, simplement configureu l'agent que només es pot utilitzar com a encaminador mitjançant el mètode initialize_agent():
agent = initialize_agent (eines , llm , agent = Tipus d'agent. ZERO_SHOT_REACT_DESCRIPTION , verbosa = És cert
)
Proveu l'agent donant la pregunta d'entrada al mètode agent.run() executant l'ordre següent:
agent. correr ('Què va dir el president Joe Biden sobre kanji brown a l'adreça'
)
Sortida
La captura de pantalla de sortida mostra que l'agent simplement ha retornat la resposta a la pregunta del conjunt de dades extret pel sistema RetrievalQA:
Mètode 3: ús de l'agent amb la botiga de vectors multi-Salt
El tercer mètode en què els desenvolupadors poden combinar magatzems d'agents i de vectors és per a les consultes de magatzems de vectors de múltiples salts. La secció següent explica el procés complet:
Pas 1: configureu les eines
El primer pas és, com és habitual, la configuració de les eines utilitzades per construir els agents per extreure dades dels magatzems de dades:
eines = [Eina (
nom = 'Sistema de control de qualitat de l'estat de la Unió' ,
func = estat_de_unió. correr ,
descripció = 'Ofereix respostes a les preguntes relacionades amb el conjunt de dades carregat amb entrada com a pregunta totalment formada, sense fer referència a cap pronom de la conversa anterior' ,
) ,
Eina (
nom = 'Sistema de control de qualitat Ruff' ,
func = ruf. correr ,
descripció = 'Ofereix respostes a les preguntes relacionades amb el conjunt de dades carregat amb entrada com a pregunta totalment formada, sense fer referència a cap pronom de la conversa anterior' ,
) ,
]
Pas 2: inicialitzeu i proveu l'agent
Després d'això, creeu la variable agent utilitzant el mètode initialize_agent() amb el nom de l'agent:
agent = initialize_agent (eines , llm , agent = Tipus d'agent. ZERO_SHOT_REACT_DESCRIPTION , verbosa = És cert
)
Executeu l'agent mitjançant la pregunta multi-salt que conté més d'un aspecte o funció, ja que el bloc de codi següent conté aquesta pregunta:
agent. correr ('Quina eina utilitza Ruff per executar quaderns de Python i algun dels parlants ha mencionat l'eina a la seva adreça?'
)
Sortida
La captura de pantalla següent suggereix que l'agent ha de resoldre la pregunta per entendre la seva complexitat. Ha retornat la resposta extreta pel sistema de control de qualitat dels múltiples magatzems de dades que hem penjat anteriorment en el procés:
Això es tracta de com combinar agents i botigues de vectors a LangChain.
Conclusió
Per combinar agents amb les botigues de vectors a LangChain, comenceu amb la instal·lació de mòduls per configurar l'entorn i carregar conjunts de dades. Configureu els magatzems de vectors per carregar dades dividint-los primer en trossos més petits i després construïu el model de llenguatge mitjançant el mètode OpenAI(). Configureu l'agent per integrar-lo amb el magatzem de vectors per extreure dades per a diferents tipus de consultes. Aquest article ha elaborat el procés de combinació d'agents i botigues de vectors a LangChain.