ReAct Prompting
"Reason + Act" - "Рассуждение + Действие" = ReAct промптинг
Last updated
"Reason + Act" - "Рассуждение + Действие" = ReAct промптинг
Last updated
В 2022 годуYao и др., 2022 представили фреймворк под названием ReAct, в котором использовали большие языковые модели (LLM) для формирования последовательности рассуждений и действий, нацеленных на конкретные задачи, в интерактивном режиме.
Генерация последовательности рассуждений позволяет модели формировать, отслеживать и обновлять планы действий, а также обрабатывать исключительные ситуации. Действия предоставляют возможность взаимодействия с внешними источниками информации, такими как базы знаний или окружение.
Фреймворк ReAct дает возможность большим языковым моделям (LLM) взаимодействовать с внешними инструментами для получения дополнительной информации, что приводит к более надежным и фактически обоснованным ответам.
Проще говоря, представьте, что у нас есть умная программа, которая умеет думать и принимать решения. Она может создавать планы и следить за ними, даже если что-то идет не так. Она также может выполнять действия, используя информацию извне, например, из баз данных. ReAct - это как помощник для этой программы. Он помогает ей получать дополнительную информацию извне, чтобы давать более надежные и правильные ответы.
Исследования показывают, что ReAct работает лучше, чем другие подходы, когда дело касается языковых задач и принятия решений. Он также делает результаты более понятными для людей и делает большие языковые модели более надежными. В общем, авторы выяснили, что самый эффективный способ - это использовать ReAct совместно с промптингом цепочки мыслей (CoT), чтобы модель могла комбинировать свои знания с дополнительной информацией для более точных ответов.
ReAct черпает свою идею из взаимодействия между "действием" и "рассуждением", которое позволяет людям изучать новые задачи, принимать решения и анализировать ситуации.
Использование метода промптинга цепочкой мыслей (CoT) демонстрирует, что большие языковые модели (LLM) успешно могут проводить логические рассуждения и генерировать ответы на вопросы, включая задачи с арифметическими и общими логическими рассуждениями, среди других задач (Wei и др., 2022). Однако ограниченный доступ к внешнему миру или отсутствие возможности обновления знаний могут вызывать проблемы, такие как вымышленные факты и распространение ошибок.
ReAct - это общая концепция, которая объединяет рассуждение и действие с помощью больших языковых моделей (LLM). ReAct стимулирует LLM генерировать речевые следы рассуждений и действий для решения задачи. Этот подход позволяет системе проводить динамические рассуждения для создания, поддержки и корректировки планов действий. Также ReAct позволяет взаимодействовать с внешними средами, например, Википедией, чтобы включить дополнительную информацию в процесс рассуждения. На приведенной ниже схеме показан пример использования ReAct и различные этапы, которые нужно пройти для выполнения звопросно-ответной задачи.
Источник изображения: Yao и др., 2022
В приведенном выше примере мы передаем подобный вопрос, взятый из HotpotQA:
Обратите внимание, что для упрощения мы не включаем примеры контекста. Мы видим, что модель создает пути решения задач (Рассуждение, Действия). Обозначение "Obs" означает наблюдения из взаимодействующей среды (например, поисковой системы). По сути, ReAct может извлекать информацию, чтобы поддержать рассуждения, а рассуждение помогает определить, какую информацию следует извлекать далее.
Чтобы продемонстрировать, как работает ReAct промптинг, давайте рассмотрим пример из статьи.
Первый шаг - выбрать примеры из учебных материалов (например, из HotPotQA) и создать путь в формате ReAct. Путь представляет собой последовательность шагов: рассуждение - действие - наблюдение. Это как инструкция с пошаговыми действиями. Мы используем разные способы мышления для решения разных задач, например, разбор вопроса, нахождение информации, логическое/арифметическое рассуждение, создание поискового запроса и формирование окончательного ответа.
HotPotQA - это набор данных, который используется для обучения и тестирования систем искусственного интеллекта на задаче вопросов и ответов. В этом наборе данных содержатся вопросы и текстовые параграфы с информацией, из которых нужно извлечь ответы на вопросы. Это помогает компьютерам научиться понимать вопросы, анализировать тексты и находить правильные ответы. Набор данных HotPotQA предоставляет реальные задачи, с которыми искусственный интеллект может справляться.
Вот пример траекторий ReAct-промпта (полученный из статьи и сокращенный до одного примера для простоты):
Обратите внимание, что в зависимости от типа задачи используются разные подходы в формулировки промптов. Например, для задач, где рассуждение является основным, таких как HotpotQA, используются траектории решения, включающие несколько шагов рассуждение-действия-наблюдение. В случае задач принятия решений, которые включают множество действий, шаги рассуждений редко используются.
Также стоит отметить, что в статье представлены результаты тестирования ReAct на задачах принятия решений. Эффективность ReAct была оценена на двух бенчмарках: ALFWorld (текстовая игра) и WebShop (среда онлайн-шопинга). Оба эти бенчмарка включают сложные ситуации, в которых необходимо применять рассуждения для эффективных действий и принятия решений.
Бенчмарк" - это термин из области тестирования и оценки производительности. В контексте исследования и разработки, особенно в области искусственного интеллекта и компьютерных наук, "бенчмарк" означает стандартный набор задач или тестовых случаев, на которых оценивается производительность и качество новых методов, алгоритмов или моделей. Это позволяет сравнивать разные подходы и определять, какой из них лучше справляется с конкретными задачами.
Обратите внимание, что промпты ReAct разработаны по-разному для этих задач, сохраняя ту же основную идею объединения рассуждения и действия. Вот пример проблемы ALFWorld, включающей промпт ReAct.
Источник изображения: Yao и др., 2022
ReAct продемонстрировал лучшие результаты по сравнению с методом действий (Act) как на задачах ALFWorld, так и на Webshop. Без рассуждений метод Act не может эффективно разбивать общие цели на более мелкие подцели. Рассуждение играет важную роль в решении таких задач, но текущие методы использования промптинга все равно значительно уступают профессиональным специалистам в этой области.
Для получения более подробных результатов рекомендуется обратиться к статье Yao и др., 2022.
Приведенный пример демонстрирует, как применяется подход ReAct с использованием OpenAI для LLM и LangChain, так как в нем уже есть встроенные функции, которые используют фреймворк ReAct для создания агентов, выполняющих задачи, объединяя мощность LLM и различных инструментов.
Сначала установим и импортируем необходимые библиотеки:
Теперь мы можем настроить большую языковую модель (LLM), выбрать инструменты, которые будем использовать, и создать агента, который объединяет фреймворк ReAct с LLM и инструментами. Важно отметить, что мы используем API поиска для получения внешней информации и LLM в роли математического инструмента.
После настройки мы можем запустить агента с желаемым промптом. Обратите внимание, что здесь не требуется предоставлять экземпляры с малым количеством примеров, как объясняется в статье.
Последовательность шагов выполнения выглядит так:
Полученный результат выглядит следующим образом:
Мы использовали адаптированный пример из документации LangChain, поэтому все заслуги принадлежат их авторам. Мы советуем попробовать разные комбинации инструментов и задач для дополнительного исследования.