В предыдущих главах мы рассмотрели базовые агентные шаблоны: Chaining для последовательного выполнения, Routing для динамического выбора пути и Parallelization для конкурентного исполнения задач. Эти паттерны позволяют агентам выполнять сложные задачи эффективнее и гибче. Однако даже при продвинутых рабочих процессах первоначальный вывод или план агента может быть не оптимален, неточен или неполон. Здесь на сцену выходит шаблон Reflection.
Шаблон Reflection подразумевает, что агент оценивает собственную работу, вывод или внутреннее состояние и использует эту оценку для повышения качества результата или уточнения ответа. Это форма самокоррекции/самосовершенствования, позволяющая агенту итеративно улучшать вывод или корректировать подход на основе обратной связи, внутренней критики или сопоставления с заданными критериями. Иногда рефлексию может вести отдельный агент, чья роль — анализировать результат исходного агента.
В отличие от простой последовательной цепочки, где выход сразу передаётся на следующий шаг, или маршрутизации, где выбирается путь, рефлексия вводит цикл обратной связи. Агент не только формирует ответ, но и затем пересматривает этот ответ (или процесс его получения), выявляет возможные проблемы/зоны улучшения и использует выводы, чтобы сгенерировать улучшенную версию или изменить дальнейшие действия.
Обычно процесс включает:
Эффективная реализация Reflection часто разделяет процесс на две логические роли: Producer и Critic — «Генератор–Рецензент»/«Producer–Reviewer». Хотя само-рефлексия одним агентом возможна, использование двух специализированных агентов (или двух вызовов LLM с разными системными промптами) обычно даёт более надёжные и непредвзятые результаты.
Такое разделение обязанностей снижает эффект «когнитивной предвзятости» при самооценке: Critic смотрит «с нуля», целенаправленно ища ошибки и точки роста. Затем обратная связь передаётся Producer’у, который генерирует улучшенную версию. Примеры на LangChain и ADK демонстрируют эту двухагентную схему: в LangChain используется специальный reflector_prompt для критика, а в ADK явно определены producer и reviewer.
Реализация Reflection требует структурировать рабочий процесс агента с включёнными циклами обратной связи — через итеративные циклы в коде или во фреймворках, поддерживающих состояние и условные переходы по результатам оценок. Один шаг «оценка → доработка» можно собрать и в LangChain/LangGraph, и в ADK, и в Crew.AI; однако настоящая итеративная рефлексия обычно требует более сложной оркестрации.
Шаблон Reflection критически важен для построения агентов, способных выдавать высококачественные результаты, решать тонкие задачи и демонстрировать некоторую «самоосознанность» и адаптивность. Он выводит агентов за рамки простого исполнения инструкций к более изощрённому решению задач и созданию контента.
Стоит отметить пересечение рефлексии с постановкой целей и мониторингом (см. главу 11). Цель задаёт эталон для самооценки агента, а мониторинг отслеживает прогресс. Во многих практических сценариях рефлексия выступает корректирующим двигателем, анализируя отклонения по данным мониторинга и корректируя стратегию. Такая синергия превращает агента из пассивного исполнителя в целенаправленную систему, адаптивно стремящуюся к результатам.
Эффективность Reflection значительно возрастает, если LLM ведёт память диалога (см. главу 8). История взаимодействий даёт контекст для оценки: агент сопоставляет текущий вывод с прошлой коммуникацией, реакцией пользователя и меняющимися целями, учится на прошлых замечаниях и избегает повторных ошибок. Без памяти каждый цикл — изолирован; с памятью рефлексия становится накопительным процессом, где каждый цикл опирается на предыдущий, повышая «интеллектуальность» и контекстность улучшений.
Шаблон Reflection полезен там, где критичны качество, точность или соблюдение сложных ограничений:
Креативное письмо и генерация контента.
Кейс: агент пишет блог-пост.
Рефлексия: сгенерировать черновик → раскритиковать по логике, тону, ясности → переписать. Повторять до нужного качества.
Польза: более выверенный и эффективный текст.