Краткое описание
Этот пост продемонстрирует:
- Как реализовать логику ReAct с помощью агента в LangChain
- Установка фреймворков
- Загрузка языковой модели
- Метод 1: использование языка выражений LandChain
- Строительный агент
- Способ 2: использование ZeroShotReactAgent
- Способ 3: использование моделей чата
- Создание агента
- Способ 4: использование ChatZeroShotReactAgent
- Заключение
Как реализовать логику ReAct с помощью агента в LangChain?
« Реакт » представляет собой сочетание фаз «Причина» и «Действие» для повышения производительности языковой модели как « Ре » относится к разуму и « Действовать » к действию. Логика ReAct часто считается наиболее оптимизированной для создания LLM или чат-ботов для понимания и генерации текста. Агент — лицо, принимающее решения, которое решает, какие действия выполнять и в каком порядке они будут выполняться.
Чтобы изучить процесс реализации логики ReAct с использованием агента в LangChain, просто просмотрите следующее руководство:
Шаг 1: Установка фреймворков
Прежде всего, установите LangChain, чтобы начать процесс реализации логики ReAct:
pip установить langchain
Установите модуль google-search-results, чтобы получить зависимости для создания агента, который может получать результаты поиска из Google:
pip install openai результаты поиска в Google
После этого установите модули OpenAI, которые можно использовать для загрузки моделей большого языка или LLM для реализации логики ReAct:
pip установить openai
После получения всех необходимых модулей просто настройте среда OpenAI для создания LLM и среда SerpAPI для использования агента в модели:
Импортировать тыИмпортировать получить пропуск
ты . примерно [ 'ОПЕНАЙ_API_KEY' ] '=' получить пропуск . получить пропуск ( «Ключ API OpenAI:» )
ты . примерно [ 'SERPAPI_API_KEY' ] '=' получить пропуск . получить пропуск ( «Ключ API Serpapi:» )
Шаг 2. Загрузка языковой модели
Следующий шаг — загрузка языковых моделей путем импорта необходимых библиотек с помощью фреймворка LangChain:
от лангчейн. агенты Импортировать load_toolsот лангчейн. агенты Импортировать инициализировать_агент
от лангчейн. агенты Импортировать Тип агента
от лангчейн. llms Импортировать ОпенАИ
Используйте метод OpenAI() для построения языковой модели (llm), а затем настройте инструменты для агентов с помощью SerpAPI:
лм '=' ОпенАИ ( температура '=' 0 )инструменты '=' load_tools ( [ 'серпапи' , 'ЖМ-математика' ] , лм '=' лм )
Метод 1: использование языка выражений LandChain
LCEL — это процесс интеграции или составления цепочек при построении языковых моделей в LangChain. Начните процесс с установки LangChainHub, чтобы получить его зависимости для построения и использования логики ReAct с агентами в LangChain:
pip установить langchainhub
Импорт библиотек из LangChain, таких как ReActSingleInputOutputParser, для создания модели, которая может использовать модель ReAct:
от лангчейн. инструменты . оказывать Импортировать render_text_descriptionот лангчейн. агенты . выходные_парсеры Импортировать ReActSingleInputOutputParser
от лангчейн. агенты . format_scratchpad Импортировать format_log_to_str
от Лангчейн Импортировать центр
Загрузите языковую модель для разработки логики ReAct с помощью метода pull() и сохраните ее в переменной приглашения. Определим некоторые инструменты, которые можно использовать для реализации логики в загруженном наборе данных для реализации его работы с агентом:
быстрый '=' центр. тянуть ( 'hwchase17/реагировать' )быстрый '=' быстрый. частичный (
инструменты '=' render_text_description ( инструменты ) ,
имена_инструментов '=' ', ' . присоединиться ( [ т. е. имя для т в инструменты ] ) ,
)
Строительный агент
Теперь настройте агент и его инструменты, интегрировав его с языковой моделью, загруженной на шаге 2 этого руководства:
llm_with_stop '=' лм. связывать ( останавливаться '=' [ ' \п Наблюдение' ] )Определите переменную агента, чтобы предоставить аргументы и инструменты для настройки агента, объясняющие его работу. Ранее настроенные части, такие как метод llm_with_stop и ReActSingleInputOutputParser(), интегрируются с агентом:
агент '=' {'вход' : лямбда х: х [ 'вход' ] ,
'agent_scratchpad' : лямбда х: format_log_to_str ( Икс [ 'промежуточные_шаги' ] )
} | подсказать | llm_with_stop | ReActSingleInputOutputParser ( )
Получите библиотеку AgentExecutor и настройте ее метод, используя такие аргументы, как агент, инструменты и подробный текст, чтобы получить более читаемый результат:
от лангчейн. агенты Импортировать АгентИсполнительагент_исполнитель '=' АгентИсполнитель ( агент '=' агент , инструменты '=' инструменты , подробный '=' Истинный )
Вызовите метод Agent_executor() со строковым запросом в качестве входных данных, который заставит агент извлечь выходные данные:
агент_исполнитель. вызывать ( { 'вход' : «Кто девушка Лео Ди Каприо» } )Выход
На следующем снимке экрана показано, что агент извлек информацию с помощью логики ReAct и сгенерировал текст на естественном языке:
Способ 2: использование ZeroShotReactAgent
Логику ReAct также можно реализовать с помощью другого агента, например ZeroShotReactAgent, при настройке переменной Agent_executor. После этого просто вызовите переменную Agent_executor с вопросом в качестве входных данных для вызова агента:
агент_исполнитель '=' инициализировать_агент ( инструменты , лм , агент '=' Тип Агента. ZERO_SHOT_REACT_DESCRIPTION , подробный '=' Истинный )агент_исполнитель. вызывать ( { 'вход' : «Какой возраст девушки Лео Ди Каприо в степени 0,21» } )
Выход
Агент извлек информацию на основе входных данных, запрошенных при вызове агента_executor:
Метод 3: использование моделей чата
Еще один процесс, который можно использовать для реализации логики ReAct с использованием моделей чата после импорта библиотеки ChatOpenAI:
от лангчейн. чат_модели Импортировать ЧатOpenAIПостройте модель чата с помощью метода ChatOpenAI() со значением температуры, равным 0, который может контролировать случайность результатов модели:
чат_модель '=' ЧатOpenAI ( температура '=' 0 )Загрузите модель, в которой пользователь может реализовать логику ReAct, чтобы сохранить ее в переменной приглашения, и настройте инструменты, которые будут использоваться в процессе:
быстрый '=' центр. тянуть ( 'hwchase17/реакция-json' )быстрый '=' быстрый. частичный (
инструменты '=' render_text_description ( инструменты ) ,
имена_инструментов '=' ', ' . присоединиться ( [ т. е. имя для т в инструменты ] ) ,
)
Создание агента
Используйте модель чата для хранения наблюдений или недавних сообщений, когда модель перестает генерировать текст:
Chat_model_with_stop '=' чат_модель. связывать ( останавливаться '=' [ ' \п Наблюдение' ] )Получите библиотеку ReActJsonSingleInputOutputParser для реализации логики ReAct и получения результатов в формате JSON:
от лангчейн. агенты . выходные_парсеры Импортировать ReActJsonSingleInputOutputParserСоздайте и настройте агент, используя переменную и методchat_model для получения результатов путем вызова агента:
агент '=' {'вход' : лямбда х: х [ 'вход' ] ,
'agent_scratchpad' : лямбда х: format_log_to_str ( Икс [ 'промежуточные_шаги' ] )
} | подсказать | чат_модель_с_остановкой | ReActJsonSingleInputOutputParser ( )
Настройте агент_executor и запустите его, чтобы получить результаты на основе запроса, указанного во входной переменной:
агент_исполнитель '=' АгентИсполнитель ( агент '=' агент , инструменты '=' инструменты , подробный '=' Истинный )агент_исполнитель. вызывать ( { 'вход' : «Какой возраст девушки Лео Ди Каприо в степени 0,21» } )
Выход
Агент извлек выходные данные, как показано на следующем снимке экрана:
Способ 4: использование ChatZeroShotReactAgent
Изменение значения агента также можно использовать для реализации логики ReAct с помощью инфраструктуры LangChain:
агент '=' инициализировать_агент ( инструменты , чат_модель , агент '=' Тип Агента. CHAT_ZERO_SHOT_REACT_DESCRIPTION , подробный '=' Истинный )агент. бегать ( «Какой возраст девушки Лео Ди Каприо в степени 0,21» )
Выход
Выходная структура содержит подробную информацию о работе агента из токенов и модели, использованной для извлечения информации:
Вот и все, что касается процесса реализации логики ReAct с помощью агента в LangChain.
Заключение
Чтобы реализовать логику ReAct с агентом, использующим структуру LangChain, установите такие модули, как google-search-results, для настройки агента. После этого настройте среду, используя учетные данные OpenAI и SerpAPI из своих учетных записей, чтобы начать использовать модель. Логику ReAct можно реализовать с использованием моделей LCEL и чата с несколькими агентами, предлагаемых модулем LangChain. В этом руководстве подробно описана реализация логики ReAct с использованием агента в LangChain.