Промпт-инжиниринг — это практика составления промптов (инструкций) для языковых моделей с целью получения наиболее точных, релевантных и полезных ответов. Хороший промпт может улучшить качество ответа на 50-80% без смены модели. В этой статье разберём 15 проверенных техник с примерами через ModelSwitch API.
Базовые техники (1-5)
1. Ролевая установка (Role Prompting)
Задайте модели конкретную роль. Это фокусирует ответ на определённой области экспертизы:
from openai import OpenAI
client = OpenAI(
base_url="https://api.modelswitch.ru/v1",
api_key="msk_ваш_ключ"
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "Ты опытный DevOps-инженер с 10-летним стажем. Отвечай конкретно, с примерами команд и конфигов."},
{"role": "user", "content": "Как настроить CI/CD для Python-проекта?"}
]
)
2. Чёткие инструкции
Будьте максимально конкретны в том, что хотите получить:
# Плохо:
"Расскажи про Python"
# Хорошо:
"Напиши 5 ключевых преимуществ Python для Data Science. Для каждого: заголовок, 2 предложения описания, пример библиотеки."
3. Few-Shot примеры
Покажите модели несколько примеров ожидаемого формата:
messages = [
{"role": "system", "content": "Классифицируй отзывы как positive, negative или neutral."},
{"role": "user", "content": "Отличный товар, буду заказывать ещё!"},
{"role": "assistant", "content": "positive"},
{"role": "user", "content": "Доставка задержалась на 3 дня, товар пришёл мятый."},
{"role": "assistant", "content": "negative"},
{"role": "user", "content": "Вроде нормально, но могло быть лучше за эту цену."}
]
response = client.chat.completions.create(model="gpt-4o", messages=messages)
print(response.choices[0].message.content) # "neutral"
4. Ограничение формата вывода
Укажите точный формат ответа:
messages = [
{"role": "system", "content": """Анализируй текст и верни результат СТРОГО в формате:
ТЕМА: [основная тема]
ТОНАЛЬНОСТЬ: [positive/negative/neutral]
КЛЮЧЕВЫЕ_СЛОВА: [слово1, слово2, слово3]
КРАТКОЕ_СОДЕРЖАНИЕ: [1 предложение]"""},
{"role": "user", "content": "Новый iPhone 16 Pro получил отличные отзывы критиков благодаря улучшенной камере и производительности чипа A18 Pro."}
]
5. Chain-of-Thought (пошаговое рассуждение)
Попросите модель рассуждать шаг за шагом. Это улучшает точность на 20-40% для задач с логикой:
messages = [
{"role": "system", "content": "Решай задачи шаг за шагом. Сначала проанализируй условие, затем построй решение, потом дай финальный ответ."},
{"role": "user", "content": "В магазине яблоки стоят 120 руб/кг. Скидка 15% при покупке от 3 кг. Сколько стоит 5 кг яблок?"}
]
Продвинутые техники (6-10)
6. Delimiter-техника
Используйте разделители для чёткого отделения инструкций от данных:
messages = [
{"role": "system", "content": "Переведи текст между тегами и на английский."},
{"role": "user", "content": "Искусственный интеллект меняет мир разработки программного обеспечения. "}
]
7. Negative Prompting
Явно укажите, чего НЕ нужно делать:
"Объясни квантовые вычисления для школьника. НЕ используй формулы. НЕ упоминай математические выкладки. НЕ предполагай знание физики выше 7 класса."
8. Self-Consistency
Запросите несколько независимых ответов и выберите наиболее частый:
answers = []
for i in range(3):
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Какой язык лучше для ML: Python или R? Ответь одним словом."}],
temperature=0.8
)
answers.append(response.choices[0].message.content.strip())
# Выбираем наиболее частый ответ
from collections import Counter
best = Counter(answers).most_common(1)[0][0]
print(f"Консенсус: {best}")
9. Decomposition (декомпозиция)
Разбивайте сложные задачи на подзадачи:
steps = [
"1. Проанализируй целевую аудиторию сервиса по подписке на кофе",
"2. Определи 3 ключевых болевых точки этой аудитории",
"3. Для каждой болевой точки предложи решение через наш сервис",
"4. Сформулируй уникальное торговое предложение (УТП)"
]
for step in steps:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": step}]
)
print(f"\n{step}\n{response.choices[0].message.content}")
10. Temperature и Top-P
Управляйте креативностью через параметры генерации:
# Фактологический ответ — low temperature
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Столица Франции?"}],
temperature=0.0 # Детерминированный ответ
)
# Креативный текст — high temperature
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Напиши креативный слоган для кофейни"}],
temperature=1.0 # Максимальная вариативность
)
Экспертные техники (11-15)
11. ReAct (Reasoning + Acting) — Комбинируйте рассуждения с действиями через Function Calling.
12. Meta-prompting — Попросите модель улучшить ваш промпт: «Улучши этот промпт для задачи классификации: [промпт]».
13. Контекстное сжатие — Для длинных документов сначала попросите модель сделать краткое содержание, затем задавайте вопросы по нему.
14. Prompt Chaining — Выход одного промпта становится входом для следующего. Каждый шаг фокусируется на одной задаче.
15. A/B-тестирование промптов — Сравнивайте разные промпты на одних данных, используя разные модели через ModelSwitch:
prompts = [
"Кратко резюмируй текст.",
"Ты — редактор. Выдели 3 ключевых мысли из текста.",
"Прочитай текст и составь bullet-points с основными идеями."
]
models = ["gpt-4o", "claude-3.5-sonnet"]
for prompt in prompts:
for model in models:
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": prompt},
{"role": "user", "content": article_text}
]
)
print(f"[{model}] {prompt[:50]}... => {len(response.choices[0].message.content)} символов")
Заключение
Промпт-инжиниринг — это навык, который даёт максимальную отдачу при минимальных затратах. Начните с базовых техник (роль, чёткие инструкции, few-shot), затем переходите к продвинутым. ModelSwitch позволяет тестировать промпты на разных моделях одним изменением параметра model.