Skip to main content

Reflection Pattern (Рефлексія)(Патерн саморефлексії та внутрішньої критики)

Архітектурний патерн підвищення надійності агентів, що розділяє процес на генерацію рішення (Generator), його критичний аудит (Critic) та ітеративне доопрацювання (Refiner).

1. Огляд концепції та системна проблема

Авторегресійні мовні моделі мають фундаментальну архітектурну рису: вони генерують токени послідовно і не мають механізму апаратного «відкату» (Backtracking). Якщо на початку функції модель обрала неоптимальний підхід, механізм Self-Attention змушує її продовжувати писати код у межах цієї хибної траєкторії:

  1. Ілюзія впевненості: Модель генерує код з галюцинаціями або пропущеними перевірками на null/undefined з однаково високою впевненістю.
  2. Пропуск крайових випадків (Edge Cases): При однопрохідній генерації (Zero-Shot) увага моделі сфокусована на базовому сценарії (Happy Path), тоді як обробка помилок, race conditions та ліміти пам'яті ігноруються.
  3. Низька якість першого драфту: Як і інженер-людина, штучний інтелект рідко пише бездоганний архітектурний код з першої спроби без ретельного перечитування.

Reflection Pattern запроваджує метакогнітивний цикл: модель перетворюється на власного код-рев'юера, оцінюючи результат проти чітких інженерних критеріїв перед поверненням фінальної відповіді.

2. Архітектурна таксономія та ментальна модель

Класична реалізація патерну рефлексії складається з трьох спеціалізованих компонентів:

  • 1. Генератор (Producer / Generator): Приймає вхідні вимоги користувача та генерує первинне рішення $S_0$. Фокусується на вирішенні функціональної задачі.
  • 2. Критик (Auditor / Critic): Отримує згенерований артефакт $S_0$ та оцінює його з позиції прискіпливого архітектора або аудитора безпеки проти структурованого чекліста (складність $O(N)$, витоки пам'яті, вразливості OWASP, безпека типів). Формує деталізований список зауважень $C_0$.
  • 3. Доопрацювач (Refiner): Отримує вихідний код $S_0$ разом із критикою $C_0$ і генерує оновлену версію $S_1$, в якій усунуто всі вказані недоліки.
  • 4. Типи рефлексії:
    • Внутрішня (Internal Self-Reflection): критика здійснюється виключно силами самої LLM за допомогою спеціального промпту.
    • Заземлена на середовище (Grounded / External Reflection): критика спирається на об'єктивні факти — вивід компілятора, помилки лінтера або падіння юніт-тестів.

3. Технічний пайплайн та внутрішня механіка

Життєвий цикл рефлексивного процесу:

  1. Initial Drafting (Формування первинного розв'язку): Генератор створює кандидатне рішення задачі.
  2. Adversarial Critique (Аудит критика): Викликається промпт критика з явною вимогою бути максимально суворим: «Проаналізуй наведений код. Знайди щонайменше 3 потенційні точки падіння, витоки пам'яті або крайові випадки, які призведуть до помилки у продакшені».
  3. Stopping Invariant Evaluation (Перевірка критерію зупинки): Оцінюється результат критики: якщо критичних зауважень немає або досягнуто ліміту раундів (iterations >= 2), система повертає поточне рішення.
  4. Targeted Revision (Цільове доопрацювання): Генератор отримує системне повідомлення: «Ось початковий код і зауваження аудитора. Перепиши функцію, виправивши кожне зауваження без втрати працездатності».

4. Практичні інженерні сценарії в продакшені

01. Аудит безпеки коду та смарт-контрактів

Генератор пише функцію переводу коштів у смарт-контракті Solidity. Критик аналізує код і вказує: «Рядок 14 вразливий до атаки повторного входу (Reentrancy), оскільки зміна балансу відбувається після виклику зовнішнього контракту». Рефайнер додає модифікатор nonReentrant та переставляє оновлення стану перед відправкою коштів (Checks-Effects-Interactions pattern).

02. Оптимізація продуктивності SQL та ORM запитів

Критик переглядає код, згенерований для читання пов'язаних сутностей, і попереджає про проблему $N+1$ запитів: «Використано цикл для звернення до пов'язаних профілів; замініть це на єдиний JOIN або eager loading через include».

03. Синтез надійних регулярних виразів

Складання регулярного виразу для валідації складних email-адрес або телефонних номерів. На фазі рефлексії критик тестує згенерований regex на 10 нестандартних крайових рядках (ReDoS-атаки, порожні рядки, спецсимволи) і вказує на випадки пробиття фільтра.

5. Підводні камені, типові помилки та безпека

  • Сикофантія критика (Sycophancy): Якщо промпт критика сформульовано занадто м'яко, модель схильна хвалити власне рішення («Код виглядає чудово!»), роблячи рефлексію фіктивною. Завжди диктуйте роль безкомпромісного аудитора безпеки.
  • Галюцинована критика (Over-Critique): Критик може вигадати проблему там, де її немає, змусивши генератор переускладнити простий і робочий код зайвими обгортками. Заземлюйте критику реальними тестами та компілятором.
  • Нескінченне коливання (Oscillation): На першому кроці критик просить додати перевірку, на другому — прибрати її як надлишкову. Обов'язково фіксуйте максимальну кількість кроків циклу.
/ Часті запитанняSchema.org FAQPage

FAQ: Reflection Pattern (Рефлексія)

Під час початкової генерації LLM передбачає токени зліва направо і не може «повернутися назад» для виправлення раннього невдалого вибору. Коли модель оцінює вже готовий текст (Critique Phase), вся структура коду цілком перебуває у її вікні уваги, що дозволяє легко виявити логічні прогалини, відсутні крайові випадки та синтаксичні розбіжності.
/ Внутрішня перелінковка
Всі терміни
Агенти & MCP

Self-Correction Loop

Механізм автономного виправлення коду моделлю через отримання детермінованого зворотного зв'язку від компіляторів, лінтерів або тестів (Grounded Feedback Loop).

Читати термін
Агенти & MCP

Plan-and-Solve Prompting

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

Читати термін
Агенти & MCP

ReAct Pattern (Reasoning + Acting)

Фундаментальний алгоритмічний патерн автономних агентів, що чергує кроки внутрішніх міркувань (Thought), виконання зовнішніх інструментів (Action) та аналізу отриманого результату (Observation).

Читати термін
Вигорання & Flow

Verification Discipline (Дисципліна верифікації згенерованого коду)

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

Читати термін