Practical notes: Создание платформы ИИ с несколькими агентами — Часть 5: Восприятие
Пошаговое руководство по Practical notes: Создание платформы ИИ с несколькими агентами — Часть 5: Восприятие: контракты, проверки и слоты для кода для команд, использующих эту схему.
В следующих заметках описывается практический подход к разработке «Платформы ИИ с несколькими агентами — Часть 5: Слой восприятия». Основное внимание уделяется контрактам, проверкам и местам для вставки кода, а не мотивирующим аспектам. На этапе обзора сначала запишите контракт: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Рядом с функциональными результатами записывайте время выполнения и стоимость токенов или запросов. Отображение затрат с самого начала предотвращает неожиданные счета при переходе от демо-версии к общим средам.
Откуда берутся сигналы?
Этап «Откуда поступают сигналы» работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь граф. Сохраняйте состояние графа простым и типизированным. Вложенные структуры данных скрывают информацию о том, какой узел записал какое поле, и приводят к нарушению возобновления работы после перерывов.
Шесть моделей, одно сообщение, нулевая последовательная зависимость
Шестимодельная стадия формирования сообщения работает наилучшим образом, когда рассматривается как измеримая поверхность. Соберите один идеальный пример обработки, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема работ. Документируйте одновременно успешный и восстановительный пути выполнения задач. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не последующими доработками. Установите лимиты на количество токенов за один ход и за сессию. Инструменты агентов активно расширяют объем контекста; жесткие ограничения предотвращают появление неожиданных счетов при демонстрациях.
Оценка уровня раздражения
Этап оценки уровня разочарования работает наилучшим образом, когда рассматривается как измеримая величина. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда какой-то шаг сбивается, причина сбоя должна указывать на конкретный элемент ответственности, а не на запутанную цепочку операций. Сохраняйте структуру графа простой и типизированной. Вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и мешают возобновлению работы после прерываний. Этап оценки уровня разочарования работает наилучшим образом, когда рассматривается как измеримая величина. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость обработки токенов или запросов рядом с функциональными результатами. Отображение стоимости на раннем этапе предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды.
frustration = 0.45 × norm_sentiment + 0.55 × (anger + disgust)
frustration = 0.3 × norm_sentiment + 0.4 × (anger + disgust) + 0.3 × (1 - stt_confidence)
norm_sentiment = (-0.72 × -1 + 1) / 2 = 1.72 / 2 = 0.86
frustration = 0.3(0.86) + 0.4(0.61 + 0.23) + 0.3(1 - 0.78)
= 0.258 + 0.336 + 0.066
= 0.66
frustration = 0.45(0.86) + 0.55(0.61 + 0.23)
= 0.387 + 0.462
= 0.849
new_score = 0.7 × current_score + 0.3 × normalized_latest
Плавное снижение качества: что делать при сбоях этапов
Для обеспечения плавного снижения качества при сбоях этапов необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не пытаясь угадать скрытое состояние. Конфигурацию следует хранить отдельно от кода приложения. Файлы среды, хранилища конфиденциальных данных и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь кодовый граф. Для операций, связанных с тратой денег или изменением производственных данных, необходимо предусмотреть утверждение человеком. Подключения, созданные на этапе компиляции, не гарантируют полноты обработки бизнес-логики.
Устройства защиты от сбоев для каждого этапа
Для аварийных выключателей по каждому этапу необходимо заранее определить входные данные, ответственного за выполнение этапа и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить этап с известной точки контроля, не догадываясь о скрытом состоянии. Необходимо задокументировать как успешный, так и восстановительный сценарии работы. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки. Внедрять утверждение человеком для операций, связанных с тратой денег или изменением производственных данных. Подключение компонентов во время компиляции не гарантирует полноты функционала продукта.
| Stage | Failures to open | Recovery timeout |
| ------- | ----------------- | ----------------- |
| Safety (LlamaGuard) | 3 | 30 seconds |
| Intent (DeBERTa) | 5 | 60 seconds |
| Entity extraction | 5 | 60 seconds |
Локальные решения против облачных: переключатель инференса
Для сценариев работы локально и в облаке необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Лучше использовать небольшие, тестируемые единицы кода вместо обширных скриптов. При сбое шага он должен указывать на конкретную причину, а не на сложную структуру всей процедуры. Внедрять человеческое утверждение для операций, связанных с тратой денег или изменением производственных данных. Наличие связей во время компиляции не гарантирует полноты бизнес-логики. Для сценариев работы локально и в облаке необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Регистрировать время выполнения, а также стоимость токенов или запросов вместе с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам.
if INFERENCE_MODE == "cloud" and HF_TOKEN exists:
use HuggingFace Inference API URL
else:
use local container URL
| Mode | p50 latency | p95 latency | Cost per 1K messages |
| ------ | ------------- | ------------- | --------------------- |
| Local (GPU) | 180ms | 320ms | ~$0.12 (amortized infra) |
| Cloud (HF API) | 340ms | 580ms | ~$0.08 (pay-per-call) |
Как восприятие влияет на всё последующее
При работе над этапом «Как восприятие влияет на всё» сначала запишите условия работы: необходимые входные данные, сигнал о успехе и что происходит при частичной неудаче. Такой список помогает избегать ошибок при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы с настройками окружения, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна повторно оплачивать один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий шаг.
Сообщение внутри конвейера
При работе над сообщением типа A на каждом этапе сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Документируйте одновременно успешный сценарий работы и сценарий восстановления. Повторные попытки, проверки со стороны оператора и обработка некорректных сообщений являются частью продукта, а не элементами последующей доработки. Выполняйте контрольные точки после дорогостоящих операций. Механизм возобновления работы не должен повторно взимать плату за один и тот же вызов LLM при повторной попытке обработки со стороны оператора.
norm_sentiment = (-0.38 × -1 + 1) / 2 = 1.38 / 2 = 0.69
frustration = 0.45(0.69) + 0.55(0.12 + 0.04) = 0.311 + 0.088 = 0.399
C(x) = 0.30(0.6) + 0.20(0.3) + 0.20(0.5) + 0.15(0.5) + 0.15(0.7)
= 0.18 + 0.06 + 0.10 + 0.075 + 0.105
= 0.52
Серия
При работе над этапом The series сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Если какой-то шаг не сработает, причина должна быть связана с конкретной функцией, а не с запутанной цепочкой операций. Выполняйте проверки после дорогостоящих шагов. Система возмещения расходов не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий этап. При работе над этапом The series сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Записывайте время выполнения и стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам.
Чек-лист операций
На этапе операционного чек-листа необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии системы.
Рассматривайте этот этап как контракт между входными данными и проверенными результатами. Укажите названия всех элементов, определите критерии успеха и не допускайте молчаливого частичного выполнения задачи.
Внедряйте человеческое утверждение для операций, связанных с тратой средств или изменением производственных данных. Компиляционная настройка не заменяет полноты обработки в бизнес-процессах.
Напишите краткий руководство: как обновлять ключи, как опустошать очередь задач, как откатить последнюю операцию ввода данных.
Записывайте время выполнения операций, а также стоимость токенов или запросов рядом с функциональными результатами. Ясность стоимости на ранних этапах предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам.
Внедряйте человеческое утверждение для операций, связанных с расходованием средств или изменением производственных данных. Компиляционная настройка не гарантирует полноты функционала в бизнес-среде.
Перед внедрением всей стек-технологии заморозьте версии, сохраните эталонные записи для критически важных этапов и уточните шаги отката. В совместных средах необходимы ограничения на частоту запросов, проверки принадлежности пользователя и четко определенный ответственный за обновление секретов. Лучше выбирать надежность, чем креативные одноразовые демонстрации.
Примечание для b87fcefd6863: не храните ключи поставщика в репозитории, установите лимит токенов на сессию и сохраняйте записи рядом с фикстурами оценки, чтобы последующие замены моделей оставались сопоставимыми.
При работе над этапом 0 записки по укреплению безопасности сначала запишите условия соглашения: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Документируйте одновременно успешный сценарий работы и сценарий восстановления. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами последующей доработки.
Деталь укрепления безопасности 0/928: измерьте время выполнения, класс ошибки и расход токенов для этой записки, затем решите, следует ли сохранять изменение на основе фиксированного набора критериев, а не на основе единичных примеров.
Этап 1 записки по укреплению безопасности работает лучше всего, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объема работ. Рассматривайте этот этап как соглашение между входными данными и проверенными выходными результатами. Дайте названия соответствующим элементам, определите критерии успеха и не допускайте безответственного частичного завершения работы.
Подробность усиления 1/928: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных примеров.
На втором этапе работы над усилением определите входные данные, ответственного за шаг и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения: файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, которое операторы могут проверять, не читая весь код.
Подробность усиления 2/928: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных примеров.
При работе над третьим этапом инструкции по усилению безопасности сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Лучше использовать небольшие, тестируемые модули вместо обширных скриптов. Если какой-то шаг не сработает, причина неудачи должна указывать на конкретную ответственность, а не на запутанную цепочку операций.
Подробности усиления безопасности 3/928: измерьте время выполнения, класс ошибки и расход токенов для данной инструкции, затем решите, следует ли сохранять изменение, опираясь на заранее определенный набор критериев, а не на устные оценки.
Четвертый этап инструкции по усилению безопасности работает наилучшим образом, когда его рассматривают как измеряемую область. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Записывайте временные показатели и стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды.
Подробности усиления безопасности 4/928: измерьте время работы на стенде, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранять изменения на основе фиксированного набора вопросов, а не на основе единичных примеров.