Урок 10 из 11•15 мин

Продвинутые техники и паттерны

Цели урока

После прохождения этого урока вы сможете:

  • 1Освоить продвинутые паттерны промпт-инжиниринга
  • 2Научиться избегать типичных ошибок
  • 3Применять техники для production-систем

Паттерны, которые работают

1. Роль + Контекст + Задача + Формат

Универсальная структура промпта для большинства задач:

python
prompt_template = """
РОЛЬ: Ты — [кто ты и какова твоя экспертиза]

КОНТЕКСТ: [фоновая информация, которую нужно знать]

ЗАДАЧА: [что конкретно нужно сделать]

ФОРМАТ: [как должен выглядеть результат]

ДАННЫЕ:
"""{input_data}"""
"""

2. Негативные инструкции

Говорите не только что делать, но и чего НЕ делать:

python
prompt = """
Напиши продающее описание товара.

ДЕЛАЙ:
- Фокусируйся на выгодах для покупателя
- Используй конкретные цифры
- Добавь призыв к действию

НЕ ДЕЛАЙ:
- Не используй превосходные степени без доказательств
- Не придумывай характеристики
- Не пиши больше 150 слов
"""

3. Fallback и обработка ошибок

Всегда предусматривайте, что делать, если входные данные неполные или некорректные:

python
prompt = """
Извлеки контактные данные из текста.

ЕСЛИ контактов нет → верни: {"status": "not_found"}
ЕСЛИ данные неполные → верни то, что есть + флаг "incomplete": true
ЕСЛИ текст на другом языке → переведи и извлеки

Текст: """{text}"""
"""

Типичные ошибки и как их избежать

ОшибкаПочему плохоКак исправить
Слишком общий промптРезультат непредсказуемДобавьте конкретику и примеры
Нет формата выводаСложно парсить результатУкажите JSON/Markdown/структуру
Противоречивые инструкцииМодель путаетсяПроверьте на консистентность
Полагаться на "здравый смысл"У модели другой "здравый смысл"Явно укажите все правила
Игнорировать edge casesСистема ломается на необычных данныхДобавьте fallback-инструкции

Техники для production

Версионирование промптов

python
# prompts/product_description_v2.py
PROMPT_VERSION = "2.1.0"
PROMPT_DATE = "2024-03-15"

PRODUCT_DESCRIPTION_PROMPT = """
# v2.1.0 - Добавлен контроль длины, улучшен формат
# v2.0.0 - Переход на JSON вывод
# v1.0.0 - Первоначальная версия

Ты — копирайтер маркетплейса...
"""

# Логируйте версию промпта вместе с результатом для отладки

A/B тестирование промптов

python
import random

def get_prompt_variant():
    variants = {
        "A": prompt_formal,    # Формальный стиль
        "B": prompt_friendly,  # Дружелюбный стиль
    }

    variant = random.choice(["A", "B"])
    return variant, variants[variant]

# Логируйте variant и метрики (конверсия, CTR, оценка пользователя)
# для определения лучшего варианта

Валидация вывода

python
import json
from pydantic import BaseModel, validator

class ProductDescription(BaseModel):
    title: str
    description: str
    bullets: list[str]

    @validator('title')
    def title_length(cls, v):
        if len(v) > 80:
            raise ValueError('Title too long')
        return v

    @validator('bullets')
    def bullets_count(cls, v):
        if len(v) < 3 or len(v) > 7:
            raise ValueError('Need 3-7 bullets')
        return v

def generate_with_validation(prompt: str, max_retries: int = 3):
    for attempt in range(max_retries):
        response = call_llm(prompt)
        try:
            data = json.loads(response)
            return ProductDescription(**data)
        except (json.JSONDecodeError, ValueError) as e:
            if attempt == max_retries - 1:
                raise
            # Добавляем ошибку в промпт для retry
            prompt += f"\n\nПредыдущий ответ некорректен: {e}. Исправь."

Комбинирование моделей

Разные задачи — разные модели. Не используйте GPT-4 там, где справится GPT-3.5.

ЗадачаРекомендуемая модельПочему
Классификация, извлечениеGPT-3.5 / Claude HaikuБыстро и дёшево
Генерация контентаGPT-4 / Claude SonnetБаланс качества и цены
Сложный анализ, кодGPT-4 / Claude OpusМаксимальное качество
ПереводGPT-3.5 / DeepL APIСпециализированные модели

Пайплайн: GPT-3.5 классифицирует и извлекает → GPT-4 генерирует сложный контент → GPT-3.5 форматирует. Экономия до 70% бюджета.

Вопросы для размышления

  • •Какие из этих паттернов вы уже используете?
  • •Как вы тестируете и улучшаете свои промпты?
DL

Адаптация курса «ChatGPT Prompt Engineering for Developers» от DeepLearning.AI + OpenAI. © DeepLearning.AI & OpenAI