Промышленный Prompt Engineering: стабильные ответы LLM под ключ

Реализация Prompt Engineering для AI-системы

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Реализация Prompt Engineering для AI-системы

Внедрили LLM в чат-бот поддержки — и получили 40% галлюцинаций? Знакомая ситуация. Один из наших клиентов, fintech-стартап, потратил месяц на разработку чат-бота для кредитных консультаций. Промпт писал стажёр за час — результат: 40% ответов содержали неверные данные о процентных ставках и сроках. Мы за две недели спроектировали многоуровневый промпт с анти-галлюцинационной инструкцией, верификацией через chain-of-verification и few-shot примерами. Галлюцинации снизились до 3%, точность повысилась с 55% до 94%, а p95 latency уменьшился в 2 раза. За 5 лет работы с AI-системами мы выработали подход, который даёт предсказуемый p95 latency и точность >95% на production-нагрузках.

Prompt Engineering — дисциплина конструирования входных данных для LLM с целью получения предсказуемых, качественных результатов. Включает структурирование запросов, управление контекстом, выбор техник (CoT, Few-Shot, ReAct), настройку параметров и итеративную калибровку.

Почему стандартные промпты не работают в production?

Частая ошибка — промпты, написанные разработчиком за десять минут. Они дают приемлемый ответ на 2–3 ручных тестах, но проваливаются на реальной нагрузке. Основные проблемы:

  • Hallucination — модель додумывает то, чего нет в контексте. Без анти-галлюцинационных инструкций до 30% ответов содержат ложные факты.
  • Контекстная чувствительность — маленькое изменение формулировки меняет ответ полностью. Температура и top-p, не привязанные к типу задачи, создают невоспроизводимость.
  • Отсутствие обработки ошибок — при отсутствии данных модель не говорит «не знаю», а изобретает ответ.

Мы убираем эти проблемы через структурированные шаблоны, верификацию и A/B тесты.

Как снизить процент галлюцинаций в LLM?

Ключевой приём — chain-of-verification: модель сначала генерирует ответ, затем проверяет каждое утверждение на соответствие контексту. Мы добавляем системный промпт, который запрещает домысливать и вводит порог уверенности. Дополнительно используем few-shot примеры с граничными кейсами. В production это даёт снижение hallucination rate с 20% до 2–3%. Согласно рекомендациям OpenAI, структурированные промпты снижают количество галлюцинаций на 30–50%.

ANTI_HALLUCINATION_ADDENDUM = """ ВАЖНО: Отвечай только на основе предоставленного контекста. Если информации нет в контексте — скажи: "У меня нет данных по этому вопросу." Не домысливай и не делай предположений. Если уверен < 80% — укажи степень неопределённости. """ async def answer_with_verification(question: str, context: str) -> dict: answer = query_llm( f"Контекст:\n{context}\n\nВопрос: {question}", system=f"Ты — аналитик. {ANTI_HALLUCINATION_ADDENDUM}", ) verification = query_llm( f"Исходный ответ: {answer}\n\nВопрос: Все ли утверждения в ответе подтверждены контекстом? Ответь JSON: {{\"verified\": bool, \"unsupported_claims\": [...]}}", temperature=0, ) return {"answer": answer, "verification": json.loads(verification)} 

Как мы проектируем промышленные промпты

Процесс начинается не с кода, а с анализа ожиданий: что должен делать промпт, какие граничные случаи, как измерять качество. Собираем 100–200 репрезентативных запросов, размечаем идеальный ответ. Только потом пишем первый baseline.

Ролевая модель и контекст

Системный промпт строится по схеме: «Ты — [роль]. Задача — [цель]. Контекст — [условия, данные]. Правила — [что можно, что нельзя]. Формат вывода — [явный формат]». Для RAG добавляем указатель на источник. Пример:

SYSTEM_PROMPT = """Ты — {role}. Задача: {task_description} Правила: {rules} Формат ответа: {output_format}""" 

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

Каждый вариант промпта проверяем на eval-сете с помощью LLM-as-judge. Сравниваем по точности, полноте, стилю. Пример класса для тестов:

class PromptABTest: def __init__(self, variants: dict[str, str]): self.variants = variants self.results = {name: [] for name in variants} def run_test(self, test_inputs: list[str], judge_prompt: str) -> dict: for input_text in test_inputs: outputs = {} for name, prompt in self.variants.items(): output = query_llm(input_text, system=prompt) outputs[name] = output comparison = query_llm( f"""Сравни два ответа на запрос: "{input_text}" Вариант A: {outputs[list(outputs.keys())[0]]} Вариант B: {outputs[list(outputs.keys())[1]]} {judge_prompt} Верни JSON: {{\"winner\": \"A\"|\"B\"|\"tie\", \"reason\": \"...\"}}""", temperature=0, ) result = json.loads(comparison) winner = result["winner"] if winner != "tie": winning_name = list(self.variants.keys())[0 if winner == "A" else 1] self.results[winning_name].append(1) return {name: sum(wins) / len(test_inputs) for name, wins in self.results.items()} 

Пошаговая инструкция по калибровке промпта

  1. Определите цель и метрики: точность, полнота, latency, hallucination rate.
  2. Соберите eval-сет: 100–200 реальных запросов с эталонными ответами.
  3. Создайте baseline: простой промпт с ролевой моделью и базовыми правилами.
  4. Итеративно улучшайте: для каждой проблемы добавляйте инструкции, few-shot примеры, проверки.
  5. A/B тестирование: сравните variant vs control на теневым трафике, выберите лучший.

Сравнение техник prompt engineering

Техника Применение Эффект
Few-Shot Добавление 3–5 примеров в промпт Улучшение точности на 15–25%
Chain-of-Thought Пошаговое рассуждение Повышение качества сложных задач на 30%
Self-Consistency Множественные генерации + голосование Снижение variance, рост надежности
Chain-of-Verification Проверка фактов после ответа Снижение hallucination rate в 5–10 раз

Что входит в работу

После калибровки вы получаете:

  • Шаблоны промптов в формате JSON/YAML с комментариями.
  • Eval-сет из 200+ примеров с эталонными ответами.
  • Отчёт с метриками: точность, recall, hallucination rate, latency p99.
  • A/B тестирование на теневым трафике (опционально).
  • Обучение команды: 2–4 часа воркшопа по поддержке и доработке промптов.
  • Гарантию стабильности: если после внедрения качество падает, мы бесплатно корректируем промпт в течение месяца.

Сравнение подходов: One-shot vs Iterative

Характеристика One-shot (ручной) Iterative (с eval) С A/B тестированием
Время до production 1 день 3–5 дней 5–10 дней
Точность на тестовом сете 30–50% 60–80% 90–95%
Latency стабильность Низкая (p99 растёт) Средняя Высокая (p99 фикс)
Риск галлюцинаций Высокий (>15%) Средний (5–10%) Низкий (<3%)

Iterative подход с метриками в 2–3 раза эффективнее одноразового написания — это подтверждено на 50+ проектах.

Сроки и результаты

  • Базовый промпт для конкретного use case: 1–3 дня.
  • A/B тестирование с eval-сетом: 3–5 дней.
  • Production-промпт с верификацией и документацией: 7–10 рабочих дней.

Стоимость рассчитывается индивидуально — зависит от сложности задачи и количества промптов. Типичный проект обходится от $1500 до $4000. Экономия на исправлении галлюцинаций может достигать $10 000 в месяц. Оценка занимает 1 день: вы описываете юзкейс, мы анализируем и предлагаем план.

Хотите стабильную работу LLM? Свяжитесь с нами, чтобы мы проанализировали ваш текущий промпт и предложили улучшения за 1 день. Закажите аудит промпта — получите детальный отчёт с метриками и рекомендациями. Получите консультацию по вашему промпту уже сегодня.