Reflexion

[object Object]

Reflexion — это техника, в которой модель или агент не просто переписывает текущий ответ, а учится между попытками через verbal feedback. После ошибки агент формулирует lesson learned, сохраняет его в память и использует на следующем ходе. В 2026 Reflexion уже полезнее рассматривать не как чистый prompt trick, а как agentic improvement loop на стыке prompting, memory и evaluation.

Self-Refine улучшает один текст. Reflexion пытается не повторить ту же ошибку в следующей попытке.

Суть в двух словах

Reflexion особенно уместен, когда:

  • задача допускает несколько попыток;
  • есть внешний сигнал успеха или провала;
  • ошибки повторяются;
  • агент ведёт trace и память.

Типичные сценарии:

  • coding agents;
  • browser-use agents;
  • long-running workflows;
  • research agents;
  • автономные retry loops.

Reflexion полезен не там, где нужен "ещё один ответ", а там, где система должна накапливать operational lessons между эпизодами.

Чем Reflexion отличается от Self-Refine

Self-Refine
Один черновик -> критика -> улучшение
Reflexion
Попытка -> feedback -> reflection -> memory -> новая попытка

Главный сдвиг здесь в том, что Reflexion работает не только внутри одного ответа, а между эпизодами. Это уже не просто редактура, а простая форма обучения на ошибках.

Поэтому Reflexion особенно релевантен агентам, а не обычным статeless chat-ответам. Там, где есть несколько ходов, инструменты и retries, verbal feedback становится реальным механизмом накопления опыта.

Из чего состоит хороший Reflexion-loop

Важно, что feedback не обязательно должен быть "сложным". Даже простые сигналы вроде:

  • тест упал;
  • tool call вернул 403;
  • в браузере кнопка неактивна;
  • evaluator score ниже порога;

уже достаточны, чтобы запустить полезную рефлексию.

Почему техника полезна для агентов

У long-running agents типовая проблема не в том, что один ответ получился плохим, а в том, что одна и та же ошибка повторяется:

  • агент забывает проверить тесты;
  • лезет не в тот инструмент;
  • снова нарушает sandbox assumptions;
  • повторяет неудачный способ поиска информации.

Reflexion помогает превратить такие повторяющиеся ошибки в явные operational lessons.

Reflexion — это не "умная философская самооценка". Это способ превращать recurring failures в короткие reusable правила поведения.

Где техника особенно полезна

Плюсы

  • Подходит для agent workflows и многоходовых задач
  • Снижает повторение одинаковых ошибок
  • Хорошо сочетается с traces, memory и evaluator feedback
  • Полезен для coding и research agents

Минусы

  • Сложнее обычного refine-pass
  • Без качественного feedback loop нечему учиться
  • Плохие reflections могут закреплять неверные выводы
  • Требует управления памятью и retry policy

Сильнее всего Reflexion раскрывается там, где:

  • агент реально может попробовать ещё раз;
  • среда даёт сигнал об успехе;
  • ошибки повторяются между эпизодами;
  • lessons можно обобщить.

Слабее всего:

  • в одношаговом consumer chat;
  • в задачах без feedback loop;
  • в purely creative generation;
  • в статeless pipelines без памяти.

Практический вывод 2026

Reflexion сегодня особенно уместен в системах, где уже есть:

  • traces;
  • evaluator or judge layer;
  • memory management;
  • controlled retries.

Без этих компонентов техника легко вырождается в бессмысленный "попробуй ещё раз, но умнее".

Какие reflections действительно полезны

Хороший lesson:

  • короткий;
  • конкретный;
  • повторно применимый;
  • привязан к наблюдаемой ошибке.

Плохой lesson:

  • абстрактный;
  • слишком длинный;
  • эмоциональный вместо operational;
  • не даёт следующего действия.

Примеры хороших reflections:

  • "Перед submit проверь, не disabled ли кнопка из-за пустого обязательного поля."
  • "Если тест падает только в CI, сначала проверь timezone и OS-dependent paths."
  • "При 403 от API сначала проверь scope токена, а не формат payload."

Примеры

Reflexion для coding agent

ПромптClaude Sonnet 4.6
Первая попытка: исправь failing test.
Если тест всё ещё падает, сформулируй короткий lesson learned и попробуй снова, учитывая этот lesson.
Ответ модели

Lesson learned: ошибка не в бизнес-логике, а в timezone handling. Во второй попытке агент меняет сравнение дат на UTC-normalized вариант.

Reflexion для browser agent

ПромптGPT-5
Если действие в браузере не сработало, не повторяй тот же клик вслепую. Сначала сформулируй, почему попытка могла провалиться, затем выбери новую стратегию.
Ответ модели

Reflection: кнопка неактивна до заполнения обязательного поля. Next attempt: сначала заполнить поле company_name, потом повторить submit.

Reflexion для research agent

ПромптGemini 2.5 Pro
Если найденный источник не подтверждает claim, зафиксируй, что именно было неверным в поисковой гипотезе, и измени следующий запрос.
Ответ модели

Reflection: запрос был слишком broad и уводил в маркетинговые страницы. Next attempt: искать docs/pricing/release-notes вместо blog posts.

Техническая реализация

attempt = agent.solve(task)
feedback = evaluator(attempt)
reflection = agent.reflect(
    attempt=attempt,
    feedback=feedback,
    prompt="Сформулируй короткий operational lesson. Избегай общих фраз."
)
memory.write(reflection)
retry = agent.solve(task, memory=memory.read())

Что важно фильтровать

Не каждую рефлексию стоит писать в память. Полезные reflections:

  • конкретны;
  • повторно применимы;
  • связаны с реальной ошибкой;
  • не превращаются в шумное эссе.

Write policy

def should_write_reflection(reflection: str, feedback_score: float) -> bool:
    return feedback_score < 0.7 and len(reflection.split()) < 40

Это грубый пример, но сам принцип важен: память не должна принимать всё подряд.

Memory shape

lesson = {
    "situation": "submit failed because button was disabled",
    "rule": "check prerequisite fields before retrying submit",
    "scope": "browser_form_tasks"
}

Такая структура полезнее, чем длинный prose paragraph.

Retry policy

def next_action(feedback, reflection):
    if feedback == "tool_auth_error":
        return "check_credentials"
    if feedback == "test_failure":
        return "inspect_failure_context"
    return "retry_with_memory"

Reflexion не должен запускать blind retry. Он должен менять policy следующего шага.

Частая ошибка

Если агент пишет в память всё подряд, память быстро превращается в свалку. Reflexion работает только при строгой memory hygiene: короткие lessons, write policy и периодическая чистка.

Другие ошибки:

  • хранить полные traces вместо lessons;
  • не отделять общие правила от одноразового шума;
  • не чистить устаревшие reflections;
  • не проверять, что reflection реально улучшила следующую попытку.

Проверьте себя

Проверьте себя

1. В чём главное отличие Reflexion от Self-Refine?

2. Где Reflexion особенно полезен?

3. Какой главный риск?