Главная / Статьи

Объяснение агент-харнеса: компоненты, превращающие LLM в агента

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

Издатель: REACTAPP.TOP6 мин чтения1445 слов

Источники: Agent Harness — A complete guide

В 2023 году описание работы с языковой моделью было простым. Вы вводили вопрос, например «написать функцию на Python для сортировки массива чисел», и ответ появлялся практически мгновенно. Модель не переходила в какой-либо видимый режим размышлений. Это была простая ЯЗЫКОВАЯ МОДЕЛЬ без дополнительных функций, характерных для современных агентских систем: инструментов, памяти, навыков и т. д. Именно эти дополнения превращают обычную ЯЗЫКОВУЮ МОДЕЛЬ в ИИ-агента.

Как изменилась гонка

В течение 2023 и 2024 годов соревнование касалось самих моделей. У OpenAI была ведущая универсальная модель, у Anthropic — ведущая модель для программирования, и все соревновались друг с другом на таких тестах, как MMLU и SWE-bench. В конце концов эта гонка начала стабилизироваться, и в центр внимания перешли способность к логическому мышлению и обработке длинных контекстов. В интерфейсах чата начали появляться индикаторы «размышления...», и люди задавались вопросом, что происходит за их кулисами.

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

Сравним эти два периода на примере. В начале кто-то мог сделать скриншот главной страницы Amazon, передать его модели для программирования и попросить создать сайт с таким же внешним видом сразу. Результатом был бы приемлемый интерфейс. А теперь представьте, что нужно одновременно настроить интерфейс, бэкенд, инфраструктуру и всё остальное.

К 2026 году тот же пользователь может написать: «Исправьте баг, возникший в задаче #122 на GitHub». В этом одном предложении скрыто несколько шагов. Модель 2023 года ответила бы, что не может получить доступ к вашему репозиторию. Модель, находящаяся внутри хорошего каркаса, входит в цикл размышлений: анализирует ситуацию, планирует действия, выбирает инструмент или способ решения, выполняет его, наблюдает за результатом, затем повторяет процесс или прекращает его.

Что такое каркас

Все эти дополнения к большой языковой модели (контекст, инструменты, память и т. д.) требуют организованного способа взаимодействия с моделью. У этой практики есть название, и его обычное определение довольно краткое. Это слой инфраструктуры, окружающий ИИ-агента, отвечающий за его обертку, управление, тестирование, наблюдение и оценку результатов. Проще говоря, это операционная система для большой языковой модели.

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

Почему это необходимо

Задачи, которые люди поручают агентам, становятся всё более сложными, и увеличивается также время, которое агенты тратят на их выполнение. Данные компании Anthropic показывают стремительный рост времени выполнения задач. Годом ранее, в 2025 году, агент мог работать над конкретной задачей примерно час, а сегодня этот показатель ближе к двенадцати часам.

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

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

Большую опасность представляет безопасность. Если модель выберет разрушительный инструмент, например такой, который стирает файловую систему, именно инструмент управления позволяет определить, с чем он может взаимодействовать. Короче говоря, инструмент управления даёт вам контроль над агентом и, тем самым, уверенность в том, что он выполняет то, что вы задумали.

Компоненты

Как бы конкретная команда ни называла свой инструмент управления, его элементы делятся на восемь групп. Каждая из них соответствует вопросу, на который агент должен уметь ответить.

  • Состояние агента: где сейчас происходит выполнение задачи? Оно отслеживает текущую задачу, шаги, наблюдения и принятые решения. Если план состоит из четырех шагов, система фиксирует, какие из них выполнены, какой находится в процессе и какие ещё не начались. Без этой информации агент, работа которого прервана, не может продолжить с того места, где остановился.
  • Инструменты: какие действия доступны? Это самая заметная часть. Здесь находятся выполнение кода, браузер, API, базы данных и оболочка. Для агента, занимающегося программированием, функция read_file является одной из основных.
  • Планирование: что будет дальше? Она определяет последующие действия и составляет или корректирует план. При выполнении программистской задачи это может быть последовательность из четырёх или пяти шагов.
  • Память: что уже известно? Она хранит и восстанавливает информацию между этапами или сессиями. При включении контента из векторной базы данных в контекст его предварительное краткое изложение может сэкономить место, и эту задачу выполняет компонент памяти.
  • Оркестрация: как выполняется процесс? Он контролирует цикл выполнения, вызовы инструментов, попытки повтора, подагентов, параллелизм и передачу задач. В процессе покупки подагент оплаты может работать одновременно с агентом запасов, обновляющим количество товаров, или же агенту запасов может быть приказано дождаться успешной оплаты.
  • Управление контекстом: что должен видеть LLM прямо сейчас? Он определяет, что будет включено в окно контекста на каждом этапе.
  • Безопасность и управление: что разрешено? Здесь рассматриваются разрешения, изоляция в сандбоксе, механизмы одобрения, правила, ограничения и процедуры аутентификации. Даже если модели разрешено редактировать файлы, разумно запретить их удаление.
  • Наблюдаемость и оценка: действительно ли всё сработало? Этот аспект позволяет отслеживать произошедшее и оценивать успех, неудачу или нарушение установленных ограничений. Если для выполнения задачи требуется три из десяти доступных инструментов, важно увидеть, как они были использованы. При сбое причиной может быть отсутствие у модели определенного инструмента или то, что данные так и не попали в её контекст. Трейсы помогают различить эти причины.
  • Практика проектирования, создания и запуска таких компонентов для обеспечения максимальной эффективности агента называется инженерией управления агентами. Это относительно новая дисциплина, и большинство команд до сих пор определяются с тем, кто несет какую ответственность.

    Агент для программирования от начала до конца

    Возьмите агента для программирования с инструментальным комплектом и дайте ему задание «исправить баг в issue #122 на GitHub». Это не просьба «объясните мне это», а реальная задача, требующая планирования, использования инструментов и сохранения информации в памяти. Один из логических подходов выглядит следующим образом:

    1. Ввод пользователя попадает в контекст. Модель анализирует его и формулирует цель, которая остается в контексте до её достижения.
    2. Модель планирует действия: изучает связанные баги, исправляет соответствующий файл, компилирует код, запускает тесты и обновляет память.
    3. Для первого шага инструментальный комплект загружает информацию из векторной базы данных, а именно данные о прошлых багах, связанных с текущим. Информация, касающаяся аутентификации, возвращается как наиболее подходящий результат и добавляется в контекст.
  • Исходя из этого контекста, модель решает открыть файл auth.py и исправить ошибку аутентификации. Для этого необходимы инструменты read_file и write_file, с помощью которых она редактирует и сохраняет файл.
  • Затем она тестирует внесенные изменения из терминала, используя соответствующий инструмент из своего набора. Система обеспечивает наличие у нее соответствующего уровня доступа как к терминалу, так и к файлам.
  • Модель переходит к следующему шагу плана и запускает тест-кейсы, для чего требуются дополнительные инструменты. Каждый шаг обновляет контекст, чтобы модель знала, на каком этапе она находится и что еще предстоит сделать.
  • На протяжении всего процесса система отслеживания записывает все: используемые инструменты, затраченное время, объем использованной памяти, возникшие сбои.
  • Оценка пока не рассматривалась, и ей следует уделить отдельное внимание. Она выходит за рамки точности и может охватывать несколько показателей, связанных с реальным поведением агента.

    Куда движемся

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

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