Использование скрытого сигнала агентства (Â) в 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
👀 Смотрите также

Инструмент резервного копирования Databasus PostgreSQL получает поддержку с открытым исходным кодом от Anthropic.
Anthropic признала инструмент для резервного копирования баз данных с открытым исходным кодом Databasus через свою программу Claude for Open Source, предоставив сопровождающим бесплатный доступ к Claude Max. Инструмент поддерживает PostgreSQL, MySQL, MariaDB и MongoDB с запланированными резервными копиями, 70+ вариантами хранения и шифрованием AES-256-GCM.

ClawDeckX: Открытая веб-платформа в стиле macOS для управления агентом OpenClaw
ClawDeckX — это платформа с открытым исходным кодом для установки, настройки и мониторинга агентов OpenClaw. Она предоставляет визуальные инструменты управления, мониторинг в реальном времени и поддерживает 13 языков.

Каталог серверов MCP содержит более 1000 серверов в 20 категориях
Курируемый каталог предоставляет команды установки и фрагменты конфигурации для более чем 1000 MCP-серверов по категориям, включая базы данных, инструменты разработчика, автоматизацию браузера, ИИ/машинное обучение и облачные технологии/DevOps. Каталог бесплатен для просмотра и добавления серверов.

Tether: MCP-сервер для обмена контекстом между ИИ-моделями через SQLite
Tether — это инструмент с открытым исходным кодом, который сворачивает JSON-данные в 28-байтовые контентно-адресуемые дескрипторы, позволяя нескольким ИИ-моделям обмениваться контекстом через общую базу данных SQLite. Он функционирует как сервер MCP, обеспечивая прямую коммуникацию между моделями, такими как Claude и MiniMax, без необходимости копирования и вставки.