Skip to content
PПромтбук
RUEN
03Промт-инжиниринг

Аудит system prompt: декомпозиция, противоречия, recency bias

Разбери system prompt на секции (role, capabilities, constraints, examples), найди противоречия, проверь длину и порядок (важное в начале/конце).

Сделай аудит system prompt по пути {{prompt_path}}. Назначение агента: {{agent_purpose}}. Цель аудита — найти структурные проблемы, противоречия и поведение, которое не вызвано явно.

1. Декомпозиция на секции

Разбей prompt на 5 канонических секций. Если секции нет — пометь MISSING:

СекцияЧто должно бытьНайдено?
Role / IdentityКто такой агент, тон, аудитория?
CapabilitiesЧто умеет, какие tools, какие задачи берёт?
ConstraintsЧего НЕ делает, какие границы, форматы вывода?
Examples (few-shot)1-3 примера input → output?
Guardrails / SafetyЧто отказывает, как реагирует на injection?

Для каждой секции:

  • Цитата 1-2 строки
  • Длина в строках
  • Оценка качества (S/M/L описательно, не score)

2. Поиск противоречий

Пройди по prompt'у с одним вопросом: «можно ли две инструкции трактовать конфликтно?». Типичные паттерны:

  • "Be concise" + "Always explain reasoning step-by-step" — модель выберет одно случайно
  • "Never make up information" + "Always provide a recommendation" — на пустом контексте конфликт
  • "Use formal tone" в role + "Be friendly" в примере — пример перекроет инструкцию
  • "Output JSON only" + пример с prose — пример сильнее
  • Tool description противоречит constraint'у в system prompt

Для каждого противоречия:

  • Цитаты двух конфликтующих мест
  • Что произойдёт в реальности (какая инструкция победит и почему)
  • Предложение: убрать одну, переформулировать обе, или разделить по условию

3. Recency bias: что в начале и конце

Модели лучше запоминают первые и последние ~10% prompt'а. Середина проседает. Проверь:

  • Первые 5-10 строк: содержат ли главное (role + основной constraint)?
  • Последние 5-10 строк: содержат ли актуальное напоминание о формате/safety?
  • В середине — не закопаны ли критичные guardrails?

Если критичное в середине → подними наверх или продублируй в конце.

4. Длина

ДлинаСимптомЧто делать
< 200 токеновНедо-специфицирован, агент импровизируетДобавить when-to / when-not-to
200-1500Сладкое пятноOK
1500-4000Контекстное окно тратится, середина проседаетВынести examples в отдельные turns или skill
> 4000Recency bias катастрофиченДекомпозировать на sub-agents

5. Поведенческие пробы (concrete tests)

Прогони 3-5 одинаковых input'ов через prompt с temperature=0.7, повтори по 5 раз каждый. Ищи drift:

Input: "[типичная задача 1]"
Run 1: ...
Run 2: ...
Run 5: ...

Variance: [low | medium | high]
Likely cause: [секция prompt'а, где не хватает однозначности]

Если variance high — в prompt'е есть underspecified место.

6. Anti-patterns

  • ❌ Role описан через 5 прилагательных без поведенческих признаков — "helpful, kind, thorough" не задают поведение
  • ❌ Constraints прописаны как пожелания ("try to", "prefer") — модель воспринимает как опциональное
  • ❌ Few-shot examples противоречат constraint'ам — пример всегда побеждает
  • ❌ Examples только positive — модель не знает, как выглядит "плохой" output
  • ❌ Длинный prose без структуры — токены тратятся, recency bias бьёт по середине
  • ❌ Tools описаны в system prompt вместо tool descriptions — двойной источник истины
  • ❌ Safety guardrails закопаны в середину — игнорируются
  • ❌ Версия / дата отсутствует — невозможно сделать diff после изменений
  • ❌ Формат вывода описан словами без примера — модель импровизирует
  • ❌ Один system prompt на 5 разных задач — лучше split на роли

Deliverable

  • Таблица §1 (5 секций, статус)
  • Список противоречий §2 (минимум 0, максимум все найденные)
  • Анализ recency §3 (что в первых/последних 10%)
  • Длина в токенах + рекомендация §4
  • 3 поведенческие пробы §5 с variance
  • Топ-5 фиксов с приоритетом (P0 — противоречие, P1 — recency, P2 — длина)
К подразделу «Промт-инжиниринг»
Похожие промты