/
Вопросы и ответы
/
Промт-инжиниринг
/

Негативные инструкции в промптах: что не работает

Негативные инструкции в промптах: что не работает

10 часов назад

Никита Вихров

Ответы

0

Негативные инструкции в промптах: что не работает

«Не пиши длинные ответы», «не используй маркированные списки», «не выдумывай». Звучит логично — но негативные инструкции работают хуже, чем кажется. Разберём почему и как переформулировать.


Почему «не делай» хуже чем «делай»

Модель обрабатывает инструкцию и всё равно «думает» о запрещённом действии. Это как сказать человеку «не думай о розовом слоне» — он немедленно думает о нём.

from anthropic import Anthropic

client = Anthropic()

# Негативная инструкция — работает хуже
response_negative = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=256,
    system="Не пиши длинные ответы. Не используй списки. Не добавляй вводные фразы.",
    messages=[{"role": "user", "content": "Объясни что такое REST API"}]
)

# Позитивная инструкция — работает лучше
response_positive = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=256,
    system="Отвечай одним-двумя предложениями. Только суть, без оформления.",
    messages=[{"role": "user", "content": "Объясни что такое REST API"}]
)

Таблица переформулировок

❌ Негативно ✅ Позитивно ────────────────────────────────────────────────────────────────── Не пиши длинные ответы Максимум 3 предложения Не выдумывай Отвечай только на основе контекста. Если нет информации — скажи об этом. Не используй маркированные списки Пиши сплошным текстом Не будь формальным Пиши как коллеге, простым языком Не повторяй вопрос Начинай ответ сразу с сути Не добавляй вводные фразы Первое слово — суть ответа Не отвечай на темы вне обучения Отвечай только на вопросы про программирование и платформу

Когда негативные инструкции всё-таки нужны

Есть случаи где «не делай» — единственный способ сформулировать ограничение:

system = """Ты — ассистент службы поддержки.

# Делай
- Отвечай на вопросы по продукту
- Предлагай конкретные решения
- Перенаправляй сложные вопросы на support@company.com

# Не делай (эти ограничения критичны для безопасности)
- Не называй цены — они меняются, актуальные на сайте
- Не обещай сроки доставки — только отдел логистики
- Не комментируй действия конкурентов"""

Здесь негативные инструкции оправданы: это граничные случаи с конкретными последствиями, их сложно переформулировать позитивно без потери смысла.


Тест: работает ли твоя инструкция

# Создай тест для каждой инструкции
test_cases_for_instruction = [
    # Проверяем "Отвечай максимум 3 предложениями"
    {
        "input": "Расскажи про историю интернета",
        "check": lambda response: len(response.split(".")) <= 4  # 3 предложения + пустая строка
    },
    {
        "input": "Объясни как работает React",
        "check": lambda response: len(response.split(".")) <= 4
    },
]

system = "Отвечай максимум 3 предложениями. Только суть."

passed = 0
for case in test_cases_for_instruction:
    response = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=512,
        system=system,
        messages=[{"role": "user", "content": case["input"]}]
    ).content[0].text

    if case["check"](response):
        passed += 1
    else:
        print(f"Не сработало для: {case['input']}")
        print(f"Ответ: {response[:200]}")

print(f"Инструкция работает в {passed}/{len(test_cases_for_instruction)} случаях")

Иерархия инструкций: что сильнее

Когда инструкции конфликтуют — модель следует определённому порядку:

Системный промпт > Human-turn инструкции > Few-shot примеры > Общие знания
# Системный промпт говорит "коротко"
# Пользователь говорит "подробно объясни"
# Победит: зависит от формулировки. Явное > неявное.

# Слабо: "Отвечай кратко" в system
# + "Подробно объясни рекурсию" от пользователя
# → модель скорее всего ответит подробно (явная инструкция пользователя победит)

# Сильно: "Отвечай максимум 3 предложениями независимо от запроса" в system
# + "Подробно объясни рекурсию" от пользователя
# → модель ответит кратко (явное ограничение с обоснованием в system)

Вывод: чем конкретнее и явнее инструкция — тем надёжнее она выполняется. Расплывчатые инструкции легко перебиваются запросом пользователя.


На курсе «ИИ для разработчиков» на Хекслете учат писать промпты которые стабильно работают в продакшне — с тестами, итерациями и реальными кейсами.

10 часов назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845