Обучение · Агенты и вайб-кодинг
Глава 2. Анатомия агента
Чтобы дальше говорить предметно, агента надо расхуячить на части. Иначе разговор всё время сваливается в общие слова: он тупит, он не слушается, он выдумывает. Тупит не он целиком, а какой-то один слой, и почти всегда можно сказать, какой именно.
Шесть слоёв
ЧТО ПРОИСХОДИТ ЗА ОДИН ХОД Ты написал фразу. Дальше происходит вот что. Программа собирает большой текст: правила проекта, описания доступных инструментов, историю разговора, твою фразу. Отправляет это модели. Модель возвращает текст, в котором может быть просьба вызвать инструмент. Программа выполняет просьбу, кладёт результат в тот же большой текст и отправляет заново. Так повторяется, пока модель не скажет, что закончила. Каждый круг стоит денег, потому что весь накопленный текст уезжает целиком.
Первое, что вводит новичка в ступор: модель не помнит ни хуя. Каждый круг ей заново пересказывают всё, что было. Именно поэтому контекст оказывается главной валютой, и целый модуль этой книги про то, как им распоряжаться.
Слой За что отвечает Кто им управляет Как ломается
Модель Догадка, рассуждение, Поставщик Выдумывает, срезает текст углы
Цикл Повторение ходов, Обвязка Зацикливается или броостановка сает
Инструменты Действия во внешнем Ты Плохое описание, нет мире ограничений
Контекст Что модель видит сей- Обвязка и ты Переполнение, мусор, час противоречия
Память Что переживает разго- Ты Свалка фактов, устареввор шее
Проверка Признание работы год- Ты Её просто нет ной
Шестой слой стоит особняком. Он не внутри агента, он снаружи. И это единственный слой, который целиком твой: поставщик его не сделает, фреймворк не подскажет.
Анатомия агента
ОДИН ХОД АГЕНТА
Выбор Сборка контекста Вызов модели Исполнение Оценка результата инструмента
что модель увидит догадка и решение что делать дальше действие в мире продолжать или закончить
Модель: догадка и больше ни хуя Модель хороша ровно в одном: угадывать, что уместно дальше. Это невъебенная сила, когда задача требует понимания, и полная беспомощность, когда задача требует точности.
Отсюда правило, которое стоит запомнить до всякой практики.
ГЛАВНОЕ ПРО РАЗДЕЛЕНИЕ ТРУДА Модели отдавай то, где нужна догадка. Всё, что требует надёжности, пиши кодом. Формат ответа, описанный словами в запросе, нарушается примерно в одном случае из десяти. Это не лечится формулировкой, не лечится строгим тоном и не лечится большой моделью. Контракт обязан обеспечивать код, который вызывает модель, а не абзац внутри запроса.
Пример, который разбирают постоянно. Есть инструмент распознавания блюд на подносе. Модель просят вернуть ответ в определённом формате, и формат описан прямо в тексте запроса. В девяти случаях из десяти всё заебись, в десятом формат нарушен, и всё разваливается к ёбаной бабушке. Правильное решение не в том, чтобы написать формат покрупнее, а в том, чтобы обвязка сама принуждала к структуре ответа.
Цикл: что заставляет всё работать Цикл это простая петля: спросили, получили просьбу, выполнили, спросили снова. Вся сложность в двух вопросах, которые вслух задают редко.
Когда останавливаться? Нет критерия, значит агент либо закончит слишком рано и объявит готовым недоделанное, либо будет коноёбиться, пока не кончатся деньги.
Что делать при ошибке? Повторить, откатиться, спросить человека или пойти дальше как ни в чём не бывало. Четвёртый вариант выбирается по умолчанию, если ты не выбрал иначе, и именно он приносит больше всего сюрпризов.
МИНИМУМ, КОТОРЫЙ ДОЛЖЕН БЫТЬ В ЛЮБОМ ЦИКЛЕ 1. Явный признак завершения. Не молчание модели, а проверяемое условие. 2. Ограничение на число ходов. Иначе одна неудачная задача сожрёт дневной бюджет. 3. Правило при ошибке инструмента: повтор с ограничением, откат, остановка. 4. Запрет объявлять готовым то, что не прошло проверку.
Последний пункт стоит выделить отдельно. Не может агент доказать, что задача выполнена, значит не имеет права говорить, что она выполнена. Это правило вылезает в каждом
Анатомия агента
серьёзном разборе, потому что нарушают его постоянно и с удовольствием.
Инструменты: интерфейс важнее уговоров Инструмент это не функция, а контракт. У него есть схема входа, предусловия, побочные эффекты, таймаут, поведение при повторном вызове и права.
Слово идемпотентность звучит страшно, а значит простую вещь: повторный вызов не должен ломать мир. Отправить письмо дважды плохо. Пересчитать сумму дважды нормально. Инструмент не идемпотентен, значит повтор при ошибке становится опасным, и знать это надо заранее, а не выяснять на проде, когда уже понеслась пизда по кочкам.
Второе важное свойство: описание инструмента это часть его работы. Модель выбирает инструмент по описанию, и хуёвое описание означает, что инструмент не вызовут вовремя или вызовут не туда. Вернёмся к этому в главе про скиллы, там та же закономерность видна ещё резче.
СПОРНАЯ ГРАНИЦА: ИНСТРУМЕНТЫ ИЛИ ПОДКЛЮЧАЕМЫЕ СЕРВЕРЫ За отдельные утилиты. Их проще тестировать, они не занимают место в контексте постоянно и работают в любом окружении. Практики, которые упаковывали внешние интерфейсы в утилиты, отмечали, что фон выдумок пропал совсем. За протокольные подключения. Единый способ подключить чужой сервис, не описывая его руками. Удобно, когда сервисов до хуя и они чужие. Что решает на практике. Скорость появления: утилиту пишут за десять минут, подключение согласовывают неделями. Поэтому набор утилит растёт быстрее, и большинство команд живут на нём.
Контекст: то, за что ты платишь Контекст это весь текст, который уходит модели на каждом круге. Правила проекта, описания инструментов, история, результаты вызовов, твоя фраза.
Два свойства делают его главной темой книги.
Он платный. Каждый круг оплачивается целиком, а не по приросту. Длинный разговор дорожает нелинейно.
Он ограничен. И даже внутри лимита работает неравномерно: начало и конец модель использует лучше, чем середину. Чем больше ты туда напихал, тем меньше внимания достаётся каждой части.
Память: то, что переживает разговор Память это всё, что должно сохраниться, когда разговор кончится. Бывает трёх видов, и все три нужны в разных случаях: файлы, векторный поиск и нити с историей решений. Целая глава разбирает, какой вид что решает и какими болезнями болеет.
Пока хватит одного различия. Контекст это то, что модель видит сейчас. Память это то, откуда в контекст попадает нужное. Путать их дорого: люди сваливают в правила проекта то,
Анатомия агента
чему место в памяти, а потом хватаются за голову от счёта.
Проверка: слой, которого обычно нет Разбирая чужие сборки, практики чаще всего находят одно и то же: модель выбрана, инструменты написаны, правила расписаны на трёх страницах, а как понять, что стало лучше, не знает ни одна живая душа.
ГЛАВНОЕ ПРО АНАТОМИЮ Пять слоёв внутри агента делают работу. Шестой, снаружи, отвечает на вопрос, годится ли она. Первые пять можно взять готовыми: модель у поставщика, цикл у фреймворка, инструменты у сообщества. Шестой придётся строить самому, потому что он зависит от твоей задачи. И именно он отличает работающего агента от красивой демки.
Кто чем управляет Полезно понимать, где проходит граница твоей ответственности.
Поставщик даёт модель и её поведение. Ты на это не влияешь, кроме выбора модели и уровня усилий, и должен быть готов к тому, что поведение поменяется без предупреждения.
Фреймворк даёт цикл, вызовы инструментов, базовое сжатие. Это можно взять готовым, и почти всегда стоит.
Твоя зона: описания инструментов, правила, память, проверки. Здесь готового нет ни хуя, и здесь решается, будет ли всё это работать.
Что запомнить Агент это шесть слоёв, а не монолит. Когда что-то пошло по пизде, определи слой: выдумки это модель, бесконечное кручение это цикл, не тот инструмент это описание, забыл сказанное это контекст или память, объявил готовым недоделанное это отсутствие проверки.
Модели отдавай догадку, всё остальное коду. Формат, описанный словами, нарушается в одном случае из десяти, и хуй ты это уговорами вылечишь.
И последнее, к чему мы будем возвращаться: агент это не веса и не обвязка, а модель вместе с инструкциями, памятью и историей. Убери любой слой, и перед тобой другой агент.
← Что такое агент · оглавление · Харнесс: слово без одного значения →
Спросить книгу может любой, кто вошёл в Neuraldeep Hub: агент ищет ответ по тексту и приводит цитату со ссылкой на главу.