Steering vectors снова в деле

17.05.2026 · 5 мин

Знаешь, что бесит в промптах? Они работают, но как-то… топорно. Добавил «будь кратким» — вроде стало короче. Добавил «ты эксперт» — вроде стало умнее. Но это всё — тычки вслепую. А что, если можно было бы прямо крутить ручки поведения модели, как на пульте?

Что случилось

Именно это обещают steering vectors — техника, которая позволяет управлять LLM, манипулируя её внутренними активациями напрямую. И недавний релиз DeepSeek-V4-Flash сделал эту идею снова практичной.

До этой недели steering vectors были скорее академическим упражнением. Да, были эксперименты, но для реальной работы нужна локальная модель, а локальные модели были слишком слабы для production-задач.

DeepSeek-V4-Flash — это первая open-weight модель с весами, которая реально конкурирует с нижним сегментом frontier-моделей для agentic coding. Antirez, создатель Redis, тут же запилил DwarfStar 4 — форк llama.cpp, заточенный только под эту модель. И что важно: он встроил steering прямо в ядро.

Восемь дней назад. Это только начало.

Как это работает

Идея простая, как всё гениальное.

Представь, что модель — это чёрный ящик с кучей переключателей внутри. Каждый переключатель отвечает за какую-то черту: «краткость», «формальность», «оптимизм». Steering vector — это способ найти нужный переключатель и включить его.

Как это делается технически:

СОЗДАНИЕ STEERING VECTOR
─────────────────────────
Промпт A ──▶ [Модель] ──▶ Активации₁
Промпт A + "кратко" ──▶ [Модель] ──▶ Активации₂
                    │
                    ▼
            Активации₂ − Активации₁
                    │
                    ▼
         ═══ STEERING VECTOR ═══
                    │
                    ▼
         Добавить к любому промпту
         → Модель отвечает кратко
Механика извлечения steering vector: сравниваем активации двух прогонов и выделяем разницу

Anthropic пошла дальше и использует sparse autoencoders. Это дороже и сложнее, но позволяет находить более глубокие концепты.

Почему это снова интересно

Три причины, почему steering vectors раньше не взлетели:

Большие лаборатории просто тренируют модели. Зачем возиться с активациями, если можно дообучить готовую модель на своих данных? Они не делятся весами, так что steering для API-пользователей недоступен в принципе.

Промптинг работает достаточно хорошо. Да, можно крутить ручки напрямую. Но можно и просто написать «отвечай кратко» — и это тоже работает. Steering выглядит круто, но какой в нём смысл, если обычный промпт справляется?

Локальные модели были слабыми. Steering требует полного доступа к весам и активациям. API не даёт такой возможности. А локальные модели до этой недели были слишком слабыми для серьёзной работы.

DeepSeek-V4-Flash меняет третью причину. Теперь у разработчиков есть локальная модель уровня frontier для agentic coding. А значит — впервые появился стимул реально возиться со steering.

Где это может быть полезно

В статье автор выделяет два сценария, где steering мог бы превзойти промптинг:

Steering того, что нельзя запромптить. Старые модели можно было «взломать» фразой «ты эксперт». Текущее поколение уже содержит это поведение внутри. Может, steering всё ещё сможет достучаться до этих черт?

Скептик во мне сомневается. Концепт «интеллект» настолько сложный, что его steering vector может оказаться почти идентичен всему набору весов. Это уже не «повернуть ручку» — это замена модели.

Сжатие контекста. Что если можно выделить «знание моей кодовой базы» в steering vector? Вместо того чтобы пихать в контекст тысячи токенов — один вектор.

Звучит заманчиво. Но подозреваю, что это тот же случай: концепт настолько сложный, что выделить его не получится. Fine-tune на кодовой базе обычно даёт узкую специализацию ценой генерализации.

ПРОМПТИНГ vs STEERING
──────────────────────
ПРОМПТИНГ                    STEERING
────────                    ────────
"Отвечай кратко"        ──▶  Нашёл вектор "краткость"
                              Добавил к активациям
                              ─────────────────────
                              Результат: работает
                              (пока) одинаково
═══════════════════════════════════════════════════
Где steering побеждает:
• Снятие рефьюзалов (abliteration)
• Персистентное поведение без промпта
• Модификация "встроенных" черт
═══════════════════════════════════════════════════
Промптинг и steering дают похожие результаты для базовых случаев, но steering выигрывает для встроенных ограничений модели

Кстати, после публикации в HN автору указали на важное применение, которого он не упомянул: удаление рефьюзалов. Это уже делается через steering для open-моделей. И это работает там, где промптинг бессилен — потому что «не отказывай» уже вшито в веса, а не вытаскивается языком.

Ограничения

Steering — не серебряная пуля. Вот почему я не особо оптимистичен:

Что дальше

Следующие полгода покажут, есть ли у steering реальное применение за пределами игрушек.

Интересно следить за DwarfStar 4. Когда выходит популярная open-weight модель, комьюнити всегда кидается делать форки, квантизации, обёртки. Может, теперь добавятся и библиотеки steering vectors? «Установил модель — получил набор ручек для настройки поведения».

Мне бы хотелось ошибиться. Было бы круто иметь простой способ подкрутить модель под себя, не переобучая и не мучаясь с промптами. Но пока — подожду и посмотрю.

Выводы

Steering vectors выглядят перспективно, но пока это скорее инструмент для узких задач и экспериментов.

Для обычных кейсов промптинг остаётся проще и дешевле.

Если open-weight модели уровня DeepSeek-V4-Flash станут стандартом, интерес к steering может быстро вырасти.

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.