Главная / Статьи / Практические заметки: я ошибался в создании ИИ-агентов. Вот что я узнал.

Практические заметки: я ошибался в создании ИИ-агентов. Вот что я узнал.

Пошаговое руководство по практическим заметкам: «Я неправильно создавал ИИ-агентов. Вот что я узнал»: контракты, проверки и готовые блоки кода для команд, использующих эту модель.

1650 слов

Используйте это как переработанную версию идей из статьи «Я неправильно создавал ИИ-агентов. Вот что я узнал о мультиагентных архитектурах», предназначенную для операторов: четкие этапы, упорядоченные блоки кода и записи о восстановлении, сохраняющиеся при передаче задач. Этап Обзора работает лучше всего, если рассматривать его как измеримую основу. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Дайте названия элементам, определите критерии успеха и не соглашайтесь на молчаливое частичное выполнение задачи.

Сначала: зачем вообще использовать мультиагентные системы?

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

Шаблон 1: Подагенты — как наличие отличного исполнительного ассистента

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

Шаблон 2: Навыки — один агент, множество ролей

Для одной из стадий шаблона Pattern 2 Skills необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо задокументировать как успешный, так и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Внедрять утверждение человеком для операций, связанных с тратой денег или изменением производственных данных. Настройка на этапе компиляции не гарантирует полноты функционала продукта. Для одной из стадий шаблона Pattern 2 Skills необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Рассматривайте эту стадию как контракт между входными данными и проверенными результатами. Дайте названия соответствующим элементам, определите критерии успеха и не допускайте безответственного частичного завершения работы.

Шаблон 3: Передача заданий — эстафета

При работе над этапом передачи заданий по шаблону 3 сначала запишите условия выполнения: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой список помогает избегать ошибок при последующих изменениях кода. Записывайте время выполнения и стоимость токенов или запросов рядом с функциональными результатами. Отображение затрат заранее предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Выполняйте проверки после дорогостоящих шагов. Система возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить последующий узел.

Шаблон 4: Маршрутизатор — диспетчер воздушного движения

При работе над этапом маршрутизатора шаблона 4 сначала запишите контракт: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления не должна повторно взимать плату за один и тот же вызов LLM, когда оператор пытается выполнить более поздний узел.

Как на самом деле сделать выбор

При работе над разделом «Как на самом деле выбрать этап» сначала запишите условия соглашения: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Документируйте одновременно успешный и восстановительный пути выполнения. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Устанавливайте контрольные точки после дорогостоящих шагов. Механизм возобновления работы не должен повторно взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий узел заново. При работе над разделом «Как на самом деле выбрать этап» сначала запишите условия соглашения: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Рассматривайте этот этап как соглашение между входными данными и проверенными выходными результатами. Дайте названия результатам работы, определите критерии успеха и не допускайте безусловного частичного завершения задачи.

То, что вы хотели бы, чтобы кто-то сказал мне раньше

Этот механизм будет работать наилучшим образом, если рассматривать его как измеримую структуру. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе помогает избежать неожиданных счетов при переходе от демо-среды к общедоступным средам. Сохраняйте структуру графа простой и типизированной; вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и могут нарушить возобновление работы после прерываний.

Куда всё это ведёт?

Этап «Где это всё происходит» работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объёма работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Сохраняйте состояние графа простым и типизированным. Вложенные структуры данных скрывают информацию о том, какой узел записал какое поле, и мешают возобновлению работы после прерываний.

Чек-лист операционной деятельности

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

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

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

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

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

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

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

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

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

Подробность усиления безопасности 0/905: измеряйте время выполнения, класс ошибки и расход токенов для этого примечания, затем решайте о сохранении изменений на основе фиксированного набора критериев, а не на основе устных замечаний.

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

Подробность укрепления безопасности 1/905: измеряйте время выполнения, тип ошибок и расход токенов для данной процедуры, затем принимайте решение о сохранении изменений на основе установленного набора критериев, а не на основе единичных наблюдений.

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

Подробности усиления безопасности 2/905: измерьте время выполнения, класс ошибки и расход токенов для данной записки, затем решите, следует ли сохранять изменение на основе определенного набора критериев, а не на основе устных оценок.

Второй этап записки по усилению безопасности работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема работ. Документируйте как успешный путь выполнения, так и путь восстановления. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не элементами последующей доработки.

Подробности усиления безопасности 3/905: измерьте время обработки, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранять изменения на основе фиксированного набора вопросов, а не на основе единичных примеров.