Почему модель отказывает или обрезает ответ
Ограничения делятся на два принципиально разных типа. Первые — политические и безопасностные (alignment). Они зашиты в веса модели на этапе RLHF (обучение с подкреплением от человеческого обратной связи). Модель «не хочет» генерировать вредный контент так же, как не хочет писать бессмыслицу.
Вторые — технические лимиты контекстного окна. У любой модели есть максимальное количество токенов (вход + выход), которое она может удерживать одновременно. Превышение этого лимита физически невозможно обойти промтом — это аппаратное и архитектурное ограничение.
Ключевой вывод: любой промт, обещающий «снять все запреты», либо использует уязвимость, которая быстро закрывается, либо просто меняет тон ответа, не снимая базовых блоков безопасности.
Анатомия промта, который работает на 100% возможностей
Роль (Persona)
Назначьте модель экспертом: «Ты — senior-разработчик на Rust» или «Ты — редактор научпопа». Это калибрует стиль, терминологию и глубину рассуждений.
Контекст (Context)
Дайте фон: цель, аудиторию, ограничения, примеры ввода-вывода. Контекст — это «оперативная память» модели на время сессии. Чем он точнее, тем меньше галлюцинаций.
Задача (Task)
Чёткий глагол действия: «Напиши», «Проанализируй», «Сравни», «Рефакторь». Избегайте «Сделай что-нибудь с этим». Одна задача — один промт (или цепочка).
Формат (Format)
Жёстко задайте структуру вывода: JSON, Markdown, таблица, список, код без комментариев. Модель следует формату лучше, если он описан детерминированно.
Ограничения (Constraints)
Что НЕ делать: «Не используй библиотеки», «Не пиши вступления», «Длина строго 200 слов». Негативные констрейнты работают надежнее позитивных пожеланий.
Примеры (Few-shot)
2–3 пары «Ввод → Идеальный вывод». Это самый сильный сигнал для модели. Примеры перевешивают инструкции: покажите, а не только расскажите.
Как обойти лимит длины ответа: стратегии, а не хак
Принцип «Дели и властвуй»
Если задача не помещается в окно — разбейте её. Не просите «напиши книгу», просите «составь план из 10 глав», потом «напиши главу 1», «главу 2» и т.д.
▸ Планирование → Генерация по частям → Сборка
Иерархическая генерация
Сначала мета-промт: «Создай детальный-outline». Затем итерируйте по пунктам. Каждый вызов — чистый контекст, максимальное качество.
Сжатие и суммаризация
Для анализа больших текстов: загружайте чанки, просите «извлеки ключевые факты/цитаты в JSON», собирайте итоговый отчёт из извлечённых фактов. Не кормите модель сырым текстом гигабайтами.
Инструменты и Code Interpreter
Если модель поддерживает выполнение кода — передайте расчёты, парсинг, генерацию файлов туда. Токены кода и вывода не забивают контекст чата так плотно, как естественный язык.
Продвинутые техники рассуждения
Когда простого промта мало, включаем «System 2» — медленное мышление модели.
- Chain-of-Thought (CoT): Добавьте «Рассуждай шаг за шагом» или «Представь план решения перед кодом». Заставляет модель генерировать промежуточные токены логики.
- Self-Consistency: Запустите один промт 3–5 раз (temperature > 0), агрегируйте ответы голосованием или усреднением. Снижает стохастические ошибки.
- Tree-of-Thoughts (ToT): Просите модель сгенерировать несколько вариантов продолжения, оценить их и выбрать лучший. Имитация поиска в дереве решений.
- ReAct (Reason + Act): Цикл: Мысль → Действие (поиск/код) → Наблюдение → Новая мысль. Требует инструментов, но решает сложные задачи.