Патерн Reflection Agent: контроль якості в один прохід

Додай один короткий прохід перевірки, щоб знаходити очевидні помилки перед відповіддю без нескінченних переробок.
На цій сторінці
  1. Суть патерна
  2. Проблема
  3. Рішення
  4. Як працює
  5. У коді це виглядає так
  6. Як це виглядає під час виконання
  7. Коли підходить — і коли ні
  8. Підходить
  9. Не підходить
  10. Чим відрізняється від Self-Critique
  11. Коли використовувати Reflection серед інших патернів
  12. Як комбінувати з іншими патернами
  13. Коротко
  14. Переваги та Недоліки
  15. FAQ
  16. Що далі

Суть патерна

Reflection Agent — це патерн, у якому після чернетки відповіді агент робить одну швидку перевірку якості: знаходить очевидні проблеми (нечіткі формулювання, суперечності, занадто впевнені твердження) і один раз виправляє їх перед фінальною відповіддю.

Важливо: Reflection — це легка перевірка перед відправкою. Це не повна перевірка за правилами або політиками.

Коли потрібен: коли перед відправкою потрібна коротка контрольована самоперевірка і одна ревізія.


Reflection не замінює основний робочий процес агента.

Він додає короткий етап контролю:

  • швидко перевірити, чи відповідь: зрозуміла, не суперечить сама собі, не пропускає важливі уточнення
  • знайти очевидні ризики
  • виправити лише те, що потрібно
  • завершити без нового нескінченного циклу

Патерн Reflection Agent: контроль якості в один прохід

Проблема

Уяви, що агент готує відповідь для клієнта у високоризиковому запиті.

Чернетка загалом правильна, але має дрібні ризики:

  • занадто впевнене формулювання без підстав
  • суперечність між абзацами
  • пропущене застереження
  • нечітка межа застосовності

Без контрольного проходу ця чернетка йде напряму користувачу.

Найнебезпечніші помилки часто не грубі, а "майже непомітні" у нормальному на вигляд тексті.

Наслідки:

  • падає довіра до відповіді
  • з'являється хибна впевненість
  • зростає ризик помилкових рішень

У цьому й проблема: навіть хороша чернетка без перевірки може вийти назовні з критичними неточностями.

Рішення

Reflection додає reflection-policy перед фінальною відправкою.

Аналогія: це як кравець перед видачею костюма. Спочатку він перевіряє посадку, потім робить одну точну підгонку. Це покращує результат, але не перетворює процес на нескінченні примірки.

Ключовий принцип: Одна коротка перевірка якості і одне виправлення — без нескінченного "зроби ще краще".

Агент може запропонувати зміну, але політика визначає:

  • чи потрібна ревізія
  • що саме дозволено виправити
  • коли треба зупинка/ескалація

Керований процес:

  1. Чернетка: згенерувати першу версію
  2. Огляд: провести одну структуровану перевірку
  3. Рішення: ok/доопрацювати/ескалювати
  4. Ревізія: зробити одну patch-only правку за fix_plan
  5. Фіналізація: віддати фінал без нового циклу

Це дає:

  • зняття очевидних ризиків до відправки
  • помітне підвищення якості з малим оверхедом
  • контроль ревізії у межах fix_plan
  • захист від нескінченного self-edit

Працює добре, якщо:

  • діє правило no_new_facts
  • зміни йдуть лише як patch-only
  • high-risk кейси ескалюються, а не переписуються безкінечно

Модель може "хотіти" редагувати відповідь знову і знову, але саме reflection-policy завершує процес у передбачуваних межах.

Як працює

Diagram

Ключове правило: reflection має бути обмеженим.

Тобто:

  • максимум 1 прохід перевірки
  • максимум 1 прохід ревізії
  • без додавання нових фактів
  • ревізія має бути patch-only і лише в межах fix_plan
  • ескалація при high-risk issues
Опис повного флоу: Draft → Review → Revise → Finalize

Чернетка
Агент створює первинну відповідь на основі доступного контексту.

Огляд
Окремий prompt перевіряє чернетку за простими пунктами: чи зрозуміло, чи логічно, чи нема суперечностей і чи нема занадто сміливих тверджень.

Ревізія
Якщо знайдені проблеми, агент робить одну ревізію за структурованим fix_plan.

Фіналізація
Система повертає результат або зупиняє процес, якщо ризик надто високий.

У коді це виглядає так

PYTHON
draft = writer.generate(goal, context)

review = reflector.review_once(
    draft=draft,
    rubric=[
        "no_new_facts",
        "preserve_uncertainty",
        "consistency_check",
    ],
)

if review.high_risk:
    return escalate_to_human(review.reason)

if review.ok:
    return draft

revised = writer.revise_once(
    draft=draft,
    fix_plan=review.fix_plan,
    rules=["no_new_facts", "keep_scope"],
)

# optional: перевірити, що ревізія не вийшла за рамки `fix_plan`
approved = supervisor.review_output_patch(
    original=draft,
    revised=revised,
    allowed_changes=review.fix_plan,
)

return approved

Reflection не повинен запускатися “доки не стане ідеально”. Один прохід перевірки, одне доопрацювання через revise і одна перевірка, що ревізія не вийшла за рамки fix_plan.

Як це виглядає під час виконання

TEXT
Goal: підготувати точну відповідь із коректним формулюванням SLA

Draft:
"SLA для всіх клієнтів становить 99.99%."

Review:
- проблема: надто категоричне твердження
- проблема: не вказано рівень тарифу
- виправлення: додати умову і джерело

Revised:
"SLA залежить від тарифу. Для enterprise — 99.99% згідно з політикою підтримки."

Повний приклад Reflection агента

PYPython
TSTypeScript · скоро

Коли підходить — і коли ні

Підходить

СитуаціяЧому Reflection підходить
Відповідь піде назовні і потрібна додаткова перевіркаReflection ловить очевидні проблеми перед відправкою користувачу.
Потрібне покращення якості без великого штрафу затримкиОдин обмежений прохід часто дає відчутне покращення якості.
Є чітка рубрика якості і stop rulesФормалізовані критерії роблять самоперевірку стабільною і передбачуваною.
Потрібна надійніша фінальна відповідь без циклу переписуванняReflection додає контрольний крок, але не розганяє нескінченні переробки.

Не підходить

СитуаціяЧому Reflection не підходить
Критично низька затримкаНавіть один додатковий прохід може зробити відповідь запізнілою.
Немає чіткої рубрики якостіБез критеріїв reflection стає хаотичним і не дає стабільного покращення.
Потрібна зовнішня валідація фактів через tools або людейReflection не замінює фактчекінг із зовнішніми джерелами чи ручну перевірку.

Бо reflection додає ще один прохід генерації і збільшує час та вартість відповіді.

Чим відрізняється від Self-Critique

ReflectionSelf-Critique
МетаЛовити очевидні проблеми перед відправкоюПеревірити відповідь за суворими правилами і переписати її, якщо щось не так
ГлибинаШвидка перевірка якості: чи відповідь зрозуміла, логічна і без очевидних помилокЧасто суворіша критика і ревізія
Тип результатуok/проблеми/план виправленьдетальні ризики + обов'язкові зміни + орієнтація на diff
РизикПеретворитись на 2-й цикл без лімітівНадмірне переписування і подорожчання процесу

Reflection — це швидкий обмежений контрольний прогін. Self-Critique — це глибший прохід із переписуванням.

Коли використовувати Reflection серед інших патернів

Використовуйте Reflection, коли потрібно швидко перевірити відповідь перед відправкою: чи вона зрозуміла, логічна і без очевидних помилок.

Короткий тест:

  • якщо потрібно "коротко перевірити і виправити перед фіналом" -> Reflection
  • якщо потрібно "глибоко критикувати за чеклістом і переписувати" -> Self-Critique Agent
Порівняння з іншими патернами та приклади

Швидка шпаргалка:

Якщо задача виглядає так...Використовуйте
Потрібна коротка перевірка перед фінальною відповіддюReflection Agent
Потрібна глибока критика за критеріями і переписування відповідіSelf-Critique Agent
Потрібно відновлювати процес після timeout, exception або падіння інструментаFallback-Recovery Agent
Потрібні жорсткі policy-перевірки перед ризиковою дієюGuarded-Policy Agent

Приклади:

Reflection: "Перед фінальною відповіддю швидко перевір логіку, повноту і явні помилки".

Self-Critique: "Оціни відповідь за чеклістом (точність, повнота, ризики), потім перепиши".

Fallback-Recovery: "Якщо API не відповідає, зроби retry -> fallback-джерело -> ескалація".

Guarded-Policy: "Перед відправкою даних назовні перевір policy: чи дозволено це робити".

Як комбінувати з іншими патернами

  • Reflection + RAG: Reflection перевіряє, що висновки справді відповідають знайденим джерелам.
  • Reflection + Supervisor: високоризикові висновки не виправляються автоматично, а передаються на погодження людині.
  • Reflection + ReAct: після серії кроків ReAct агент робить фінальну перевірку перед відповіддю.

Коротко

Коротко

Reflection Agent:

  • Робить одну контрольну самоперевірку
  • Виправляє відповідь один раз
  • Не додає нових фактів
  • Зменшує ризик очевидних продакшн-помилок

Переваги та Недоліки

Переваги

перевіряє відповідь перед відправкою

виправляє очевидні помилки

покращує ясність і структуру

допомагає тримати потрібний формат

Недоліки

додає ще один крок і затримку

витрачає більше токенів

без меж може зайво ускладнювати відповідь

FAQ

Q: Чи може рефлексія замінити фактчекінг і тести?
A: Ні. Це додатковий шар якості. Фактчекінг, валідація і контроль політик потрібні окремо.

Q: Чому важливо обмежувати кількість проходів?
A: Інакше рефлексія стає другим циклом: зростають затримка, витрати і ризик нових помилок.

Q: Що робити, якщо рефлексія знаходить проблему високого ризику?
A: Не продовжувати автоматично. Зупиняти процес або ескалювати на перевірку людиною / політику Supervisor.

Що далі

Reflection додає обмежений контроль якості перед фінальною відповіддю.

А що робити, коли потрібна ще суворіша критика і процес ревізії зі структурованими правилами змін?

⏱️ 10 хв читанняОновлено Бер, 2026Складність: ★★★
Практичне продовження

Приклади реалізації патерна

Перейди до реалізації на готових прикладах.

Інтегровано: продакшен-контрольOnceOnly
Додай guardrails до агентів з tool-calling
Зашип цей патерн з governance:
  • Бюджетами (кроки / ліміти витрат)
  • Дозволами на інструменти (allowlist / blocklist)
  • Kill switch та аварійна зупинка
  • Ідемпотентність і dedupe
  • Audit logs та трасування
Інтегрована згадка: OnceOnly — контрольний шар для продакшен агент-систем.
Автор

Цю документацію курують і підтримують інженери, які запускають AI-агентів у продакшені.

Контент створено з допомогою AI, із людською редакторською відповідальністю за точність, ясність і продакшн-релевантність.

Патерни та рекомендації базуються на постмортемах, режимах відмов і операційних інцидентах у розгорнутих системах, зокрема під час розробки та експлуатації governance-інфраструктури для агентів у OnceOnly.