Скилл prompt-optimizer: как переключить LLM с Р-пути на М-путь
Hermes AgentСкилл prompt-optimizer - преобразует мысль пользователя в оптимальный промпт для LLM. Вызывается по /prompt.
Универсальный: работает для любого домена. Основа на нейробиологии зрения: четыре рычага контраста переключают LLM с Р-пути (автоматическое "помечаю") на М-путь (вглядывание).
Философия
Хороший промпт - это не "правильные слова". Это переключение LLM с Р-пути на М-путь: модель должна вглядываться в задачу, а не ставить галочку "resolved" на знакомый паттерн.
Четыре рычага контраста:
- Контраст до - структурированный ввод (XML, теги, явное разделение задачи/данных/контекста)
- Контраст после - не подсказывать ответ, не намекать на ожидаемый результат
- Эффект гашения - потребовать пошагового рассуждения (Chain-of-Thought)
- Рамка для М-пути - явный формат вывода, конкретный контекст, ограничения
Алгоритм работы
Шаг 1: Получить мысль
Пользователь присылает задачу/мысль своими словами. Примеры:
- "хочу чтобы модель нашла баги в моём коде"
- "надо написать пост про безопасность VPN"
- "хочу сравнить два варианта архитектуры"
Шаг 2: Уточнить через clarify
Обязательно вызови clarify с вариантами на выбор, даже если задача кажется самодостаточной. Пользователь выбирает стратегию.
Варианты для clarify:
- Для целей: глубокий анализ (CoT) / быстрый экспертный ответ / структурированный вывод
- Для стиля: XML-структурированный / Roleplay через роль эксперта / через антипример
- Для формата: код / текст / таблица / свободный
Шаг 3: Сформировать вариант по умолчанию
На основе выбора пользователя сформируй промпт, который:
- Структурирует ввод (контраст до)
- Не подсказывает ответ (контраст после)
- Заставляет рассуждать (гашение)
- Задаёт рамку (формат вывода)
Шаг 4: Альтернативный подход
Предложи второй вариант, отличающийся от выбора пользователя:
- XML -> Roleplay или markdown
- CoT -> прямой экспертный ответ
- Roleplay -> XML
- Один промпт -> цепочка промптов
Шаг 5: Объяснить приёмы
Для каждого варианта укажи: какие приёмы контраста применены, почему именно так, когда использовать.
Принципы промпт-дизайна
1. Структурированный ввод (контраст до)
Всегда разделяй: задачу, данные, контекст, формат вывода.
<task>Что сделать</task> <context>Релевантный контекст</context> <data>Данные для работы</data> <output>Требуемый формат</output>
2. Не подсказывай ответ (контраст после)
Избегай: "Наверное, проблема в X, правильно?", "Я думаю ответ - Y"
Заменяй на: "Какова наиболее вероятная причина?", "Предложи решение и обоснуй"
3. Заставляй рассуждать (гашение)
Используй CoT для анализа, синтеза, проверки:
Проанализируй пошагово: 1. [Первый шаг] 2. [Второй шаг] 3. [Третий шаг] Затем дай финальный ответ.
4. Задавай рамку (формат вывода)
Всегда указывай формат: код (язык, стиль), текст (тон, объём), данные (таблица, JSON), сравнение (критерии, вердикт).
Примеры работы
Пример 1: Техническая задача
Пользователь: "Хочу чтобы модель нашла баги в моём коде"
Вариант по умолчанию (XML + CoT):
<task>Найти баги в коде</task> <context>Python 3.11, FastAPI, PostgreSQL</context> <data> [код] </data> <instructions> Проанализируй пошагово: 1. Синтаксические ошибки и исключения 2. Логика: граничные случаи, off-by-one 3. Безопасность: SQL-инъекции, XSS 4. Производительность: N+1 запросы Для каждого бага: строку, тип (Critical/Major/Minor), исправление. </instructions>
Альтернатива (Roleplay):
Ты - senior Python-разработчик, 10 лет FastAPI/PostgreSQL. Проведи код-ревью, найди все проблемы. [код]
Пример 2: Контент
Пользователь: "Написать пост про безопасность VPN"
Вариант по умолчанию:
<task>Написать пост о безопасности VPN</task> <audience>DevOps/разработчики, 25-45 лет</audience> <constraints> - 1500-2000 знаков - 1-3 совета с командами - Без пафоса, без "важно отметить" </constraints>
Альтернатива (антипример):
Напиши пост о VPN для DevOps. Стиль: объясняешь коллеге за кофе. АНТИПРИМЕР (так НЕ писать): - "В современном мире безопасность важна как никогда" - "Сегодня мы разберём одну из самых важных тем"
Пример 3: Сравнение
Пользователь: "Сравнить REST и GraphQL"
<task>Сравнить REST и GraphQL</task> <context> - 3 фронтендера, опыт только с REST - Мобильное приложение, нестабильный канал - 40+ типов сущностей, на экране 3-5 полей </context> <output> | Критерий | REST | GraphQL | Вердикт: одно предложение. </output>
Антипаттерны
- "Напиши хороший промпт" - хороший ДЛЯ ЧЕГО?
- "Оптимизируй" без цели
- Слишком общие промпты ("Найди баги" - где? что считать багом?)
- Подсказки в задаче ("Наверное X, правильно?" - модель согласится)
- Отсутствие формата вывода
Интеграция
Скилл вызывается: /prompt, "оптимизируй промпт", "составь промпт", "улучши запрос"
Скилл НЕ вызывается: пользователь просит выполнить задачу, готовый промпт на выполнение
---
Версия 1.0.0. Часть серии про контрастность промптов. @hermesagentru