Рефлексия и самокоррекция

Сильный агент не выдаёт первый же ответ, а проверяет его и при необходимости исправляет. Этот приём называют рефлексией.

Рефлексия (reflection) — приём, при котором агент оценивает собственный результат (сам или отдельным «критиком») и, найдя проблему, переделывает его.

Почему это помогает

Первый ответ модели часто хорош, но не идеален: бывают фактические ошибки, упущенные требования, баги в коде. Один дополнительный проход «посмотри критически на свой ответ» нередко ловит такие промахи — модели проще проверить готовое, чем сразу выдать безупречное.

Петля рефлексии

  1. Агент даёт черновой ответ.
  2. Критик (та же модель в роли проверяющего или отдельный агент) ищет проблемы.
  3. Если проблемы есть — агент исправляет ответ с учётом замечаний.
  4. Повторять, пока критик не доволен или не исчерпан лимит попыток.

Запускаемый пример

Смоделируем рефлексию: черновик намеренно содержит ошибку, критик-заглушка её находит, агент исправляет.

def draft_answer(question):
    return "Столица Австралии — Сидней"   # намеренная ошибка

def critic(question, answer):
    # критик-заглушка сверяется с фактами
    facts = {"столица австралии": "Канберра"}
    key = question.lower().replace("?", "").replace("какая ", "").strip()
    correct = facts.get(key)
    if correct and correct not in answer:
        return (False, f"неверно, правильный ответ: {correct}")
    return (True, "ок")

question = "Какая столица Австралии?"
answer = draft_answer(question)
print("Черновик:", answer)

ok, feedback = critic(question, answer)
print("Критик:", ok, "-", feedback)

if not ok:
    # самокоррекция с учётом замечания
    answer = "Столица Австралии — " + feedback.split(": ")[1]
    print("Исправлено:", answer)
    print("Повторная проверка:", critic(question, answer)[0])

Вывод:

Черновик: Столица Австралии — Сидней
Критик: False - неверно, правильный ответ: Канберра
Исправлено: Столица Австралии — Канберра
Повторная проверка: True

Агент не остановился на неверном черновике: критик дал обратную связь, агент исправил ответ и прошёл повторную проверку. Это и есть самокоррекция.

Когда рефлексия особенно полезна

  • Код — запустить тесты, увидеть ошибку, починить (критик здесь объективный — это тесты).
  • Факты — проверить утверждения инструментом поиска.
  • Сложные требования — свериться, что выполнены все пункты задания.

Лучшая рефлексия опирается на объективный сигнал (прошёл тест, инструмент подтвердил факт), а не только на мнение той же модели — иначе модель может «одобрить» собственную ошибку.

Цена рефлексии

Каждый цикл проверки — это лишние вызовы LLM. Рефлексия повышает качество, но увеличивает стоимость и латентность. Поэтому ставят лимит итераций и включают её там, где цена ошибки высока, а не на каждый ответ подряд.

Итог

  • Рефлексия — это проверка агентом собственного результата и его исправление по обратной связи.
  • Петля: черновик → критика → исправление, с лимитом попыток.
  • Надёжнее всего рефлексия с объективным сигналом (тесты, инструмент); за качество платят вызовами LLM.
Проверьте себя
1. Что такое рефлексия (reflection) в работе агента?
AПовтор одного и того же действия
BСжатие истории диалога
CВыбор инструмента по имени
DПроверка агентом собственного результата и его исправление по обратной связи
2. Почему рефлексия часто улучшает результат?
AМодели проще проверить и поправить готовый ответ, чем сразу выдать безупречный
BОна ускоряет модель
CОна убирает необходимость в инструментах
DОна уменьшает контекст
3. На какой сигнал надёжнее всего опирать рефлексию?
AНа мнение той же модели о самой себе
BНа объективный сигнал — прошедшие тесты или подтверждение факта инструментом
CНа длину ответа
DНа число шагов