Использование скрытого сигнала агентства (Â) в LLM для улучшения вызова инструментов

При отладке сбоев агента ReAct с Qwen3 разработчик обнаружил, что скрытые состояния прямо перед вызовом инструментов линейно отделимы от состояний без инструментов с AUC > 0,94. Это направление в латентном пространстве, названное Â (от «агентности»), существует в моделях разных размеров от 1,7B до 8B и предсказывает вызов инструментов с помощью простого линейного зонда.
Как использовать сигнал агентности
Во время вывода проецируйте каждое скрытое состояние на Â. Если проекция превышает порог θ, модель хочет вызвать инструмент, даже если не выражает это текстуально. Затем можно принудительно вызвать инструмент.
# Во время вывода (псевдокод)
hidden_state = get_middle_layer_state(model, input_text)
proj = np.dot(hidden_state, Â)
if proj > threshold:
# Модель хочет действовать → принудительный вызов инструмента
tool = choose_tool() # можно обучить или использовать эвристику
result = execute_tool(tool)
else:
# Обычная генерация
output = model.generate(input_text)
Результаты производительности
Протестировано на 40 разнообразных задачах (поиск, код, файлы, коммуникация, данные) с моделями Qwen3:
- Qwen3-1.7B: 26,7% → 85% (+58%)
- Qwen3-8B: 52,5% → 76,3% (+23%)
Режим отказа «без инструментов» снизился с 43% до 2,6%. Меньшие модели выигрывают больше, потому что их текстовое декодирование слабее, но геометрический сигнал одинаково силён.
Как извлечь Â
Три метода:
- Вариант 1: Из собственных трассировок - Вычислить нормализованную среднюю разницу между скрытыми состояниями с инструментами и без
- Вариант 2: С помощью контрастных промптов - Запустить 15 пар промптов (один требует инструмент, другой пассивный) через вашу модель и взять среднюю разницу на среднем слое
- Вариант 3: Использовать предварительно вычисленные направления - Использовать направления Â, извлечённые для моделей Qwen3 и опубликованные в репозитории
Упакованная реализация
Открытие упаковано в библиотеку для лёгкого повторного использования:
bash
pip install a-hat-optimizer
python
from a_hat_optimizer import AHat
# Автоматическое извлечение из любой модели HF в одну строку
ahat = AHat.from_model("Qwen/Qwen3-8B")
# Или загрузить предварительно извлечённое
ahat = AHat.from_file("my_ahat_dir/")
# Использовать в вашем агенте
should_call, confidence = ahat.predict(hidden_state)
if should_call:
print(f"Принудительный вызов инструмента (уверенность: {confidence:.2f})")
Библиотека обрабатывает автоматическое извлечение через контрастные промпты, 4 стратегии калибровки (середина, F1, Йоден, процентиль), пакетное предсказание и сохранение/загрузку с метаданными, включая AUC и информацию о слоях.
📖 Read the full source: r/LocalLLaMA
👀 Смотрите также

Адам: Встраиваемая кроссплатформенная библиотека AI-агентов на C
Adam — это библиотека на C, предоставляющая полный цикл агента с вызовом инструментов, памятью, голосом и поддержкой облачных/локальных LLM, предназначенная для встраивания в любое приложение.

Маркетинговая Мудрость MCP: Бесплатный Семантический Поиск для Стартап-Инсайтов
Бесплатный MCP-сервер предоставляет семантический поиск по 6 700 идеям из 1 040 эпизодов подкастов My First Million и Starter Story. Он предлагает четыре инструмента для поиска мудрости основателей о росте, маркетинге и бизнес-стратегиях.

Стартап-бухгалтер: Бесплатный навык Claude для отслеживания малого бизнеса
Startup Bookkeeper — это открытый навык для Claude AI, который помогает основателям стартапов отслеживать расходы, классифицируя транзакции по описаниям на простом английском языке, обрабатывая фотографии чеков с помощью OCR и создавая дашборды или отчёты о прибылях и убытках.
PullMD v2.4.1:新增针对claude.ai网页的原生MCP连接器及多用户认证
PullMD v2.4.1 теперь поддерживает диалог пользовательского коннектора claude.ai через OAuth 2.1 + PKCE-S256 и добавляет многопользовательские режимы аутентификации. Превращайте любой URL в чистый Markdown с помощью самоуправляемого MCP.