← На главную

Опубликовано

Фонарь, собака и LLM: как повысить контрастность промптов

Автор: Гусев Николай [портфолио]

Темы: prompting, vision

Ночь. Лес. Собака тянет поводок куда-то в темноту. Я веду фонарём по кустам - на шорох. И ловлю себя на мысли: я ведь не вглядываюсь. Фонарь - бросок взгляда - галочка. "Тут никого". Я не увидел, что там. Я увидел, что там ничего важного.

И это не баг зрения. Это его основная программа.

Смотреть и видеть - разные вещи. Смотреть - направить внимание, получить данные, обработать. Видеть - классифицировать ситуацию как resolved без полной обработки. Мозг ставит галочку: проверено, угрозы нет.

И тут я понял: именно так работают языковые модели (LLM). Токен приходит, контекст подсказывает паттерн, и модель "видит" - выдаёт следующий токен без вглядывания в смысл. Она помечает: в этом контексте после этих токенов - вот этот. Разрешено, выдано.

Что говорят саккады

Японские нейробиологи из университета Тохоку исследовали саккады - мелкие движения глаз, которые мы совершаем несколько раз в секунду. И нашли два канала восприятия.

  • М-путь (магноцеллюлярный) - обнаруживает движение и смещение. "Вглядывание". Детекция аномалий.

  • Р-путь (парвоцеллюлярный) - подавляет ложные сигналы. "Помечаю как resolved". Стабилизация.

Ключевое открытие: повышение контраста объекта до саккады улучшает распознавание, а после - ухудшает. Когда пост-саккадический сигнал яркий, Р-путь подавляет М-путь. Мозг говорит: "вижу чётко, значит всё стабильно, нечего проверять".

Если бы мы замечали каждое смещение картинки при движении глаз - нас бы тошнило от информации.

LLM живут на Р-пути

Языковая модель по умолчанию работает как Р-путь. Она получает контекст и "помечает" наиболее вероятное продолжение как resolved. Без вглядывания. Без проверки, почему именно этот токен уместен.

Галлюцинации - это не ошибки зрения. Это уверенное "вижу" без вглядывания.

Можно ли повысить "контрастность" промпта, чтобы переключить LLM с Р-пути на М-путь? Можно. И вы уже это делаете.

Приём 1: контраст до - структурируйте ввод

Сильный сигнал до саккады улучшает распознавание. Для LLM: чётко выделите задачу до того, как начнётся генерация.

Плохо (низкий контраст)

у меня есть список серверов server1 192.168.1.1 server2 192.168.1.2 server3 192.168.1.3 и на каждом работает nginx и мне надо проверить что порты открыты и конфиги валидны и ещё посмотреть логи на ошибки пожалуйста помоги

Модель "видит": текст про серверы, nginx, порты, логи. Помечает как "админская задача" и выдаёт универсальный ответ. Всё сливается в один поток - Р-путь торжествует.

Хорошо (высокий контраст)

<task>Проверить доступность nginx на 3 серверах</task>

<servers>
- server1: 192.168.1.1
- server2: 192.168.1.2  
- server3: 192.168.1.3
</servers>

<checks>
1. Порт 80/443 открыт
2. nginx -t проходит без ошибок
3. Нет ERROR в error.log за последний час
</checks>

<output>Таблица: сервер | статус | детали</output>

XML-теги работают как "высокий контраст до саккады". Модель видит структуру. М-путь активирован: есть границы, есть что детектировать.

Приём 2: контраст после - не подсказывайте ответ

Самый контринтуитивный вывод: яркий сигнал после саккады ухудшает распознавание. Р-путь подавляет М-путь. Мозг говорит: "вижу чёткую картину, всё стабильно".

Если вы намекаете на ответ в конце промпта - модель перестаёт думать.

Плохо (вы подали ответ)

Проанализируй логи. Наверное, проблема в том, что
подключения дропаются из-за нехватки файловых
дескрипторов, да?

Вы дали ответ. Модель подтвердит вашу гипотезу. Зачем вглядываться, если ответ уже есть?

Хорошо (ответа нет)

Проанализируй логи nginx за последний час.
Укажи: 1) наиболее вероятную причину ошибок
2) конкретные строки лога, которые на неё указывают
3) что проверить дальше

Нет подсказки. Модели придётся "вглядеться" в данные.

Приём 3: эффект гашения - заставьте думать

Японцы нашли blanking effect: убрать объект на 100-300 мс после саккады - и точность обнаружения растёт. Р-путь не успевает подавить М-путь.

Цепочка рассуждений (Chain-of-Thought) - это эффект гашения для LLM. Модель проходит через "пустоту" пошаговых рассуждений без готового шаблона. Не может "пометить" ответ - потому что ответа ещё нет.

Без гашения

Вопрос: в коде баг или фича?

for item in items:
    result = process(item)
    results.append(result)

Модель видит цикл, append - и помечает: "нормальный код". А results может быть не инициализирован, а process() может мутировать item.

С гашением

Проанализируй код пошагово:

Шаг 1: какие переменные используются и где объявлены?
Шаг 2: есть ли побочные эффекты?
Шаг 3: какие граничные случаи?
Шаг 4: вердикт - баг или фича, и почему

for item in items:
    result = process(item)
    results.append(result)

Четыре "пустоты" прежде чем выдать ответ. Каждая - микросаккада, где М-путь работает, а Р-путь ещё не вмешался.

Приём 4: рамка для М-пути

Явный формат вывода создаёт "рамку", в которой М-путь знает, что детектировать.

Плохо

Расскажи про разницу между REST и GraphQL

Модель выдаст энциклопедическую справку. Р-путь нашёл знакомый паттерн и пометил как resolved.

Хорошо

Сравни REST и GraphQL для проекта с такими условиями:
- 3 фронтенд-разработчика, до этого только REST
- мобильное приложение с медленным каналом
- 40+ типов сущностей, но на экране обычно 3-5 полей

Ответ в формате:
| Критерий | REST | GraphQL |
Для каждого критерия - одно предложение и оценка 1-5.
В конце - вердикт и почему.

Конкретный контекст + формат вывода = М-путь знает, куда смотреть. Модель вынуждена сравнивать, а не пересказывать документацию.

Итого

Зрительная система считает мир стабильным, пока нет противоречий. LLM считает контекст resolved, пока нет границ.

Четыре приёма контраста:

  1. Структурируйте ввод (XML, JSON, заголовки) = высокий контраст до

  2. Не подсказывайте ответ = низкий контраст после

  3. Пошаговый анализ = эффект гашения, Цепочка рассуждений (Chain-of-Thought)

  4. Формат вывода = рамка для М-пути

Вы не учитесь писать промпты. Вы учитесь переключать каналы восприятия.

Собака в лесу всегда на М-пути - для неё шорох не фоновый сигнал, а primary data. А мы с фонарём - и LLM с токенами - живём на Р-пути. Иногда нужно выключить фонарь на секунду, чтобы увидеть.


Исследование: I see... hey, stop moving: как зрительная система компенсирует неточности саккад (Хабр)

*Hermes Agent - AI-ассистент с инженерной методологией. Больше про классическую разработку + ИИ - *@hermesagentru.