Genkit Middleware дает AI-агентам уровень контроля

Google представила Genkit Middleware: слой контроля для agentic AI-приложений с retries, fallback и human approval для tools.

2026-05-14 GIGATAP Team #security
#Genkit#AI agents#developer tools

Google добавляет слой контроля вокруг agentic AI-вызовов#

Google анонсировала Genkit Middleware — систему middleware для своего open-source фреймворка Genkit. Genkit создан, чтобы помогать разработчикам создавать production-ready agentic AI-приложения на TypeScript, Go, Dart и Python.

Важная часть здесь не в ярлыке «agentic». Важно то, где находится контроль. Genkit Middleware позволяет разработчикам перехватывать generation calls и добавлять вокруг них пользовательское поведение. Это может включать retries, model fallbacks и human approval перед тем, как tool будет разрешено выполнить.

Проще говоря, это дает командам место, где можно применять правила вне prompt. Prompts по-прежнему важны. Но prompts слабы, если это единственная поверхность контроля. Middleware — это code. Его можно ревьюить, тестировать, комбинировать, debug и менять без попыток притворяться, что каждая policy должна жить внутри natural language instructions для model.

В этом и состоит полезный сдвиг. По мере того как AI-приложения переходят от chat boxes к системам, использующим tools, разработчикам нужны hooks вокруг model call, model layer и tools, которые agent может вызывать. Анонс Genkit именно о том, чтобы встроить такие hooks в путь framework.

Что делает middleware#

Согласно описанию Google, Genkit Middleware может перехватывать generation calls и внедрять поведение в request flow. Примеры, названные в источнике, практичны: retry logic, model fallback и human-in-the-loop tool approvals.

Retry logic важна, потому что model calls и соседние сервисы ломаются обычными для production способами. Network issues, provider limits, transient errors и malformed outputs могут нарушить agent flow. Middleware layer дает разработчикам более чистое место для обработки таких сбоев, чем разбросанный по приложению одноразовый retry code.

Model fallback — еще одна production-задача. Если один model path недоступен или не подходит, приложению может понадобиться маршрутизация к другой model. Анонс не описывает каждую fallback strategy и не обещает универсальную portability. Главная мысль в том, что middleware layer в Genkit может поддерживать такую routing logic как часть generation path.

Human-in-the-loop tool approval — самый важный с точки зрения security пример. Agentic apps часто вызывают tools: отправить message, записать в database, создать ticket, запустить workflow или триггернуть external service. Некоторые действия не должны выполняться только потому, что model решила, что так нужно. Middleware может поставить этот path на паузу и потребовать шаг human approval до запуска tool.

Google также говорит, что middleware можно подключать на разных layers: generate, model и tool. Это важно, потому что не каждый control должен находиться в одном и том же месте. Generation-level hook может обрабатывать общее поведение request. Model-level hook может управлять model-specific routing или output handling. Tool-level hook может применять permission checks или approval requirements в точке, где возникают внешние side effects.

Почему это важно для agentic apps#

У agentic applications другой профиль риска, чем у простой text generation. Text model может выдать плохой ответ. Tool-using model может выдать плохой ответ, а затем еще и действовать на его основе.

Именно на action layer проявляется много реальных отказов. Agent может вызвать не тот tool, использовать правильный tool с неправильными parameters, повторить action, утечь context туда, где его не должно быть, или выполнить instruction, которую нужно было считать untrusted. Это не экзотические edge cases. Это нормальные failure modes, когда рассуждения language model подключены к системам с state и permissions.

Middleware само по себе не решает эти проблемы. Но оно дает разработчикам более явную enforcement point. Вместо того чтобы полагаться только на поведение model, команды могут определять code-level gates вокруг sensitive paths.

Например, tool, который читает public data, может требовать минимального friction. Tool, который изменяет user data, может требовать более строгой validation. Tool, который отправляет деньги, удаляет records или меняет access settings, может требовать шаг human approval. Middleware — естественное место, чтобы выразить эти различия.

То же относится к reliability. Если приложение использует LLM для поддержки customer workflow, системе нужно предсказуемое поведение при сбоях. Retry или fallback policy не должны быть afterthought. Они должны быть видимы в application architecture. Middleware model в Genkit, похоже, нацелена именно на этот слой: пространство между raw model calls и business logic, которая от них зависит.

Ключевая ценность — deterministic control#

В резюме Google подчеркиваются reliability и deterministic control над model outputs. Эту фразу нужно читать аккуратно.

Ни одна middleware system не делает generative model полностью deterministic в широком смысле. Models все еще могут выдавать variable outputs. Tool use все еще может зависеть от ambiguous context. External systems все еще могут fail. Middleware layer не превращает AI-приложение в традиционную deterministic program.

Но оно может сделать deterministic те части, которые должны быть deterministic: какие tools доступны, какие actions требуют approval, какие errors ретраятся, когда применяется fallback, какие outputs блокируются, какие requests логируются и какие policies проверяются перед side effects.

Это и есть реальная ценность. Не обещание «контролировать интеллект модели», а возможность вынести часть operational control в обычный software layer.

Практический вывод для команд#

Если команда строит agentic app на Genkit или оценивает Genkit для нового проекта, middleware стоит рассматривать не как декоративный extension point, а как часть production architecture.

Практический первый шаг: составить список tools, которые agent может вызывать, и разделить их по риску. Read-only tools можно оставить с легкими checks. Tools, которые меняют данные, должны иметь validation и audit logging. Tools с необратимыми или дорогими последствиями должны проходить human approval или отдельный policy gate. Затем эти правила нужно реализовать в middleware, а не только описать в prompt.

Второй шаг — определить failure policy для model calls. Где нужен retry? Где retry опасен, потому что может повторить side effect? Когда допустим fallback на другую model? Нужно ли помечать ответ как degraded, если fallback сработал? Middleware дает место, где такие решения можно сделать явными.

Третий шаг — добавить наблюдаемость. Middleware hooks должны логировать ключевые события: выбор model, fallback, retry, blocked tool call, approval request и финальное выполнение action. Без этого agentic system трудно отлаживать и еще труднее объяснять после инцидента.

Для разработчиков главный takeaway простой: не пытайтесь решать reliability и safety agentic-приложения только prompt engineering. Prompts должны задавать намерение и формат поведения, но enforcement для tools, retries, fallbacks и approvals лучше держать в code-level middleware. Genkit Middleware предлагает именно такую точку контроля внутри Genkit stack.

Что это не меняет#

Genkit Middleware не отменяет необходимость тестов, threat modeling, permission design и careful tool design. Если tool сам по себе слишком мощный или плохо ограничен, middleware не станет магическим щитом. Если приложение передает модели лишний context, middleware не всегда сможет исправить ущерб после факта. Если approval process превращается в rubber stamp, human-in-the-loop не дает настоящей защиты.

Но как архитектурный primitive это правильное направление. Agentic apps нуждаются в layers, где разработчики могут перехватывать, проверять, маршрутизировать и блокировать действия. Google добавляет такой слой в Genkit, и это делает framework более пригодным для production-сценариев, где важны не только quality of answers, но и контроль над actions.