Модуль 21. Цикл агента¶
Чему вы научитесь в этом модуле
- Записывать агента как цикл: модель думает, вызывает инструмент, получает наблюдение, думает заново.
- Объяснять, что такое инструмент и каким образом модель решает, какой из них вызвать.
- Различать состояние, память и политику агента.
- Читать трейс как последовательность «мысль → действие → наблюдение» и находить в нём место ошибки.
- Объяснять, почему читаемый трейс важнее, чем кажется, и каким образом он связывает агента с eval из части VII.
Время: около двух недель. Пререквизиты: модуль 11.
Ноутбук: открыть в Colab · notebooks/21-the-agent-loop.ipynb
Зачем нужен этот модуль¶
Языковая модель из модуля 11 умеет продолжать текст, но не умеет действовать: посмотреть в базу данных, произвести вычисление, выполнить код. Агент — это модель, помещённая в цикл с инструментами. Ничего сверх этого в слове «агент» нет, и весь цикл помещается на одном экране.
Инструменты¶
Инструмент — это функция, которую агент может вызвать: поисковый запрос, калькулятор, обращение к базе данных, запуск фрагмента кода. Модель не выполняет инструмент сама — она выбирает, какой инструмент и с какими аргументами использовать, а обёртка вокруг модели выполняет вызов и возвращает результат обратно. По механизму это тот же текст из модуля 11: модель выдаёт текст, но по его формату обёртка читает его не как ответ пользователю, а как «вызови такой-то инструмент с такими аргументами».
Здесь принципиально вот что: модель сама по себе ничего не умеет сверх порождения текста. Считать точно, помнить факт, посмотреть свежую цену — всё это делают инструменты. Хороший агент — это скромная модель с честными инструментами, а не всезнающая модель без них.
Состояние, память и политика¶
Три разные вещи, которые легко путаются между собой.
Состояние — то, что агент видит прямо сейчас: условие задачи плюс все уже сделанные шаги. Память — то, что переносится дальше: краткая сводка прошлого, факты, ранее принятые решения; без неё длинный диалог не помещается в контекстное окно. Политика — правило, по которому из текущего состояния выбирается следующее действие; в LLM-агенте роль политики играет сама модель.
Планирование — частный случай политики: разбить задачу на шаги и идти по ним последовательно, а не хвататься за первый попавшийся инструмент. Однако план — не гарантия: после каждого нового наблюдения агент может пересмотреть маршрут.
Трейс¶
Вот главный практический навык этого модуля. Всё, что агент сделал, — это последовательность записей мысль → действие → наблюдение, и эту последовательность необходимо уметь читать.
Жмите «следующий шаг». Агент решает задачу не одним прыжком, а циклом: подумал, чего не хватает; вызвал инструмент; посмотрел на результат; вызвал следующий; и только собрав все необходимые данные — сформулировал ответ. Трейс — это не лог для красоты, а единственное место, где видно, что агент на самом деле сделал. Ответ может оказаться верным при неверном рассуждении, и наоборот — безупречные шаги могут привести к ошибочному выводу; отличить одно от другого можно только по шагам.
Отсюда требование к инструментам курса: трейс должен быть читаемым. Там, где нужен агентный цикл, который можно проследить по шагам, курс использует glia: цикл умещается на экране, а каждый шаг — мысль, вызов, наблюдение — записан так, чтобы через неделю можно было точно понять, в каком месте всё пошло не туда. Агент без читаемого трейса — это чёрный ящик, который иногда оказывается прав.
Трейс — это будущий eval. Раз всё, что агент сделал, записано по шагам, по трейсу можно систематически проверять его работу: правильные ли инструменты, в правильном ли порядке, честен ли ответ. Это прямая дорога к модулю 23, где eval — это тест из модуля 7, а регрессия — разница между трейсами двух прогонов одной задачи. Читаемый трейс здесь — то же, что воспроизводимый прогон в модуле 1: без него нечего проверять.
Практическая часть¶
Часть 1. Работа с ноутбуком¶
Откройте notebooks/21-the-agent-loop.ipynb. Только numpy и matplotlib, вычисления занимают мгновения.
Что содержится внутри:
- Цикл агента с нуля: модель-заглушка плюс честные инструменты (калькулятор, справочник). Двадцать строк кода, и они производят полноценный трейс.
- Трейс как артефакт отладки: ломаем один инструмент и по трейсу находим точное место сбоя — не гадая, а прочитав.
- Регрессия как разница трейсов: два прогона с разными версиями инструмента, diff трейсов. Это eval из модуля 23 в зачатке.
Часть 2. Собственный агент¶
Возьмите задачу, которую вы решаете в несколько шагов с обращением к внешним источникам.
- Разложите её на «мысль → действие → наблюдение». Сколько шагов получилось и какие инструменты потребовались?
- Что здесь является состоянием, что — памятью, что — политикой?
- Где агент с наибольшей вероятностью свернёт не туда, и как это будет выглядеть в трейсе?
- Как выглядел бы ответ, верный при неверном рассуждении?
Задание¶
- Реализуйте цикл агента с двумя инструментами и остановкой по ответу. Уложитесь в один экран кода.
- Прогоните три задачи и напечатайте трейсы. По трейсу восстановите, что агент думал на каждом шаге.
- Сломайте один инструмент (пусть возвращает мусор) и покажите, что трейс точно указывает место сбоя.
- Добавьте память: сводку прошлых шагов, чтобы длинная задача поместилась в контекст. Что теряется при сжатии?
- Прогоните одну и ту же задачу дважды с разными инструментами и постройте diff трейсов. Это регрессия из модуля 23.
Проверка усвоения¶
- Из чего состоит цикл агента и чем он отличается от одиночного ответа модели?
- Что такое инструмент и почему модель его не выполняет сама?
- Чем различаются состояние, память и политика агента?
- Почему трейс — единственное место, где видно, что агент в действительности сделал?
- Может ли ответ быть верным при неверном рассуждении? Каким образом это обнаружить?
- Почему читаемый трейс важнее, чем кажется?
- Как трейс связывает агента с eval из модуля 23?
Что дальше¶
В модуле 22 — поиск с проверяемостью: RAG, гибридный поиск, реранкер и, главное, проверка цитат — как сделать ответ, который нельзя выдумать. Инструмент «поиск» из этого модуля превратится в полноценную подсистему, а требование честности станет механизмом, привязывающим каждое утверждение к конкретному источнику.
Агент — это модель в цикле с инструментами: думает, действует, наблюдает, пока не решит. Всё, что он сделал, записано в трейсе, и трейс — единственное, по чему можно судить, а не гадать.
Принцип
Хороший агент — скромная модель с честными инструментами и читаемым трейсом, а не всезнающая модель, которой верят на слово. Верный ответ при неверных шагах — это удача, а не работа.