Добавление промежуточного ПО

На предыдущей странице показано, как пакеты навыков объединяют специалистические знания — инструкции, справочные материалы и скрипты — в самодостаточные единицы, которые любой агент может загрузить по запросу. Но при развертывании агентов в рабочей среде возникает новая категория проблем: проблемы, которые пересекают каждое взаимодействие независимо от того, что делает агент.

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

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

Когда это следует использовать

Добавьте ПО промежуточного слоя в агент, когда:

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

Tip

Agent Framework включает встроенные инструменты по трассировке и метрикам. Дополнительные сведения см. в разделе "Наблюдаемость ".

Как работает конвейер промежуточного программного обеспечения

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

┌─────────────────────────────────────────────────────────┐
│  Caller: agent.run("What's the weather?")               │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Middleware 1 (Logging)                                  │
│  • Logs the incoming request                            │
│  • Calls next middleware                                │
│  • Logs the outgoing response                           │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Middleware 2 (Guardrails)                               │
│  • Checks input against content policy                  │
│  • If blocked → returns early with rejection message    │
│  • If allowed → calls next middleware                   │
│  • Checks output against content policy                 │
└──────────────┬──────────────────────────────────────────┘
               ▼
┌─────────────────────────────────────────────────────────┐
│  Agent core (model invocation, tool calls, etc.)        │
└─────────────────────────────────────────────────────────┘

Основные моменты:

  1. Каждое ПО промежуточного слоя решает, следует ли продолжать работу. Промежуточное программное обеспечение может вызывать следующий слой в цепочке, чтобы продолжить выполнение, или оно может прекратить выполнение конвейера, возвращая ответ напрямую, например, когда охранитель блокирует запрос.
  2. ПО промежуточного слоя видит оба направления. ПО промежуточного слоя запускает код перед делегированием (для проверки или изменения входных данных) и после возврата ответа (для проверки или изменения выходных данных). Это классический «слойчатый» шаблон.
  3. Несколько промежуточных программ объединяются в цепочку. При регистрации нескольких компонентов промежуточного ПО они вкладываются друг в друга: первый зарегистрированный компонент становится самым внешним слоем, а последний зарегистрированный является самым внутренним слоем, ближайшим к агенту.

Tip

Подробное представление о том, как промежуточное ПО интегрируется в полный конвейер выполнения агента, включая контекстных провайдеров и уровни клиентских чатов, см. в разделе "Архитектура конвейера агента".

Что может сделать ПО промежуточного слоя

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

Рисунок Example Reference
Ограничения и завершение Блокировать вредное содержимое, ограничить длину беседы Завершение и Ограничители
Обработка исключений Повторная попытка при временных сбоях, возврат резервных ответов Обработка исключений
Переопределения результатов Изменение конфиденциальных данных, обогащение или замена выходных данных агента Переопределения результатов
Общедоступное состояние Передача идентификаторов запросов или данных времени между промежуточным ПО Разделенное состояние
Контекст среды выполнения Изменять поведение в зависимости от сеанса, пользователя или конфигурации для каждого выполнения Контекст среды выполнения
Определение области: Применить промежуточное ПО ко всем запускам программ или только одному запуску программы Агент и область выполнения

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

Рекомендации

Consideration Сведения
Разделение проблем Промежуточное ПО исключает перекрестную логику из кода вашего агента, инструментов и навыков. Каждый компонент программного обеспечения промежуточного слоя выполняет одну задачу — логирование, защитные механизмы, обработка ошибок, — которую можно добавлять, удалять или переупорядочить независимо.
Порядковая зависимость Промежуточное ПО образует цепочку. Порядок регистрации промежуточного программного обеспечения имеет значение: промежуточное ПО для ведения журнала, которое выполняется первым, увидит необработанные входные данные, а то, которое выполняется последним, увидит входные данные, уже измененные ранним промежуточным ПО. Спланируйте заказ конвейера намеренно.
Сложность отладки Если ПО промежуточного слоя изменяет входные или выходные данные, отладка требует понимания полного конвейера. Ответ может выглядеть неправильно не из-за агента, а потому что ПО промежуточного слоя преобразовывает его. Хорошее промежуточное программное обеспечение для логирования, которое размещается в начале цепочки, помогает диагностировать эти случаи.
Затраты на производительность Каждый промежуточный слой добавляет время обработки каждого запроса. Для легковесных операций, таких как логирование, это незначительно. Для дорогостоящих операций, таких как вызов внешнего API модерации содержимого, задержка накапливается, особенно если несколько таких промежуточных ПО цепляются друг за другом.

Дальнейшие действия

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

Вернитесь глубже: