Что такое харнесс и с чем его едят?
В субботу я проводил вебинар по использованию ИИ в аналитике, где рассказывал там про харнессы. Думаю, далеко не все были на вебинаре, но многим будет полезно узнать, что это такое.
Harness (в переводе с английского - обвязка) - это грубо говоря набор инструментов вокруг LLM, превращающий чат-бот в полноценного агента.
Иногда в интернете проводят параллель с компьютером и представляют харнесс в виде операционной системы.
Операционная система на компьютере позволяет нам управлять компьютером, операционная система над моделью позволяет управлять моделью.
Также нашел другое классное определение: Harness - это сбруя.
Если LLM - это лошадь, то одевая на неё сбрую, ты делаешь из (дикого) животного целевого помощника, функции которого ограничены и управляются этой самой упряжью.
Окей, с определением разобрались.
Из чего состоит харнесс?🛠
В целом, в лучших практиках выделяют 12 различных компонентов.
Я же в своей презентации давал упрощенный формат и выделял только 4: контекст, скиллы, инструменты, оркестрация.
Пройдемся по каждому.
Сегодня первый и самый важный, остальные три будут во второй части.
1. Контекст Контекст - это область знаний, в рамках которых оперирует модель.
Он может включать в себя инструкции и правила для агентов, описание ключевых артефактов (витрин данных, метрик, бизнес-модели компании и тд), историю разговора с пользователем, определения инструментов, результаты вызовов инструментов, план выполнения задачи и многое другое.
Управление контекстом - одна из ключевых задач при работе с харнессом.
Контекст это бюджет внимания. Окно модели может быть огромным, но чем больше в нем лишнего, тем хуже она находит нужное.
Поэтому задача сводится к тому, чтобы собрать минимальный набор токенов, которого хватает для решения задачи.
Архитектурно я делю контекст на три слоя.
Постоянный - то, что модель видит всегда. Правила, структура хранилища, кто я и чем занимаюсь.
Загружаемый по требованию - скиллы, инструкции, справочники.
В постоянный контекст попадает только название и одна строка «когда меня вызывать», а полный текст подтягивается, когда скилл реально запустился.
Временный - история конкретной задачи, план, вызовы инструментов, промежуточные результаты. Живет ровно столько, сколько идет задача.
Как это реализовать?
Расскажу про 4 приема, которые предлагает Anthropic.
Just-in-time доступ Не загружайте данные заранее, храните ссылки: путь к файлу, id дашборда, текст запроса. Модель сама сходит и достанет, когда понадобится.
Внешняя память Все, что нужно помнить дольше одной сессии, агент пишет в файл, а не тащит за собой в истории разговора.
Субагенты Грязную работу вроде «перелопатить 200 файлов и собрать статистику» отдаете отдельному агенту с собственным чистым окном.
Наверх он возвращает выжимку на 1-2 тысячи токенов вместо всего, что прочитал.
Компактификация. Когда история подходит к лимиту, она сжимается в резюме, и разговор продолжается с чистого окна.
И отдельно хочется сделать ремарку про инструкции.
Частая ошибка - прописывать жесткую логику «если пользователь сказал X, сделай Y» на все случаи жизни.
Такой харнесс ломается на первом же случае, которого в списке нет. Обратная крайность - «будь полезным аналитиком», из чего модель не поймет ничего.
Рабочий вариант посередине. Описываете принципы и даете пару показательных примеров.
Во второй части разберу оставшиеся три компонента.
Ставьте 🔥, если ждете продолжение. А если хотите освежить знания в статистике или метриках, загляните на https://data-slice.ru/
· 31.08
Харнессы — тема, которую я тоже щупаю, только в другом разрезе: собираю досье под B2B-заход, где ИИ вытаскивает из открытых источников, кто в компании решает и чем зацепить. Раньше на ручной ресёрч уходили часы, теперь минуты.. Расскажешь потом подробнее про свои харнессы для аналитики?
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён