UpPetto

This is a real course generated by UpPetto — unedited.

AI-generated · source-grounded review: written by two AI models, cross-checked by a third. Yours takes ~5 minutes.

Create my own course

Документирование и передача знаний

Структура документации промпта

Документация успешного промпта должна отвечать на три вопроса: что он делает, как его использовать, и когда он может не сработать. Это превращает промпт из "работает у меня" в воспроизводимое решение для команды.

Минимальный набор метаданных:

---
id: customer_ticket_classifier_v2
title: "Классификация обращений в поддержку"
author: ivan.petrov
created: 2024-01-10
last_tested: 2024-02-15
model: gigachat-pro
status: production
---

## Описание
Классифицирует обращения клиентов по категориям и приоритету для автоматической маршрутизации.

## Use cases
✅ Первичная сортировка тикетов
✅ Определение срочности обращения
✅ Маршрутизация к специализированным командам

❌ НЕ использовать для:
- Обращений на иностранных языках (точность может снижаться)
- Технических логов без контекста
- Обращений с несколькими несвязанными вопросами

## Входные параметры
- `ticket_text` (string, required): текст обращения, 10-2000 символов
- `customer_tier` (enum, optional): ["basic", "premium", "enterprise"]
- `previous_category` (string, optional): категория предыдущего обращения этого клиента

## Выходной формат
JSON с полями:
- `category`: одна из [billing, technical, feature_request, complaint, other]
- `priority`: [low, medium, high, critical]
- `confidence`: float 0-1
- `reasoning`: краткое объяснение классификации

## Примеры

### Пример 1: Технический вопрос
**Вход:**
```json
{
  "ticket_text": "Не могу войти в личный кабинет, пишет 'неверный пароль', хотя точно правильный",
  "customer_tier": "premium"
}

Выход:

{
  "category": "technical",
  "priority": "high",
  "confidence": 0.95,
  "reasoning": "Проблема с доступом к аккаунту, блокирует работу, премиум-клиент"
}

Пример 2: Запрос функции

Вход:

{
  "ticket_text": "Было бы здорово добавить экспорт в Excel"
}

Выход:

{
  "category": "feature_request",
  "priority": "low",
  "confidence": 0.89,
  "reasoning": "Предложение новой функциональности, не блокирует текущую работу"
}

Known issues и workarounds

Issue #1: Смешанные обращения (жалоба + технический вопрос) - Проявление: Низкая confidence (<0.7), непредсказуемая категория - Workaround: Добавить в промпт инструкцию выбирать категорию по основной проблеме

Issue #2: Сарказм и негативная тональность - Проявление: "Отличная работа, уже неделю жду ответа" → category: complaint, но confidence может быть ниже - Workaround: Добавлен анализ контекста и временных упоминаний

Issue #3: Аббревиатуры и жаргон - Проявление: "ЛК не открывается" может быть не распознан как технический вопрос - Workaround: Добавлен словарь распространённых аббревиатур в системный промпт

Рекомендуемые параметры

{
    "temperature": 0.2,  # Низкая для стабильной классификации
    "top_p": 0.8,
    "max_tokens": 200
}

## Best practices для команды

**1. Шаблон для документирования находок:**

```markdown
## Prompt Discovery Log

**Дата**: 2024-02-20
**Автор**: maria.ivanova
**Задача**: Генерация описаний товаров для маркетплейса

### Что пробовали
1. Базовый промпт: "Напиши описание товара {name}"
   - Результат: Слишком общие описания, нет SEO-оптимизации
   - Оценка: 3/10

2. С примерами (few-shot):
   - Результат: Лучше, но не адаптируется к категории товара
   - Оценка: 6/10

3. С ролью + структурой + примерами:
   - Результат: Качественные описания, учитывает категорию
   - Оценка: 9/10
   - **→ Кандидат в библиотеку**

### Финальный промпт
[Полный текст промпта]

### Метрики
- Время генерации: ~2-3s
- Средняя длина: ~450 символов
- Acceptance rate: высокий (большинство описаний одобрены без правок)

### Следующие шаги
- [ ] Оформить как шаблон
- [ ] Протестировать на разных категориях
- [ ] Добавить в библиотеку после review

2. Формат для передачи контекста:

При передаче промпта коллеге или другой команде, используйте структуру:

## Quick Start

**Что делает**: [одно предложение]
**Когда использовать**: [конкретный сценарий]
**Как запустить**: [минимальный пример кода]

## Детали
[Полная документация]

Это позволяет быстро оценить релевантность, не погружаясь в детали.

3. Документирование edge cases:

Вместо общих фраз "может работать нестабильно" документируйте конкретные случаи:

## Edge Cases

| Ситуация | Поведение | Рекомендация |
|----------|-----------|--------------|
| Входной текст <10 слов | Confidence может быть низким | Отклонить, попросить уточнить |
| Текст >2000 символов | Обрезается, теряется контекст | Разбить на части или суммаризовать |
| Эмодзи и спецсимволы | Обычно игнорируются | Можно не очищать |
| Смешанный язык (рус+англ) | Обычно работает нормально | OK для технических терминов |

4. Связывание с метриками продукта:

## Impact Metrics

**До внедрения промпта:**
- Время обработки тикета: ручная сортировка
- Ошибки маршрутизации: присутствовали

**После внедрения:**
- Время обработки: автоматическая классификация
- Ошибки маршрутизации: снижены
- Экономия времени: значительная

**Мониторинг:**
- Dashboard: [ссылка на систему мониторинга]
- Alerts: confidence <0.7 → ручная проверка

Ускорение разработки через переиспользование

Паттерн "Композиция из проверенных блоков":

# building_blocks.py
class PromptLibrary:
    ROLES = {
        "analyst": "Ты — аналитик с опытом {domain}",
        "editor": "Ты — редактор, специализирующийся на {style}",
    }

    CONSTRAINTS = {
        "factual": "Используй только фактическую информацию, не додумывай.",
        "concise": "Будь краток, максимум {max_words} слов.",
        "structured": "Структурируй ответ по пунктам.",
    }

    OUTPUT_FORMATS = {
        "json": "Ответ в JSON:\n{schema}",
        "markdown": "Ответ в Markdown с заголовками.",
    }

    @staticmethod
    def compose(role_key, task, constraints_keys, output_key, **params):
        role = PromptLibrary.ROLES[role_key].format(**params)
        constraints = "\n".join([
            PromptLibrary.CONSTRAINTS[k].format(**params) 
            for k in constraints_keys
        ])
        output = PromptLibrary.OUTPUT_FORMATS[output_key].format(**params)

        return f"{role}\n\n{task}\n\nТребования:\n{constraints}\n\n{output}"

# Использование
prompt = PromptLibrary.compose(
    role_key="analyst",
    task="Проанализируй отзывы и выдели ключевые проблемы",
    constraints_keys=["factual", "structured"],
    output_key="json",
    domain="e-commerce",
    schema='{"problems": ["..."]}'
)

Такой подход сокращает время создания нового промпта.

Документация промпта — это не формальность, а инструмент масштабирования. Хорошо документированный промпт содержит: чёткие границы применимости (use cases + anti-patterns), конкретные примеры входов/выходов, known issues с workarounds, и связь с бизнес-метриками. Стандартизированный формат документации + процесс логирования находок превращают индивидуальный опыт в командное знание, ускоряя разработку новых решений через композицию проверенных блоков.

AI-generated · source-grounded review

🛡 Fact-checked: 1 risky claim verified · 6 removed · confidence: high
[removed] avg_response_time: 1.2s, success_rate: 92%
Specific metrics not verifiable, replaced with general descriptions
[removed] ROI окупилось за 1 неделю, 200 часов/месяц savings
Specific business metrics not verifiable, replaced with general statements
[verified] JSON output format validation
Structured output formats mentioned in knowledge base components
[removed] Removed specific dates from examples as illustrative
[removed] Softened specific metrics (avg_response_time: 1.2s, success_rate: 92%, cost_per_1k) to general descriptions
[removed] Removed specific ROI claim 'окупилось за 1 неделю'
[removed] Softened '200 часов/месяц' to 'значительная экономия'
[removed] Removed specific accuracy percentages (60%, 8%, 12%) as not verifiable
[removed] Softened time reduction claim '30-60 минут до 5-10 минут' to general statement

A second opinion has not checked this lesson.

Key concepts: Документирование Передача знаний Best practices Метаданные
Tell me more 🔒 Didn't understand — explain simply 🔒 Show examples 🔒 Sources 🔒

On your own course these buttons answer instantly, quizzes track what you've mastered, and lessons adapt to your gaps. Sign up free →

Check yourself

1. Какие метаданные критически важны для документации промпта?
2. Как правильно документировать ограничения промпта?
3. Что ускоряет разработку новых промптов в команде?
Sign up free to check your answers