Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Агентные системы и ReAct
agents_react

Агентные системы и ReAct

ReAct framework, tool use, multi-agent оркестрация, планирование и контроль агентов

Агентные системы и ReAct

Обычный LLM-запрос — это одностороннее взаимодействие: пользователь пишет, модель отвечает, готово. Агентные системы разрывают этот паттерн: модель рассуждает, выбирает действие, получает результат, рассуждает снова. Это принципиально другой класс систем.

#Что такое AI агент: цикл Perceive, Think, Act

AI агент — это система, в которой языковая модель выступает "мозгом", принимающим решения в цикле. Классическая триада:

  • Perceive (Восприятие): агент получает информацию — запрос пользователя, результат предыдущего действия, вывод инструмента
  • Think (Мышление): модель анализирует ситуацию, формулирует план, выбирает следующее действие
  • Act (Действие): агент исполняет действие — вызывает инструмент, пишет код, делает HTTP-запрос, возвращает ответ

Цикл повторяется до достижения цели или исчерпания лимита итераций. Ключевое отличие от обычного LLM-вызова: агент сам определяет, сколько шагов нужно и какие инструменты использовать.

Примеры агентных задач:

  • "Найди актуальную цену акций Apple и сравни с прошлым месяцем" (поиск + вычисление + формулировка)
  • "Проверь, что тесты проходят, если нет — найди ошибку и исправь" (запуск тестов + анализ + редактирование кода)

#ReAct: Reasoning + Acting

ReAct (Reasoning + Acting) — промпт-фреймворк, предложенный Yao et al. (2022), который структурирует работу агента через явные фазы рассуждения и действия. Аббревиатура одновременно означает "Reasoning + Acting" и "react" как реакцию на обратную связь.

Формат ReAct строится вокруг трёх типов высказываний:

  • Thought: внутреннее рассуждение агента о ситуации и следующем шаге
  • Action: конкретное действие, которое нужно выполнить (вызов инструмента)
  • Observation: результат выполненного действия (вывод инструмента)

Этот цикл повторяется, пока агент не достигнет финального ответа.

#Пример ReAct промпта для поиска в интернете

Ты — агент-исследователь с доступом к инструменту поиска.
Решай задачи пошагово, используя формат:

Thought: [твоё рассуждение о ситуации и следующем шаге]
Action: search["поисковый запрос"]
Observation: [результат поиска]
... (повторяй Thought/Action/Observation при необходимости)
Thought: у меня достаточно информации для ответа
Answer: [финальный ответ]

Вопрос: Кто является текущим CEO Anthropic и когда компания была основана?

Ответ агента:

Thought: Мне нужно найти информацию об Anthropic: CEO и дату основания.
Action: search["Anthropic CEO основатель компания"]
Observation: Anthropic основана в 2021 году Дарио Амодеи и Дэниелой Амодеи,
             бывшими сотрудниками OpenAI. Дарио Амодеи является CEO.
Thought: У меня есть вся нужная информация.
Answer: CEO Anthropic — Дарио Амодеи. Компания основана в 2021 году.

Явное разделение Thought/Action/Observation делает рассуждения модели прозрачными и позволяет дебаггинг: видно, где агент ошибся в рассуждении.

#Tool Use: как описывать инструменты в промпте

Инструменты (tools) — это функции, которые агент может вызывать. Каждый инструмент должен быть описан так, чтобы модель понимала когда и как его использовать.

Шаблон описания инструмента:

Доступные инструменты:

1. search(query: str) -> str
   Описание: Выполняет поиск в интернете по запросу.
   Когда использовать: для получения актуальной информации, фактов, новостей.
   Параметры:
     - query: поисковый запрос на русском или английском языке
   Возвращает: текстовые результаты поиска

2. execute_python(code: str) -> str
   Описание: Выполняет Python-код в изолированной среде.
   Когда использовать: для вычислений, анализа данных, работы с файлами.
   Параметры:
     - code: валидный Python-код для выполнения
   Возвращает: stdout или сообщение об ошибке

3. read_file(path: str) -> str
   Описание: Читает содержимое файла по указанному пути.
   Когда использовать: когда нужно проанализировать существующий файл.
   Ограничения: только файлы в директории /workspace/

Качество описания инструментов критически влияет на работу агента. Плохое описание приводит к неправильному выбору инструмента или некорректным параметрам.

Принципы описания инструментов:

  • Явный сигнал "когда использовать": модель должна понимать не только что делает инструмент, но и при каких условиях выбирать его
  • Точные типы параметров: str, int, bool, список допустимых значений
  • Описание возвращаемого значения: что придёт в Observation
  • Ограничения и побочные эффекты: что инструмент изменяет, какие есть лимиты

#Multi-step планирование: декомпозиция задач

Сложные задачи требуют предварительного плана. Агент без явной инструкции к планированию склонен "прыгать" к первому приходящему действию.

Промпт с явным планированием:

Перед выполнением задачи:
1. Decompose: разбей задачу на подзадачи
2. Plan: определи последовательность шагов и инструменты
3. Execute: выполняй шаг за шагом, адаптируя план при необходимости
4. Verify: проверь, что результат соответствует исходной задаче

Пример разбивки задачи "Проанализируй продажи за квартал и создай отчёт":

Thought: Декомпозирую задачу:
1. Прочитать CSV с данными продаж
2. Вычислить итоговые показатели (сумма, среднее, топ-продукты)
3. Сравнить с предыдущим кварталом
4. Сформатировать отчёт

Начинаю с шага 1.
Action: read_file("/workspace/sales_q1.csv")

Plan-and-Execute агенты делают планирование отдельным LLM-вызовом, а выполнение отдельным. Это позволяет использовать более дорогую модель для планирования и дешёвую для исполнения.

#Multi-agent системы: оркестратор и специализированные агенты

В сложных задачах один агент не справляется: слишком длинный контекст, слишком разные специализации. Multi-agent архитектура решает это через разделение ролей.

Оркестратор (Manager Agent, Supervisor) — главный агент, который:

  • Принимает задачу от пользователя
  • Декомпозирует её на подзадачи
  • Делегирует подзадачи специализированным агентам
  • Собирает результаты и формирует финальный ответ

Специализированные агенты (Worker Agents) — агенты с ограниченными, но глубокими возможностями:

  • ResearchAgent: поиск и синтез информации
  • CoderAgent: написание и выполнение кода
  • WriterAgent: форматирование и редактирование текста
  • DataAgent: анализ данных и визуализация

Промпт оркестратора:

Ты — менеджер агентов. У тебя есть команда специализированных агентов.
Твоя задача: декомпозировать пользовательский запрос и делегировать
подзадачи подходящим агентам.

Агенты:
- research_agent: поиск фактов и информации
- code_agent: написание и выполнение кода
- writer_agent: форматирование финального ответа

Для делегирования используй: delegate(agent_name, task_description)

#История агентных систем: MRKL, Toolformer, HuggingGPT

Понимание истории помогает видеть, почему текущие подходы устроены именно так.

MRKL (Modular Reasoning, Knowledge and Language) — один из первых фреймворков (Karpas et al., 2022). Идея: LLM как роутер, направляющий запросы к специализированным модулям (калькулятор, база данных, поисковик). MRKL показал, что LLM хорошо справляется с задачей "какой инструмент нужен", даже если сам не может выполнить вычисление.

Toolformer (Schick et al., 2023) — подход, при котором модель обучается самостоятельно вставлять API-вызовы в генерируемый текст. Модель решает, когда и какой инструмент использовать, прямо в процессе генерации. Pioneered идею self-supervised learning для tool use.

HuggingGPT / Jarvis (Shen et al., 2023) — оркестратор поверх ChatGPT, делегирующий задачи специализированным моделям HuggingFace. Показал масштабируемость multi-agent подхода: один LLM управляет сотнями моделей для обработки текста, изображений, аудио.

Каждая из этих систем внесла ключевую идею: LLM — это планировщик, а не исполнитель. Лучшие результаты получаются, когда рутинные операции выполняют детерминированные инструменты.

#Ошибки агентов: зацикливание и галлюцинаторные действия

Агенты — значительно менее надёжные системы, чем обычные LLM-запросы. Два класса ошибок особенно критичны.

Зацикливание (Agent Loop)

Агент повторяет одно и то же действие снова и снова, не продвигаясь к цели. Причины:

  • Инструмент возвращает ошибку, агент вызывает его снова с теми же параметрами
  • Наблюдение не меняется, агент "не замечает" что застрял
  • Конфликтующие инструкции в промпте

Пример:

Thought: Нужно найти файл конфигурации
Action: search_file("config.yaml")
Observation: Файл не найден
Thought: Нужно найти файл конфигурации
Action: search_file("config.yaml")
...

Галлюцинаторные действия (Hallucinated Actions)

Агент вызывает инструменты, которых не существует, или передаёт невалидные параметры. Это происходит, когда список инструментов плохо описан или задача выходит за пределы доступных возможностей.

Пример: агент вызывает send_email(to="user@example.com"), хотя инструмент send_email не определён в системе.

#Контроль агента: max iterations, confirmation loops

Агенты требуют явных механизмов контроля — без них автономная система может нанести вред или работать бесконечно.

Max iterations — жёсткий лимит числа шагов:

Ты можешь сделать не более 10 шагов (Thought/Action/Observation).
Если за 10 шагов задача не решена — сообщи об этом и объясни,
что тебе мешает, вместо того чтобы продолжать попытки.

Это предотвращает зацикливание и контролирует расходы (каждый LLM-вызов стоит денег).

Confirmation loops — запрос подтверждения перед необратимыми действиями:

Перед выполнением любого действия, которое изменяет данные
(запись файла, отправка email, удаление записи),
сначала выводи: "ТРЕБУЕТ ПОДТВЕРЖДЕНИЯ: [описание действия]"
и жди явного разрешения пользователя.

Escalation policy — что делать при неопределённости:

Если ты не уверен в правильности следующего шага или
видишь несколько равнозначных вариантов — остановись и
задай уточняющий вопрос пользователю вместо случайного выбора.

Sandboxing — ограничение прав инструментов на уровне инфраструктуры, не промптов. Агенту с доступом к выполнению кода нужна изолированная среда. Промптинг не заменяет sandbox — обученная на adversarial примерах модель может игнорировать текстовые ограничения. Контроль агента должен быть многоуровневым: промпт + инфраструктурные ограничения.

Далее: Оценка и итерация промптов