Рефлексия и самокоррекция
Сильный агент не выдаёт первый же ответ, а проверяет его и при необходимости исправляет. Этот приём называют рефлексией.
Рефлексия (reflection) — приём, при котором агент оценивает собственный результат (сам или отдельным «критиком») и, найдя проблему, переделывает его.
Почему это помогает
Первый ответ модели часто хорош, но не идеален: бывают фактические ошибки, упущенные требования, баги в коде. Один дополнительный проход «посмотри критически на свой ответ» нередко ловит такие промахи — модели проще проверить готовое, чем сразу выдать безупречное.
Петля рефлексии
- Агент даёт черновой ответ.
- Критик (та же модель в роли проверяющего или отдельный агент) ищет проблемы.
- Если проблемы есть — агент исправляет ответ с учётом замечаний.
- Повторять, пока критик не доволен или не исчерпан лимит попыток.
Запускаемый пример
Смоделируем рефлексию: черновик намеренно содержит ошибку, критик-заглушка её находит, агент исправляет.
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.