Устройство Re-Act ИИ агента. chatgpt.. chatgpt. langchain.. chatgpt. langchain. langgraph.. chatgpt. langchain. langgraph. llm.. chatgpt. langchain. langgraph. llm. Natural Language Processing.. chatgpt. langchain. langgraph. llm. Natural Language Processing. openai.. chatgpt. langchain. langgraph. llm. Natural Language Processing. openai. python.. chatgpt. langchain. langgraph. llm. Natural Language Processing. openai. python. агенты ии.. chatgpt. langchain. langgraph. llm. Natural Language Processing. openai. python. агенты ии. искусственный интеллект.. chatgpt. langchain. langgraph. llm. Natural Language Processing. openai. python. агенты ии. искусственный интеллект. чат-бот.

Что такое Re-Act? Re-Act (Reason + Act) – это парадигма, предлагающая объединить рассуждение и выполнение действий в работе языковой модели​ (ReAct: Synergizing Reasoning and Acting in Language Models).

В отличие от других подходов построения агентов, где модель либо только рассуждает, либо выполняет только действия, либо сразу выдаёт ответ, Re-Act заставляет модель чередовать логические рассуждения с вызовами пользовательских функций (или инструментов – Tools) для взаимодействия с внешним миром. Модель генерирует последовательность мыслей и действий, постепенно продвигаясь к решению задачи​. Такое сочетание позволяет ИИ одновременно обдумывать решение и при необходимости обращаться к инструментам или внешним данным.

Небольшой дисклеймер: Re-Act не является серебряной пулей построения ИИ агентов, каким-то единственным правильным подходом, скорее является одним из многих. В конце статьи я приведу ссылки на примеры других подходов.

Компоненты Re-Act‑агента:

  • Языковая модель (LLM) – «мозг» агента, который генерирует шаги решения. Она выпускает мысли (reasoning traces) и указывает действия для выполнения​

  • Инструменты (Tools) – внешние функции или API, которые агент может вызывать для получения информации или выполнения операций. Например, поиск в интернете, вычисления, работа с базой данных и пр. Инструменты регистрируются с именами и описаниями на естественном языке, чтобы модель знала, как ими пользоваться.

  • Исполнитель действий (Agent Executor) – принимает решение модели о действии, вызывает соответствующий инструмент и возвращает результат обратно модели. В контексте Re-Act этот компонент реализует цикл «мышление (Thought) → действие (Act) и наблюдение (Observe)».

  • Состояние агента (State) – накопленная история диалога и действий. Сюда входит запрос пользователя, сообщения модели (мысли/действия) и наблюдения (результаты инструментов). Состояние постоянно обновляется по мере выполнения шагов.

Цикл работы Re-Act агента

  • Получение запроса (Query). Агент принимает входное сообщение пользователя, которое становится исходным состоянием.

  • Генерация рассуждений и действия (Think). Языковая модель на основе текущего состояния генерирует вывод, состоящий из:

    • Thought: внутреннего рассуждения, где агент анализирует задачу и формирует план.

    • Action: указания на выполнение конкретного действия (например, вызов инструмента с определёнными аргументами).

  • Выполнение действия (Action). Если сгенерированный вывод содержит команду (например, Action: Search["query"]), исполнитель вызывает соответствующий инструмент и получает результат.

  • Обновление состояния (Observation). Результат работы инструмента сохраняется как наблюдение и добавляется в историю взаимодействия, после чего цикл повторяется: обновлённое состояние передаётся модели для следующей итерации.

  • Завершение (END). Если модель сгенерировала финальный ответ (например, Answer: ...), цикл прерывается и ответ возвращается пользователю.

Цикл работы Re-Act агента
Цикл работы Re-Act агента

Внутренние размышления и подход Re-Act

Одной из ключевых особенностей архитектуры Re-Act является способность агента вести внутренний диалог, который мы обозначаем как «мысли» (Thoughts). Этот процесс включает следующие аспекты:

  • Анализ и планирование. Агент использует внутренние рассуждения для анализа входной информации, декомпозиции сложных задач на управляемые шаги и определения дальнейших действий. Можно рассматривать это как некий внутренний «брейншторм», где модель выстраивает план решения.

  • Примеры рассуждений:

    • Планирование: “Чтобы решить задачу, сначала нужно собрать исходные данные, затем выявить закономерности и, наконец, подготовить итоговый отчёт.”

    • Анализ: “Ошибка указывает на проблему с соединением к базе данных, скорее всего, дело в неверных настройках доступа.”

    • Принятие решения: “Оптимальный вариант для пользователя с таким бюджетом – выбрать средний ценовой сегмент, так как он предлагает лучший баланс между ценой и качеством.”

    • Решение проблем: “Перед оптимизацией кода стоит измерить его производительность, чтобы понять, какие участки работают медленнее всего.”

    • Интеграция памяти: “Так как пользователь ранее говорил, что предпочитает Python, примеры кода лучше приводить на этом языке.”

    • Саморефлексия: “Предыдущий подход оказался неэффективным. Попробую другую стратегию для достижения цели.”

    • Постановка целей: “Прежде чем приступить к задаче, необходимо определить критерии успешного выполнения.”

    • Приоритизация: “Перед тем как добавлять новые функции, нужно в первую очередь устранить критические уязвимости в безопасности.”

Пример работы Re-Act агента

Давайте рассмотрим простейший пример работы Re-Act агента. В нашем примере допустим пользователь хочет перевести 100 долларов в евро по текущему курсу валют.

В простой реализации (использует “под капотом” tavily для поиска в интернете и python REPL для запуска произвольного python кода) промт общения с моделью будет выглядеть так:

Answer the following questions as best you can. You have access to the following tools:

python_repl(command: str, timeout: Optional[int] = None) -> str – A Python shell. Use this to execute python commands. Input should be a valid python command. If you want to see the output of a value, you should print it out with print(…).

tavily_search_results_json – A search engine optimized for comprehensive, accurate, and trusted results. Useful for when you need to answer questions about current events. Input should be a search query.

Use the following format:

Question: the input question you must answer

Thought: you should always think about what to do

Action: the action to take, should be one of [python_repl, tavily_search_results_json]

Action Input: the input to the action

Observation: the result of the action … (this Thought/Action/Action Input/Observation can repeat N times)

Thought: I now know the final answer

Final Answer: the final answer to the original input question

Begin!

Question: How much will 100 dollars be in euros at the current exchange rate?

Thought:

И пример того, что ответит LLM в первой итерации цикла Think -> Action -> Observation:

Thought: To find the answer, we need to know the current exchange rate between dollars and euros.

Action: tavily_search_results_json

Action Input: “give me current exchange rate dollars euros”

Как видим LLM подумала (Thought), что сначала ей нужно получить актуальный курс. И решила вызвать tavily для его поиска (Action).

Полный же цикл работы агенты для ответа на вопрос из этого примера будет выглядеть так:

Полный цикл работы агента для расчета курса валют

Полный цикл работы агента для расчета курса валют

Сначала модель узнает текущий курс с помощью tavily (tavily_search_results_json), затем она предлагает вызвать python_repl для конвертации 100 долларов в евро и на выходе отдаёт ответ:

The result of the calculation shows that 100 US dollars will be converted into approximately 95.7 euros at the current exchange rate.

Final Answer: 95.7 euros

Детали реализации Re-Act агентов

Переходя от теории к практике следует сказать, что практическая реализации в разных фреймворках отличается от той, которая была предложена в исходной статье, так как данная статья была опубликована относительно давно и развитие LLM шагнуло далеко вперед за это время.

Вот к примеру некоторые интересные детали реализации pre-build агента из библиотеки LangGraph:

  • LangGraph использует tool-calling (function-calling) технику (https://platform.openai.com/docs/guides/function-calling), чтобы LLM принимали решение о вызове пользовательских функций, тогда как в статье для этого использовался промтинг и парсинг raw текста, который выдавала LLM в ответе. Это связано с тем, что на момент написания статьи tool-calling, встроенный в LLM, ещё не существовал. Сейчас же многие современные LLM (даже open source и on premise) специально обучены технике вызова функций (к примеру, tool calling в Qwen).

  • LangGraph использует массив параметров для вызова tools вместо передачи всех параметров в виде одной большой строки. Опять же связано с ограничениями LLM, которые имелись на момент написания статьи.

  • LangGraph позволяет вызывать несколько tools за один раз.

  • Наконец, в статье явно генерировался этап Thought перед тем, как решать, какие инструменты вызывать. Это является частью Reasoning в Re-Act. LangGraph по умолчанию этого не делает, главным образом потому, что возможности LLM значительно улучшились, и это уже не так необходимо.

Плюсы и минусы Re-ACt

Re-Act не является универсальным решением и имеет свои плюсы и минусы.

Плюсы:

  • Гибкое пошаговое решение. Агент самостоятельно планирует и осуществляет серию действий. Он может выбирать из множества инструментов и выполнять несколько шагов, сохраняя при этом контекст с помощью памяти​. Это позволяет динамически решать сложные проблемы, разбивая их на подзадачи.

  • Простота разработки: Re-Act-агенты относительно просты в реализации, так как их логика сводится к циклу «think-action-observation». Многие фреймворки (например, LangGraph) уже предлагают готовые реализации Re-Act.

  • Универсальность. Re-Act агенты применимы в самых разных доменах – от поиска информации до управления устройствами – благодаря возможности подключать необходимые инструменты.

Минусы:

  • Низкая эффективность в некоторых сценариях: Для каждого шага требуется отдельный вызов LLM, что делает решение медленным, долгим и дорогим при длинных цепочках. Каждое действие (вызов инструмента) сопровождается размышлением модели, увеличивая общее число обращений к модели​.

  • Отсутствие глобального плана: Агент планирует только один шаг вперёд на каждой итерации​. Из-за отсутствия целостного плана он может выбирать субоптимальные действия, заходить в тупики или повторяться. Это затрудняет решение задач, требующих стратегического обзора нескольких шагов сразу.

  • Ограниченная масштабируемость: Если у агента слишком много возможных инструментов или очень длинная история, ему становится трудно выбрать правильное следующее действие. Контекст и количество опций могут превышать способности единственной модели эффективно управлять ими​, что снижает качество результатов.

Примеры других подходов построения агентов

Как я уже сказал, Re-Act не является единственным и самым лучшим способом построения ИИ агентов. Более того даже в официальной оригинальной статье приведены сравнения Re-Act и CoT и результаты показывают, что “ванильный” Re-Act далеко не всегда выигрывает.

Сейчас часто разрабатывают гибридные подходы, в которых используются вариации и комбинации несколько способов построения агентов. К примеру, LangGraph позволяет создавать произвольные графы агентов и мульти-агентных систем.

Приведу примеры и других способов построения агентов и промтинга, с которыми конкурирует или может быть совмещен Re-Act:

Не забудьте подписаться на мой Telegram-канал, где я публикую материалы про разработку ИИ агентов.

Автор: ai-agent-dev

Источник

Рейтинг@Mail.ru
Rambler's Top100