Оптимізація вибору інструментів Model Context Protocol для запобігання галюцинаціям агентів
Додавання понад 15 інструментів до ШІ-агента знижує точність їх вибору та збільшує витрати токенів. Впровадження шлюзів попередньої фільтрації та семантичного пошуку (RAG-MCP) збереже точність роботи агента.
Вплив: Високий
Чому це важливо
Ви зможете створювати надійніших агентів, обмежуючи визначення інструментів, які модель бачить на кожному кроці.
TL;DR
- 01Точність вибору інструментів ШІ-агента суттєво знижується, якщо кількість активних інструментів перевищує 15.
- 02Пошук на основі ретрівала (RAG-MCP) потроює точність інструментів, скорочуючи кількість токенів промту наполовину.
- 03Гейтинг на основі регулярних виразів завчасно відсікає суто розмовні репліки, усуваючи накладні витрати.
Ключові факти
- Точність вибору RAG-MCP (повний каталог)
- 13.62%
- Точність вибору RAG-MCP (з пошуком)
- 43.13%
- Економія токенів промту
- >50%
- Жорсткий ліміт інструментів OpenAI
- 128
- Поріг деградації точності в продакшені
- 15-20 інструментів
Пастка багатоінструментальних агентів
Додавання нових інструментів до ШІ-агентів здається правильним кроком, але досвід експлуатації показує стрімке погіршення результатів після перевищення ліміту в 15-20 інструментів. Коли контекст агента перевантажений схемами, виникають дві основні проблеми. По-перше, описи інструментів з'їдають від 5% до 7% вікна контексту ще до завантаження запиту користувача, створюючи ефект «втрати в середині» (lost-in-the-middle). По-друге, модель починає галюцинувати інструментами, вигадуючи неіснуючі назви або змішуючи схеми параметрів.
Вирішення проблеми через гейтинг та RAG
Щоб подолати ці обмеження без переходу на більші моделі, впровадьте двохетапний захист. Спочатку використовуйте легкий фільтр (гейт) на основі регулярних виразів для відсікання суто розмовних реплік (привітань чи уточнень). Після цього проіндексуйте описи інструментів вашого Model Context Protocol у векторному сховищі та застосуйте семантичний пошук (RAG-MCP). Замість передачі всього каталогу, витягуйте лише top-K релевантних інструментів під конкретний запит. Тести показують, що такий підхід підвищує точність вибору з 13.62% до 43.13%, скорочуючи витрати токенів наполовину.
Спробуй за 2 хвилини
import re
CONVERSATIONAL_PATTERNS = [
r'^\s*(thanks|thank you|thx|ok|okay|cool|got it|sounds good|sure|great)\b',
r'^\s*(hi|hello|hey|good morning|good evening)\b',
r'^\s*can you (clarify|explain that)\b',
]
ACTION_KEYWORDS = ['send', 'create', 'search', 'find', 'look up', 'schedule', 'book', 'read', 'write', 'query', 'summarize', 'translate', 'check']
def is_tool_needed(query: str) -> dict:
q_lower = query.lower()
for pattern in CONVERSATIONAL_PATTERNS:
if re.search(pattern, q_lower):
return {'tool_needed': False, 'reason': 'conversational_pattern'}
has_action_keyword = any(kw in q_lower for kw in ACTION_KEYWORDS)
if not has_action_keyword and len(q_lower.split()) < 5:
return {'tool_needed': False, 'reason': 'short_with_no_action_keyword'}
return {'tool_needed': True, 'reason': 'action_keyword_or_long_query'}python
✓ Коли використовувати
- Побудова агентів із більш ніж 15 кастомними інструментами Model Context Protocol
- Наявність галюцинацій інструментів та некоректна передача параметрів
- Прагнення зменшити споживання токенів промту в агентних циклах
✕ Коли НЕ варто
- Ваш агент використовує лише 2 або 3 статичні, чітко розрізнені функції
- Суворі обмеження на затримку, де будь-який пошук у векторній базі є занадто повільним
Що зробити сьогодні
- Проведіть аудит списку активних інструментів вашого агента та перевірте, чи перевищує він 15 одиниць.
- Впровадьте легкий гейт на регулярних виразах перед викликом агентного конвеєра.
- Налаштуйте індекс векторної бази даних для збереження та динамічного пошуку описів інструментів Model Context Protocol.
Джерела