Skip to content

Latest commit

 

History

History
332 lines (250 loc) · 15.5 KB

File metadata and controls

332 lines (250 loc) · 15.5 KB

📝 Инструкция по созданию и оптимизации системного промпта

Создано: 27.10.2025 Тип документа: Инструкция для разработчика Статус: Активный

🎯 Обзор

Данный документ описывает процесс создания, тестирования и оптимизации системных промптов для AI-ассистента Super Valera с использованием специализированного тестового скрипта ./test/scripts/prompt_test_script.rb.

🧪 Тестовый скрипт: prompt_test_script.rb

Назначение

Скрипт предназначен для комплексного тестирования системного промпта AI-ассистента через симуляцию реальных диалогов с клиентами автосервиса.

Ключевые возможности

  • Симуляция диалогов: Создание тестовых сценариев с последовательностью сообщений
  • Анализ поведения: Проверка соответствия ответов ожидаемым паттернам
  • Валидация бизнес-логики: Контроль соблюдения алгоритмов консультации
  • Детальная аналитика: Вывод статистики и рекомендаций по оптимизации

📋 Структура тестового скрипта

Основные компоненты

  1. Класс PromptV2Tester - основной тестовый движок
  2. Метод load_test_scenarios - определение тестовых сценариев
  3. Метод test_scenario - выполнение теста конкретного сценария
  4. Метод simulate_ai_response - симуляция ответов AI
  5. Метод analyze_responses - анализ результатов

Тестовые сценарии

Скрипт включает три ключевых сценария:

1. Стандартная консультация → Запись

  • Цель: Проверка CTA после расчета стоимости
  • Этапы: Запрос цены → Уточнение модели → Расчет → CTA → Сбор данных → Запись
  • Ожидаемые поведения: 7 паттернов поведения AI

2. Обработка возражения "Дорого"

  • Цель: Проверка работы с ценовыми возражениями
  • Этапы: Запрос цены → Расчет → Возражение
  • Ожидаемые поведения: 4 паттерна обработки возражений

3. Обработка "Я подумаю"

  • Цель: Проверка работы с нерешительными клиентами
  • Этапы: Запрос услуги → Расчет -> Нерешительность
  • Ожидаемые поведения: 3 паттерна soft-продаж

Основные компоненты

  1. Класс PromptTester - основной тестовый движок
  2. Метод load_test_scenarios - определение тестовых сценариев
  3. Метод test_scenario - выполнение теста конкретного сценария
  4. Метод simulate_ai_response - симуляция ответов AI
  5. Метод analyze_responses - анализ результатов

🚀 Использование тестового скрипта

Запуск тестирования

# Запустить все тесты
ruby test/scripts/prompt_test_script.rb

# Запуск из директории проекта
./test/scripts/prompt_test_script.rb

Чтение результатов

Тестовый скрипт выводит детальную информацию:

  1. Прогресс выполнения: Каждый сценарий отображается отдельно
  2. Метрики производительности: Длительность, количество сообщений
  3. Анализ поведения: Проверка каждого ожидаемого паттерна
  4. Итоговая статистика: Успешность, рекомендации, детальный анализ

Пример вывода

🧪 Тестирование промпта V2...
==================================================

📋 Сценарий 1: Стандартная консультация → Запись
Описание: Проверка CTA после расчета стоимости
⏱️  Длительность: 0.45с
💬 Сообщений: 6

📊 Анализ:
  🎯 CTA после цены: ✅
  💎 Создание ценности: ✅
  🤝 Обработка возражений: ✅
  📝 Оптимальный сбор: ✅
  ✅ Создание записи: ✅

🎯 Ожидаемые поведения:
  ✅ AI запрашивает марку/модель авто
  ✅ AI рассчитывает стоимость
  ✅ AI предлагает запись ПОСЛЕ расчета
  ✅ AI создает ценность осмотра
  ✅ AI собирает данные по одному полю
  ✅ AI создает запись

🔄 Процесс разработки и оптимизации промпта

Шаг 1: Создание/модификация промпта

  1. Определите цель промпта: Консультация, запись, диагностика
  2. Используйте базовый шаблон: docs/product/data-examples/system-prompt.md
  3. Добавьте конкретные инструкции: Алгоритмы работы, обработки возражений
  4. Протестируйте форматирование: Markdown для корректного отображения в Telegram

Шаг 2: Настройка тестовых сценариев

При необходимости добавьте новые сценарии в метод load_test_scenarios:

{
  name: "Новый сценарий",
  description: "Описание цели сценария",
  messages: [
    "Сообщение пользователя 1",
    "Сообщение пользователя 2"
  ],
  expected_behaviors: [
    "Ожидаемое поведение 1",
    "Ожидаемое поведение 2"
  ]
}

Шаг 3: Адаптация симуляции ответов

Модифицируйте метод simulate_ai_response для тестирования нового промпта:

def simulate_ai_response(chat, message, context_index)
  # Добавьте новую логику обработки сообщений
  case message.downcase
  when /новый_паттерн/i
    "Новый ответ на основе промпта"
  # ... другие case
  end
end

Шаг 4: Запуск тестирования

ruby test/scripts/prompt_test_script.rb

Шаг 5: Анализ результатов

Успешные тесты (✅ Все ожидаемые поведения)

  • Промпт готов к внедрению
  • Все бизнес-требования соблюдены
  • Можно переходить к интеграции в основной код

Тесты с проблемами (❌ Некоторые поведения не найдены)

  1. Проанализируйте отчет: Найдите конкретные проблемы
  2. Изучите детальные ответы: Проверьте фактические ответы AI
  3. Модифицируйте промпт: Уточните инструкции
  4. Повторите тестирование: Запустите скрипт снова

📊 Метрики качества промпта

Ключевые индикаторы

  1. CTA после цены (Call-to-Action): AI предлагает запись после расчета стоимости
  2. Создание ценности: Предложение бесплатного осмотра
  3. Обработка возражений: Эмпатия и альтернативные предложения
  4. Оптимальный сбор данных: По одному полю за сообщение
  5. Создание записи: Финальное подтверждение записи

Дополнительные метрики

  • Время ответа: < 1 секунда на сообщение
  • Соответствие форматированию: Markdown корректно отображается
  • Языковая согласованность: Ответы только на русском
  • Безопасность: Нет утечки чувствительной информации

🛠 Интеграция с процессом разработки

Before Commit

# Тестирование промпта перед коммитом
ruby test/scripts/prompt_test_script.rb

# Проверка Product Constitution
# Вручную проверить соответствие требованиям в ../product/constitution.md

Перед релизом

  1. Полное тестирование: Все сценарии должны проходить успешно
  2. Регрессионное тестирование: Сравнение с предыдущей версией
  3. Аналитика: Детальный анализ всех ответов AI
  4. Документация: Обновление системного промпта в docs/product/data-examples/

CI/CD Integration

Добавьте в pipeline:

- name: Prompt Testing
  run: |
    ruby test/scripts/prompt_test_script.rb
    if [ $? -ne 0 ]; then
      echo "Prompt tests failed!"
      exit 1
    fi

📝 Шаблон для создания новых сценариев

Структура сценария

{
  name: "Название сценария",
  description: "Цель и контекст теста",
  messages: [
    "Пользовательское сообщение 1",
    "Пользовательское сообщение 2",
    # ... дополнительные сообщения
  ],
  expected_behaviors: [
    "Конкретное ожидаемое поведение 1",
    "Конкретное ожидаемое поведение 2"
  ]
}

Пример: Сценарий обработки сложной технической проблемы

{
  name: "Сложная техническая диагностика",
  description: "Проверка работы с комплексными проблемами автомобиля",
  messages: [
    "При торможении слышен скрежет спереди",
    "Toyota Camry 2019",
    "Только при резком торможении",
    "Да, хочу на диагностику"
  ],
  expected_behaviors: [
    "AI запрашивает марку/модель авто",
    "AI задает уточняющие вопросы о симптомах",
    "AI предлагает диагностическое обслуживание",
    "AI создает ценность профессиональной диагностики",
    "AI собирает контактные данные"
  ]
}

🚨 Частые проблемы и решения

Проблема: AI не создает ценность осмотра

Симптомы:

  • Прямой переход к расчету стоимости
  • Нет упоминания бесплатного осмотра

Решение:

# В метод simulate_ai_response добавить:
when /стоимость|цена|сколько/i
  "Расчет стоимости: X рублей. Хотите записаться на **бесплатный осмотр** для точной оценки?"

Проблема: AI задает несколько вопросов одновременно

Симптомы:

  • "Как вас зовут и какой номер телефона?"
  • Нарушение принципа "один вопрос за раз"

Решение:

# Разделить на отдельные сообщения:
when /да.*записать|хочу.*записать/i
  "Отлично! Как вас зовут?"
# Затем в следующем ответе:
when /^[а-яё]+$/i
  "#{message.capitalize}, какой у вас номер телефона?"

Проблема: Нет обработки возражений

Симптомы:

  • Ответ "Это дорого" не обрабатывается
  • Отсутствие эмпатии и альтернативных предложений

Решение:

# Добавить обработку возражений:
when /дорого|много/i
  "Понимаю! Это ориентировочная цена. После бесплатного осмотра мы дадим точную смету. Хотите записаться?"

📋 Чек-лист готового промпта

  • Все тестовые сценарии проходят успешно
  • Отсутствуют нарушения Product Constitution
  • Соблюдается принцип "один вопрос за раз"
  • CTA появляется только после расчета стоимости
  • Создается ценность бесплатного осмотра
  • Обрабатываются основные возражения
  • Форматирование Markdown корректно отображается
  • Ответы только на русском языке
  • Нет утечки чувствительной информации
  • Документация обновлена и синхронизирована

🔗 Связанные документы


📈 Бизнес-метрики: Связан с KPI качества AI-консультаций и времени ответа (см. бизнес-метрики).

🔄 Обновление: При изменении тестового скрипта необходимо обновлять этот документ для сохранения актуальности инструкций.