Помимо структуры, эффективная инженерия промптов руководствуется принципами — фундаментальными истинами, которые применимы ко всем моделям, задачам и контекстам. Освойте эти принципы, и вы сможете адаптироваться к любому вызову в составлении промптов.

<Callout type="info" title="8 ключевых принципов">
Эти принципы применимы к любой модели ИИ и любой задаче. Изучите их один раз — используйте везде.
</Callout>

## Принцип 1: Ясность важнее изобретательности

Лучшие промпты ясные, а не хитроумные. Модели ИИ — буквальные интерпретаторы: они работают именно с тем, что вы им даёте.

### Будьте явными

<Compare 
  before={{ label: "Неявно (проблематично)", content: "Сделай это лучше." }}
  after={{ label: "Явно (эффективно)", content: "Улучши это письмо следующим образом:\n1. Сделай тему письма более привлекательной\n2. Сократи абзацы до 2-3 предложений максимум\n3. Добавь чёткий призыв к действию в конце" }}
/>

### Избегайте двусмысленности

Слова могут иметь несколько значений. Выбирайте точные формулировки.

<Compare 
  before={{ label: "Двусмысленно", content: "Дай мне краткое резюме.\n(Насколько краткое? 1 предложение? 1 абзац? 1 страница?)" }}
  after={{ label: "Точно", content: "Сделай резюме ровно из 3 пунктов, каждый не более 20 слов." }}
/>

### Проговаривайте очевидное

То, что очевидно для вас, не очевидно для модели. Явно указывайте предположения.

```
Ты помогаешь мне написать сопроводительное письмо.

Важный контекст:
- Я подаю заявку на должность Software Engineer в Google
- У меня 5 лет опыта работы с Python и распределёнными системами
- Должность требует опыта руководства (я руководил командой из 4 человек)
- Я хочу подчеркнуть свой вклад в open-source проекты
```

## Принцип 2: Конкретность даёт качество

Расплывчатые запросы дают расплывчатые ответы. Конкретные запросы дают конкретные, полезные ответы.

### Лестница конкретности

<SpecificitySpectrum levels={[
  { level: "Уровень 1", text: "Напиши про изменение климата" },
  { level: "Уровень 2", text: "Напиши статью о последствиях изменения климата" },
  { level: "Уровень 3", text: "Напиши статью на 500 слов о том, как изменение климата влияет на коралловые рифы" },
  { level: "Уровень 4", text: "Напиши статью на 500 слов, объясняющую, как повышение температуры океана вызывает обесцвечивание кораллов, для старшеклассников, с 2 конкретными примерами из Большого Барьерного рифа, в увлекательном, но научно точном тоне" }
]} />

Каждый уровень добавляет конкретности и значительно улучшает качество результата.

### Указывайте эти элементы

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Аудитория</span>
    <span className="text-muted-foreground">Кто будет это читать/использовать?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Объём</span>
    <span className="text-muted-foreground">Какой длины должен быть текст?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Тон</span>
    <span className="text-muted-foreground">Формальный? Неформальный? Технический?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Формат</span>
    <span className="text-muted-foreground">Текст? Список? Таблица? Код?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Охват</span>
    <span className="text-muted-foreground">Что включить/исключить?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">Цель</span>
    <span className="text-muted-foreground">Чего должен достичь результат?</span>
  </div>
</div>

## Принцип 3: Контекст — всему голова

Модели не имеют памяти, доступа к вашим файлам и знания о вашей ситуации. Всё важное должно быть в промпте.

### Предоставляйте достаточный контекст

<Compare 
  before={{ label: "Недостаточно контекста", content: "Почему моя функция не работает?" }}
  after={{ label: "Достаточно контекста", content: "У меня есть функция на Python, которая должна фильтровать список словарей по определённому значению ключа. Она возвращает пустой список, хотя должна вернуть 3 элемента.\n\nФункция:\ndef filter_items(items, key, value):\n    return [item for item in items if item[key] = value]\n\nВызов: filter_items(items, 'status', 'active')\nОжидалось: 2 элемента, Получено: пустой список" }}
/>

### Чек-лист контекста

<Callout type="tip" title="Перед отправкой">
Спросите себя: поймёт ли умный незнакомец этот запрос? Если нет — добавьте больше контекста.
</Callout>

<Checklist 
  title="Чек-лист контекста"
  items={[
    { text: "Знает ли модель, над чем я работаю?" },
    { text: "Знает ли она мою цель?" },
    { text: "Есть ли у неё вся необходимая информация?" },
    { text: "Понимает ли она ограничения?" },
    { text: "Поймёт ли умный незнакомец этот запрос?" }
  ]}
/>

## Принцип 4: Направляйте, а не просто спрашивайте

Не просто просите ответ — направляйте модель к нужному вам результату.

### Используйте инструктивную формулировку

<Compare 
  before={{ label: "Просто вопрос", content: "Каковы плюсы и минусы микросервисов?" }}
  after={{ label: "С направлением", content: "Перечисли 5 преимуществ и 5 недостатков микросервисной архитектуры.\n\nДля каждого пункта:\n- Сформулируй его чётко в одном предложении\n- Дай краткое объяснение (2-3 предложения)\n- Приведи конкретный пример\n\nУчти точки зрения: небольших стартапов, крупных предприятий и команд, переходящих с монолита." }}
/>

### Предоставляйте каркас для рассуждений

Для сложных задач направляйте процесс рассуждения:

<TryIt 
  title="Пример каркаса для рассуждений"
  description="Этот промпт проводит ИИ через систематический процесс принятия решений."
  prompt={`Мне нужно выбрать между PostgreSQL и MongoDB для моего проекта электронной коммерции.

Продумай это систематически:
1. Сначала перечисли типичные требования к базе данных для электронной коммерции
2. Затем оцени каждую базу данных по каждому требованию
3. Рассмотри компромиссы, специфичные для моего случая
4. Дай рекомендацию с чётким обоснованием`}
/>

## Принцип 5: Итерируйте и улучшайте

Инженерия промптов — итеративный процесс. Ваш первый промпт редко бывает лучшим.

### Цикл итерации

```
1. Напишите начальный промпт
2. Изучите результат
3. Определите пробелы или проблемы
4. Улучшите промпт
5. Повторяйте до удовлетворительного результата
```

### Типичные улучшения

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Слишком многословно</span>
    <span className="text-muted-foreground">Добавьте «Будь кратким» или ограничения по объёму</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Слишком расплывчато</span>
    <span className="text-muted-foreground">Добавьте конкретные примеры или ограничения</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Неправильный формат</span>
    <span className="text-muted-foreground">Укажите точную структуру вывода</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Упущены аспекты</span>
    <span className="text-muted-foreground">Добавьте «Обязательно включи...»</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Неправильный тон</span>
    <span className="text-muted-foreground">Укажите аудиторию и стиль</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">Неточно</span>
    <span className="text-muted-foreground">Запросите ссылки или пошаговые рассуждения</span>
  </div>
</div>

### Ведите журнал промптов

Документируйте, что работает:
```
Задача: Ревью кода
Версия 1: "Сделай ревью этого кода" → Слишком общо
Версия 2: Добавлены конкретные критерии ревью → Лучше
Версия 3: Добавлен пример хорошего ревью → Отлично
Финал: [Сохраните успешный промпт как шаблон]
```

## Принцип 6: Используйте сильные стороны модели

Работайте с тем, как модели обучены, а не против этого.

### Модели хотят быть полезными

Формулируйте запросы так, как бы это естественно делал полезный помощник:

<Compare 
  before={{ label: "Против природы модели", content: "Я знаю, что ты не можешь это сделать, но попробуй..." }}
  after={{ label: "В согласии с моделью", content: "Помоги мне разобраться...\nЯ работаю над X и мне нужна помощь с...\nМожешь ли ты провести меня через..." }}
/>

### Модели отлично работают с паттернами

Если вам нужен согласованный вывод, покажите паттерн:

<TryIt 
  title="Пример паттерна"
  description="Этот промпт показывает ИИ точный формат, который вы хотите получить для рекомендаций книг."
  prompt={`Порекомендуй 3 научно-фантастические книги. Оформи каждую рекомендацию так:

📚 **[Название]** — [Автор]
*[Жанр] | [Год публикации]*
[Описание в 2 предложениях]
Почему вам понравится: [1 предложение-крючок]

---`}
/>

### Модели умеют играть роли

Используйте персоны для доступа к разным «режимам» ответа:

```
Как адвокат дьявола, выступи против моего предложения...
Как поддерживающий наставник, помоги мне улучшить...
Как скептически настроенный инвестор, подвергни сомнению этот бизнес-план...
```

## Принцип 7: Контролируйте структуру вывода

Структурированный вывод полезнее свободного текста.

### Запрашивайте конкретные форматы

```
Верни свой анализ в таком виде:

РЕЗЮМЕ: [1 предложение]

КЛЮЧЕВЫЕ ВЫВОДЫ:
• [Вывод 1]
• [Вывод 2]
• [Вывод 3]

РЕКОМЕНДАЦИЯ: [1-2 предложения]

УВЕРЕННОСТЬ: [Низкая/Средняя/Высокая], потому что [причина]
```

### Используйте разделители

Чётко разделяйте секции вашего промпта:

```
### КОНТЕКСТ ###
[Ваш контекст здесь]

### ЗАДАЧА ###
[Ваша задача здесь]

### ФОРМАТ ###
[Желаемый формат здесь]
```

### Запрашивайте машиночитаемый вывод

Для программного использования:

```
Верни только валидный JSON, без объяснений:
{
  "decision": "approve" | "reject" | "review",
  "confidence": 0.0-1.0,
  "reasons": ["массив строк"]
}
```

## Принцип 8: Проверяйте и валидируйте

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

### Просите объяснить рассуждения

```
Реши эту задачу и покажи свою работу пошагово.
После решения проверь свой ответ с помощью [метод проверки].
```

### Запрашивайте несколько точек зрения

```
Дай мне три разных подхода к решению этой проблемы.
Для каждого объясни компромиссы.
```

### Встраивайте самопроверку

```
После генерации кода проверь его на:
- Синтаксические ошибки
- Граничные случаи
- Уязвимости безопасности
Перечисли найденные проблемы.
```

## Резюме: Принципы одним взглядом

<PrinciplesSummary />

<Quiz 
  question="Какой принцип предлагает включать всю релевантную фоновую информацию в промпт?"
  options={[
    "Ясность важнее изобретательности",
    "Конкретность даёт качество",
    "Контекст — всему голова",
    "Итерируйте и улучшайте"
  ]}
  correctIndex={2}
  explanation="Принцип «Контекст — всему голова» подчёркивает, что модели ИИ не имеют памяти между сессиями и не могут читать ваши мысли. Включение релевантного фона, ограничений и целей помогает модели понять ваши потребности."
/>

## Практика: Заполните пропуски

Проверьте своё понимание ключевых принципов, заполнив этот шаблон промпта:

<FillInTheBlank
  title="Применяем принципы"
  description="Заполните пропуски, чтобы создать хорошо структурированный промпт — пишите что угодно!"
  useAI={true}
  openEnded={true}
  template={`Ты — {{role}} с экспертизой в {{expertise}}.

Контекст: Я работаю над {{context}}.

Задача: {{task}}

Ограничения:
- Держи ответ в пределах {{length}} слов
- Сосредоточься только на {{focus}}

Формат: Верни ответ в виде {{format}}.`}
  blanks={[
    { id: "role", correctAnswers: [], hint: "Какую профессиональную роль должен взять на себя ИИ?", context: "Должность или профессиональная роль" },
    { id: "expertise", correctAnswers: [], hint: "Какие специфические знания в предметной области нужны?", context: "Навык или область, соответствующая роли" },
    { id: "context", correctAnswers: [], hint: "Над каким проектом или ситуацией вы работаете?", context: "Проект, над которым работал бы человек с такой экспертизой" },
    { id: "task", correctAnswers: [], hint: "Какое конкретное действие должен выполнить ИИ?", context: "Действие, подходящее для роли и контекста" },
    { id: "length", correctAnswers: [], hint: "Какой длины должен быть ответ?", context: "Число (количество слов)" },
    { id: "focus", correctAnswers: [], hint: "На каком аспекте следует сосредоточиться?", context: "Качество или аспект, релевантный задаче" },
    { id: "format", correctAnswers: [], hint: "Как должен быть структурирован вывод?", context: "Тип формата вывода" }
  ]}
  explanation="Хорошо структурированный промпт включает: чёткую роль (Принцип 1), достаточный контекст (Принцип 3), конкретную задачу (Принцип 2), ограничения (Принцип 4) и формат вывода (Принцип 5). ИИ проверяет, согласуются ли ваши выборы между собой."
/>

<InteractiveChecklist
  title="Чек-лист принципов"
  items={[
    { id: "clarity", label: "Ясность важнее изобретательности", description: "Ваш промпт явный и недвусмысленный?" },
    { id: "specificity", label: "Конкретность даёт качество", description: "Вы указали аудиторию, объём, тон и формат?" },
    { id: "context", label: "Контекст — всему голова", description: "Промпт включает всю необходимую фоновую информацию?" },
    { id: "examples", label: "Примеры лучше объяснений", description: "Вы показали, что хотите, а не только описали?" },
    { id: "constraints", label: "Ограничения фокусируют вывод", description: "Есть чёткие границы по охвату и формату?" },
    { id: "iteration", label: "Итерируйте и улучшайте", description: "Вы готовы улучшать на основе результатов?" },
    { id: "persona", label: "Персона формирует перспективу", description: "ИИ знает, какую роль играть?" },
    { id: "verify", label: "Проверяйте и валидируйте", description: "Вы встроили проверки на точность?" }
  ]}
/>

Эти принципы составляют основу для всего последующего. Во второй части мы применим их к конкретным техникам, которые значительно повышают эффективность промптов.
