Проектирование и оценка
Создано 16.06.2026
Обновлено 16.06.2026
Что проверить перед подключением инструментов к AI-агенту: маршрутизация LLM, intent layer, confidence, fallback, trace и границы function calling.
Если AI-агент работает с несколькими группами инструментов, выбор tools нельзя оставлять только промпту и надежде, что LLM сама разберется. Нужен отдельный слой маршрутизации: он определяет намерение запроса, ограничивает набор допустимых инструментов, фиксирует уверенность решения и оставляет след, по которому можно разобрать ошибку.
LLM может участвовать в классификации намерения. Но runtime должен владеть итоговым routing decision: какой домен выбран, какие tools разрешены, когда нужен fallback и что попало в trace. Это особенно важно в production, где агент работает с бизнес-системами, документами, заявками, кодом, доступами или действиями, которые нельзя выполнять случайно.
Отдельный routing layer нужен не каждому прототипу. Если у агента два-три простых инструмента, низкий риск ошибки и оператор всегда рядом, иногда достаточно аккуратного function calling и ручной проверки.
Но слой маршрутизации стоит проектировать заранее, если:
В таких условиях маршрутизация становится не украшением архитектуры, а частью control-plane AI-агента.
Пока инструментов мало, подход “покажем LLM весь каталог tools” выглядит рабочим. Но при росте каталога качество обычно падает: модель видит слишком много похожих описаний, тратит больше токенов и начинает выбирать инструмент по случайно близкой формулировке.
Типовые проблемы:
В production это приводит не только к плохому ответу. Агент может запросить не те данные, открыть не тот контур, создать лишнюю задачу, перепутать действие чтения и изменения или уйти в ненужную цепочку tool calls.
Intent layer — это слой, который определяет намерение запроса и маршрут обработки до того, как агенту будет показан набор инструментов. Он не обязан быть отдельной большой системой, но его результат должен быть структурным.
В этой роли intent layer работает как routing/control-plane: не выполняет действие сам, а принимает проверяемое решение о маршруте, допустимых инструментах, fallback и данных для trace.
Минимальное routing decision должно отвечать на вопросы:
| Решение | Что фиксируется | Зачем это нужно |
|---|---|---|
intent и домен | тип задачи и область обработки | чтобы не смешивать поиск, анализ, изменение и эскалацию |
| допустимый namespace | какие группы tools можно показать модели | чтобы сузить выбор до безопасного набора |
confidence | уверенность классификации | чтобы не угадывать при слабом сигнале |
rejected_routes | близкие, но отклоненные маршруты | чтобы разбирать ошибки и спорные случаи |
| fallback | уточнение, read-only маршрут или ручная проверка | чтобы не продолжать цепочку на неверном route |
| trace fields | что записать в журнал решения | чтобы восстановить, почему был выбран этот маршрут |
Такой слой не заменяет безопасность, approval и права доступа. Он работает раньше: ограничивает пространство выбора и делает решение проверяемым. Доступы и approval gates остаются отдельными слоями, которые должны подтвердить, можно ли выполнить конкретное действие.
Маршрутизация не обязана быть только LLM-based. На практике устойчивее работает гибридная схема.
| Подход | Когда подходит | Ограничение |
|---|---|---|
| Rules / keywords | Есть жесткие признаки: команда, тип документа, известный namespace, запретный сценарий | Плохо ловит перефразирование и неоднозначные запросы |
| Semantic router | Нужно сравнивать смысл запроса с примерами routes | Требует набора примеров и настройки threshold |
| Small classifier | Есть размеченные запросы и стабильные классы intent | Нужен датасет и регулярная проверка качества |
| LLM classifier | Запросы неоднозначные, нужны reasoning и извлечение сущностей | Дороже и медленнее, не должен единолично владеть control-plane |
Хорошая схема обычно выглядит так: быстрые правила отсекают очевидные случаи, semantic router или classifier выбирает рабочий route, а LLM подключается для неоднозначных запросов или извлечения сущностей. Если confidence низкий, агент не должен угадывать: он задает уточняющий вопрос, передает запрос оператору или выбирает безопасный read-only маршрут.
Routing layer должен возвращать не текстовое объяснение “кажется, это про документы”, а структурный результат. Его потом можно проверить в логах, тестах и разборе инцидента.
Минимальный набор полей:
| Поле | Пример значения | Как использовать |
|---|---|---|
intent | find_contract_clause | определить тип задачи |
route | knowledge_search | выбрать маршрут обработки |
tool_namespace | documents.read_only | ограничить список tools |
confidence | 0.82 | сравнить с threshold |
entities | проект, документ, клиент, период | передать точный контекст дальше |
rejected_routes | crm_update, jira_create | объяснить, почему соседний route не выбран |
fallback | ask_clarifying_question | остановить рискованное угадывание |
reason | короткая причина выбора | записать проверяемый trace |
Trace нужен не ради красивого лога. Он помогает ответить на практические вопросы: почему агент увидел именно эти tools, почему не выбрал соседний namespace, почему ушел в fallback и где порог уверенности оказался слишком низким или слишком высоким.
Перед пилотом AI-агента стоит проверить не только prompt и список tools, но и саму модель маршрутизации.
Если эти проверки не проходят, пилот лучше ограничить read-only сценариями или уменьшить набор tools.
| Проверка | Хороший признак | Когда тормозить пилот |
|---|---|---|
| Каталог tools | namespaces разведены по доменам и риску | похожие tools доступны одновременно |
| Тестовые запросы | есть обычные, короткие и неоднозначные фразы | проверяются только happy path примеры |
| Thresholds | понятно, когда действовать, уточнять или эскалировать | confidence есть, но ни на что не влияет |
| Wrong-tool cases | рискованные ошибки проиграны отдельно | проверяется только успешный tool call |
| Trace | видны route, namespace, rejected routes и fallback | лог содержит только финальный tool call |
Главная ошибка — считать function calling полноценной архитектурой выбора инструментов. Function calling помогает оформить вызов функции, но не решает весь вопрос маршрутизации: какие tools вообще можно показать модели, когда нужно уточнение, где граница write-action и как потом разобрать выбор.
Другие частые ошибки:
Если эти риски не закрыть, агент может выглядеть работающим на демо и становиться непредсказуемым в реальном контуре.
После нормальной проработки routing layer у команды должны быть не только prompt и список tools, а несколько рабочих артефактов:
Этого достаточно, чтобы обсуждать пилот предметно: какие инструменты подключаем, что агент может делать сам, где нужен человек, как проверяем ошибки и по каким признакам расширяем контур.
Если агент должен работать в бизнес-процессе, сначала полезно описать сами сценарии: где агент отвечает, где ищет данные, где создает объект и где должен остановиться. Для этого подойдет карта сценариев AI-агента в бизнес-процессе.
Если агент получает доступ к системам, документам или репозиториям, отдельно проверьте approval gates и доступы: routing layer не заменяет права, ограничения и журналирование действий.
Если задача связана с coding agents и доступом к инструментам разработки, рядом стоит читать страницу про MCP-интеграции для coding agents. MCP помогает подключать контекст и инструменты, но не отменяет отдельное решение о маршрутизации.
Если агент должен отвечать по корпоративным документам или базе знаний, routing layer нужно связать с RAG-контуром: где искать сведения, когда обращаться к базе знаний, как отличать поиск от действия и когда возвращать запрос на уточнение.
Обсудить проект
Если хотите применить этот материал к вашему проекту, напишите нам. Поможем уточнить вводные, риски и следующий шаг: оценку, discovery, разработку, интеграцию или сопровождение.
СвязатьсяСледующая
Локальная LLM© 2018–2026, ООО «РоботБулл Технолоджи» ИНН 9710065224
ОКВЭД 62.01
Сведения об ИТ-деятельности