Бързо очертание
Тази публикация ще покаже:
Как да използвате агент за връщане на структуриран изход в LangChain
- Инсталиране на Frameworks
- OpenAI среда
- Създаване на векторен магазин
- Задаване на пътя
- Зареждане и разделяне на данните
- Създаване на ретривър
Метод 1: Комбиниране на агент с векторни магазини
Метод 2: Използване на агент като рутер
Метод 3: Използване на агент с Multi-Hop Vector Store
Как да използвате агент за връщане на структуриран изход в LangChain?
Разработчикът използва агенти за маршрутизиране между базите данни, съдържащи данни за обучение за моделите. Агентът разполага с чертежа на целия процес, като съхранява всички стъпки. Агентът разполага с инструментите за извършване на всички тези дейности, за да завърши процеса. Потребителят може също да използва агента, за да получи данни от различни хранилища на данни, за да направи модела разнообразен.
За да научите процеса на комбиниране на агенти и векторни магазини в LangChain, просто следвайте изброените стъпки:
Стъпка 1: Инсталиране на Frameworks
Първо инсталирайте модула LangChain и неговите зависимости за комбиниране на агентите и векторните хранилища:
pip инсталирайте langchain
В това ръководство използваме базата данни Chroma, която може да съхранява данни на различни места или таблици:
pip инсталирайте chromadb
За да получите по-добро разбиране на данните, разделете големите файлове на по-малки части с помощта на tiktoken tokenizer:
pip инсталирайте tiktoken
OpenAI е модулът, който може да се използва за изграждане на големия езиков модел в рамката LangChain:
pip инсталирайте openai
Стъпка 2: OpenAI среда
Следващата стъпка тук е да настройте средата използвайки API ключа на OpenAI, който може да бъде извлечен от официалния акаунт на OpenAI:
импортиране Виеимпортиране getpass
Вие . приблизително [ „OPENAI_API_KEY“ ] = getpass . getpass ( „API ключ на OpenAI:“ )
Сега качете данните от локалната система в Google Collaboratory, за да ги използвате в бъдеще:
от google. ET AL импортиране файловекачен = файлове. качване ( )
Стъпка 3: Създаване на векторен магазин
Тази стъпка конфигурира първия компонент на нашата задача, който е векторно хранилище за съхраняване на качените данни. Конфигурирането на векторните хранилища изисква библиотеките, които могат да бъдат импортирани от различни зависимости на LangChain:
от Langchain. вграждания . openai импортиране OpenAIEmbeddings#Vector съхранява зависимост за получаване на необходимата база данни или вектор
от Langchain. векторни магазини импортиране Chroma
#Text сплитер се използва за преобразуване на големия текст в по-малки парчета
от Langchain. текстов_разделител импортиране CharacterTextSplitter
от Langchain. llms импортиране OpenAI
от Langchain. зареждащи_документи импортиране WebBaseLoader
от Langchain. вериги импортиране RetrievalQA
llm = OpenAI ( температура = 0 )
Стъпка 4: Задаване на пътя
След като импортирате библиотеките, просто задайте пътя за достъп до векторните хранилища, преди да съхраните данните в тях:
от pathlib импортиране Пътекасъответни_части = [ ]
за стр в Пътека ( '.' ) . абсолютен ( ) . части :
съответни_части. добавям ( стр )
ако съответни_части [ - 3 : ] == [ 'langchain' , 'документи' , 'модули' ] :
прекъсвам
#Conditional Statement вътре в цикъла за задаване на пътя за всяка база данни
doc_path = ул ( Пътека ( *релевантни_части ) / 'state_of_the_union.txt' )
Стъпка 5: Зареждане и разделяне на данните
Сега просто заредете данните и ги разделете на по-малки части, за да направите тяхната четливост и разбираемост по-добри. Създайте вграждания на данните, като преобразувате текста в числа, като направите техните векторни пространства и го съхраните в базата данни Chorma:
от Langchain. зареждащи_документи импортиране TextLoader#Зареждане на набор от данни от неговия път и съхраняване на по-малките му парчета в базата данни
товарач = TextLoader ( doc_path )
документи = товарач. натоварване ( )
текстов_разделител = CharacterTextSplitter ( chunk_size = 2000 г , част_припокриване = 0 )
текстове = текстов_разделител. split_documents ( документи )
#Преобразувайте текст в числа и съхранявайте вгражданията в базата данни
вграждания = OpenAIEmbeddings ( )
docsearch = Chroma. от_документи ( текстове , вграждания , колекция_име = 'съюзно състояние' )
Стъпка 6: Създаване на ретривър
За да комбинирате агентни и векторни хранилища, е необходимо да създадете ретривър, като използвате метода RetrievalQA() от рамката LangChain. Този метод за извличане се препоръчва за получаване на данни от векторни хранилища, като се използват агентите като инструмент за работа с базите данни:
състояние_съюз = RetrievalQA. тип_от_верига (llm = llm , тип_верига = 'неща' , ретривър = docsearch. as_retriever ( )
)
Заредете друг набор от данни, за да интегрирате агента с множество набори от данни или векторни хранилища:
товарач = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )Съхранявайте набора от данни на ruff в chromadb, след като създадете и по-малките части от данните с векторите за вграждане:
документи = товарач. натоварване ( )ruff_texts = текстов_разделител. split_documents ( документи )
ruff_db = Chroma. от_документи ( ruff_texts , вграждания , колекция_име = 'ръф' )
ръф = RetrievalQA. тип_от_верига (
llm = llm , тип_верига = 'неща' , ретривър = ruff_db. as_retriever ( )
)
Метод 1: Комбиниране на агент с векторни магазини
Първият метод за комбиниране на агенти и векторни хранилища за извличане на информация е споменат по-долу:
Стъпка 1: Конфигуриране на инструменти
След като векторните хранилища са конфигурирани, преминаваме към изграждането на втория компонент на нашия процес, т.е. агент. За да създадете агента за процеса, импортирайте библиотеките, като използвате зависимостите като агенти, инструменти и т.н.
от Langchain. агенти импортиране инициализиращ_агентот Langchain. агенти импортиране AgentType
#Получаване на инструменти от LangChain за изграждане на агента
от Langchain. инструменти импортиране BaseTool
от Langchain. llms импортиране OpenAI
#Получаване на LLMMathChain от вериги за изграждане на езиковия модел
от Langchain. вериги импортиране LLMMathChain
от Langchain. комунални услуги импортиране SerpAPIWrapper
от Langchain. агенти импортиране Инструмент
Конфигурирайте инструментите, които да се използват с агентите, използващи QA система или извличане, конфигурирано по-рано, с името и описанието на инструментите:
инструменти = [Инструмент (
име = „Система за качество на състоянието на Съюза“ ,
функ = състояние_съюз. бягам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като напълно оформен въпрос“ ,
) ,
Инструмент (
име = „Ruff QA система“ ,
функ = ръф. бягам ,
описание = „Предоставя отговори на въпросите за ruff (линтер на Python) с въвеждане като напълно оформен въпрос“ ,
) ,
]
Стъпка 2: Инициализиране на агент
След като инструментите са конфигурирани, просто задайте агента в аргумента на метода initializa_agent(). Агентът, който използваме тук, е ZERO_SHOT_REACT_DESCRIPTION заедно с инструментите, llm (езиков модел) и verbose:
агент = инициализиращ_агент (инструменти , llm , агент = AgentType. ZERO_SHOT_REACT_DESCRIPTION , многословен = Вярно
)
Стъпка 3: Тествайте агента
Просто изпълнете агента, като използвате метода run(), който съдържа въпроса в своя аргумент:
агент. бягам („Какво каза президентът Джо Байдън за канджи браун в обръщението“
)
Следната екранна снимка показва отговора, извлечен от двете хранилища на данни, използвайки наблюдението, съхранено в паметта на агента:
Метод 2: Използване на агент като рутер
Друг начин за комбиниране на двата компонента е чрез използване на агента като рутер и следното обяснява процеса:
Стъпка 1: Конфигуриране на инструменти
Използването на агента като рутер означава, че системата RetrievalQA ще върне изхода директно, тъй като инструментите са конфигурирани да връщат изхода директно:
инструменти = [#конфигуриране на инструментите, необходими за изграждане на агента за получаване на данни от данните
Инструмент (
име = „Система за качество на състоянието на Съюза“ ,
функ = състояние_съюз. бягам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като пълен въпрос“ ,
връщане_директно = Вярно ,
) ,
Инструмент (
име = „Ruff QA система“ ,
функ = ръф. бягам ,
описание = „Предоставя отговори на въпросите за ruff (линтер на Python) с въвеждане като пълен въпрос“ ,
връщане_директно = Вярно ,
) ,
]
Стъпка 2: Инициализиране и тестване на агента
След като зададете инструментите, просто задайте агента, който може да се използва единствено като рутер, като използвате метода initialize_agent():
агент = инициализиращ_агент (инструменти , llm , агент = AgentType. ZERO_SHOT_REACT_DESCRIPTION , многословен = Вярно
)
Тествайте агента, като зададете въпроса за въвеждане в метода agent.run(), като изпълните следната команда:
агент. бягам („Какво каза президентът Джо Байдън за канджи браун в обръщението“
)
Изход
Изходната екранна снимка показва, че агентът просто е върнал отговора на въпроса от набора от данни, извлечен от системата RetrievalQA:
Метод 3: Използване на агент с Multi-Hop Vector Store
Третият метод, при който разработчиците могат да комбинират агентни и векторни хранилища, е за заявките за мулти-хоп векторни магазини. Следващият раздел обяснява целия процес:
Стъпка 1: Конфигуриране на инструменти
Първата стъпка е, както обикновено, конфигурацията на инструментите, използвани за изграждане на агенти за извличане на данни от хранилищата на данни:
инструменти = [Инструмент (
име = „Система за качество на състоянието на Съюза“ ,
функ = състояние_съюз. бягам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като напълно оформен въпрос, без препратка към местоимения от предишния разговор“ ,
) ,
Инструмент (
име = „Ruff QA система“ ,
функ = ръф. тичам ,
описание = „Предоставя отговори на въпросите, свързани със заредения набор от данни с въвеждане като напълно оформен въпрос, без препратка към местоимения от предишния разговор“ ,
) ,
]
Стъпка 2: Инициализиране и тестване на агента
След това изградете променливата на агента, като използвате метода initialize_agent() с името на агента:
агент = инициализиращ_агент (инструменти , llm , агент = AgentType. ZERO_SHOT_REACT_DESCRIPTION , многословен = Вярно
)
Стартирайте агента, като използвате въпроса с няколко прехода, който съдържа повече от един аспект или функция, тъй като следният кодов блок съдържа такъв въпрос:
агент. тичам („Какъв инструмент използва Ruff, за да работи над преносими компютри на Python и някой от говорителите спомена ли е инструмента в своя адрес“
)
Изход
Следната екранна снимка предполага, че агентът трябва да премине през въпроса, за да разбере неговата сложност. Той върна отговора, извлечен от QA системата от множеството хранилища за данни, които качихме по-рано в процеса:
Това е всичко за това как да комбинирате агенти и векторни магазини в LangChain.
Заключение
За да комбинирате агенти с векторните хранилища в LangChain, започнете с инсталирането на модули за настройка на средата и зареждане на набори от данни. Конфигурирайте векторните хранилища за зареждане на данни, като първо ги разделите на по-малки части и след това изградете езиковия модел с помощта на метода OpenAI(). Конфигурирайте агента, за да го интегрирате с векторното хранилище за извличане на данни за различни видове заявки. Тази статия разработи подробно процеса на комбиниране на агенти и векторни хранилища в LangChain.