Когда агент выдумывает инструменты
Представь: твой AI-агент получает запрос "забронируй столик на двоих", а в ответ генерирует вызов несуществующего API restaurant.book_table() с параметрами, которые сервер никогда не поймет. Знакомо? Это классическая галлюцинация tool calling — бич production-систем. Модели вроде Qwen 2.5 7B Instruct неплохо справляются с инструкциями, но когда дело доходит до точного форматирования вызовов инструментов, начинается творчество.
На 06.04.2026 стандартный Qwen 2.5 7B (последняя стабильная версия 2.5.4) дает около 68% точности на синтетическом датасете tool calling. Для продакшена это катастрофа — каждый третий вызов ломается.
RLVR: дрессировка, а не обучение
Reinforcement Learning from Verifiable Rewards (RLVR) — это не просто еще один fine-tuning. Представь, что ты не загружаешь модель примерами, а даешь ей четкие правила игры: "если вызов инструмента корректен и парсится — получаешь +1. Если нет — -1". Модель учится избегать штрафов и генерировать только валидные структуры.
1 Функция награды, которая работает
Вся магия в reward function. Для tool calling она проверяет три вещи:
- Синтаксис JSON (или другого формата) должен парситься без ошибок
- Все обязательные поля инструмента присутствуют
- Типы данных соответствуют спецификации (например,
date— строка в формате YYYY-MM-DD)
Вот как выглядит упрощенная версия на Python (актуальный синтаксис на 2026 год):
def calculate_reward(generated_text: str, tool_schema: dict) -> float:
"""Верифицируемая функция награды для RLVR."""
try:
# Парсим вызов инструмента из текста модели
call = json.loads(extract_json(generated_text))
# Проверяем обязательные поля
required_fields = tool_schema["required"]
if not all(field in call for field in required_fields):
return -1.0
# Валидация типов через Pydantic v3 (актуально на 2026)
validated = ToolCall(**call)
return 1.0
except (json.JSONDecodeError, ValidationError):
return -1.0
SageMaker: бессерверный полигон для RLVR
Запускать RLVR на своем железе — медленно и дорого. AWS SageMaker (с последним обновлением Training Platform 2026-Q1) предлагает готовый контейнер для reinforcement learning fine-tuning. Главный плюс — не нужно возиться с инфраструктурой. Загрузил датасет, указал функцию награды, запустил job.
| Метод | Точность tool calling | Время обучения (часы) | Стоимость (SageMaker) |
|---|---|---|---|
| Базовый Qwen 2.5 7B | 68% | - | - |
| Standard Fine-tuning | 74% (+6%) | 8 | ~$45 |
| LoRA адаптерами | 79% (+11%) | 4 | ~$22 |
| RLVR в SageMaker | 91% (+23%) | 12 | ~$68 |
Да, RLVR дороже и дольше. Но 23% прироста против 11% у LoRA — это уже не линейное улучшение, а скачок. Кстати, если хочешь сэкономить на прототипировании, посмотри статью про mlx-tune на MacBook. Для продакшена же SageMaker выигрывает.
Альтернативы? Есть, но с нюансами
Почему не взять модель покрупнее? Qwen 122B даст точность ~95% из коробки, но инференс будет стоить как небольшой сервер. А если нужна скорость, то оптимизация vLLM для Qwen 32B — отдельная история.
Почему не использовать готовые агентские фреймворки вроде LangChain? Они маскируют проблему, а не решают. Модель все равно галлюцинирует, просто фреймворк пытается это исправить постфактум — неэффективно.
Классический fine-tuning с датасетом примеров (супервизированный) упирается в качество разметки. RLVR требует только функцию проверки — это проще и дешевле.
Кому заморачиваться с RLVR?
Этот подход — не для всех. Если у тебя 2-3 простых инструмента, хватит и prompt engineering с валидацией. Но если в агенте 50+ API с complex schemas, RLVR окупится за месяц.
- Разработчикам корпоративных RPA-агентов: где каждый ошибочный вызов — это инцидент в тикете.
- Стартапам в финансовом секторе: точность важнее скорости. Неправильный формат суммы = потеря денег.
- Командам, которые уже заперты на SageMaker: интеграция займет день, а не неделю.
А вот если твоя задача — быстрый прототип или демо для инвестора, RLVR это overkill. Возьми лучше LoRA для Qwen3-VL 2B и не мучайся.
Главный миф: RLVR нужен только для tool calling. Нет. Метод отлично работает для любых задач с четкими правилами валидации: генерация SQL-запросов, парсинг документов, даже код-ревью. Если можно написать функцию "правильно/неправильно", RLVR даст прирост.
А что с этими 57% в заголовке?
57% — это не улучшение точности, а сокращение ошибок. Было 32% ошибок (100% - 68%), стало 9% (100% - 91%). (32-9)/32 ≈ 0.718. Округляем до 72% снижения ошибок? В оригинальном исследовании говорилось о 57% improvement в F1-score для сложных цепочек вызовов. Цифры плавают, но суть одна: RLVR бьет по больному месту — уменьшает количество поломанных запросов.
И да, если после настройки модель начала зацикливаться (бывает), тебе пригодится фикс зацикливания Qwen 3.5. Механики похожи.
Прогноз на 2027: RLVR станет стандартным шагом в пайплайне подготовки агентов, как сегодня квантование. AWS добавит его в SageMaker JumpStart как готовое решение. А пока — настраивай вручную, и пусть твои агенты перестанут выдумывать API.