Глава 12: Обработка исключений и восстановление
Чтобы агенты ИИ могли надежно работать в разнообразных реальных средах, они должны уметь справляться с непредвиденными ситуациями, ошибками и неисправностями. Точно так же, как люди адаптируются к неожиданным препятствиям, интеллектуальные агенты нуждаются в надежных системах для обнаружения проблем, инициации процедур восстановления или, по крайней мере, обеспечения контролируемого отказа. Эта важнейшая потребность формирует основу шаблона обработки исключений и восстановления.
Этот шаблон фокусируется на разработке исключительно прочных и устойчивых агентов, которые могут поддерживать непрерывную функциональность и операционную целостность, несмотря на различные трудности и аномалии. Он подчеркивает важность как проактивной подготовки, так и реактивных стратегий для обеспечения непрерывной работы даже при столкновении с вызовами. Эта адаптивность критически важна для успешного функционирования агентов в сложных и непредсказуемых условиях, в конечном счете повышая их общую эффективность и надежность.
Способность справляться с неожиданными событиями гарантирует, что эти системы ИИ являются не только интеллектуальными, но также стабильными и надежными, что способствует большему доверию к их развертыванию и производительности. Интеграция комплексных инструментов мониторинга и диагностики дополнительно усиливает способность агента быстро выявлять и устранять проблемы, предотвращая потенциальные нарушения и обеспечивая более плавную работу в изменяющихся условиях. Эти передовые системы имеют решающее значение для поддержания целостности и эффективности операций ИИ, укрепляя их способность управлять сложностью и непредсказуемостью.
Этот шаблон иногда может использоваться совместно с рефлексией. Например, если первоначальная попытка терпит неудачу и вызывает исключение, рефлексивный процесс может проанализировать неудачу и повторить задачу с уточненным подходом, таким как улучшенный prompt, чтобы разрешить ошибку.
Обзор шаблона обработки исключений и восстановления
Шаблон обработки исключений и восстановления решает потребность агентов ИИ в управлении операционными сбоями. Этот шаблон включает в себя предвидение потенциальных проблем, таких как ошибки инструментов или недоступность сервисов, и разработку стратегий для их смягчения. Эти стратегии могут включать логирование ошибок, повторные попытки, fallback-механизмы, плавную деградацию и уведомления. Кроме того, шаблон подчеркивает механизмы восстановления, такие как откат состояния, диагностика, самокоррекция и эскалация, для возвращения агентов к стабильной работе. Реализация этого шаблона повышает надежность и устойчивость агентов ИИ, позволяя им функционировать в непредсказуемых средах. Примеры практических применений включают чатботы, управляющие ошибками базы данных, торговые боты, обрабатывающие финансовые ошибки, и агенты умного дома, устраняющие неисправности устройств. Шаблон гарантирует, что агенты могут продолжать эффективно работать, несмотря на столкновение со сложностями и сбоями.

Рис.1: Ключевые компоненты обработки исключений и восстановления для агентов ИИ
Обнаружение ошибок: Это включает в себя тщательное выявление операционных проблем по мере их возникновения. Это может проявляться как недопустимые или неправильно сформированные выходные данные инструментов, специфические ошибки API, такие как коды 404 (Not Found) или 500 (Internal Server Error), необычно долгое время отклика от сервисов или API, или бессвязные и бессмысленные ответы, отклоняющиеся от ожидаемых форматов. Кроме того, мониторинг другими агентами или специализированными системами мониторинга может быть реализован для более проактивного обнаружения аномалий, позволяя системе выявлять потенциальные проблемы до их эскалации.
Обработка ошибок: После обнаружения ошибки необходим тщательно продуманный план реагирования. Это включает в себя тщательную запись деталей ошибки в логи для последующей отладки и анализа (логирование). Повторная попытка действия или запроса, иногда со слегка скорректированными параметрами, может быть жизнеспособной стратегией, особенно для временных ошибок (повторные попытки). Использование альтернативных стратегий или методов (fallback-механизмы) может обеспечить поддержание некоторой функциональности. Когда полное восстановление не является немедленно возможным, агент может поддерживать частичную функциональность, чтобы обеспечить хотя бы некоторую ценность (плавная деградация). Наконец, оповещение человеческих операторов или других агентов может быть критически важным для ситуаций, требующих человеческого вмешательства или сотрудничества (уведомление).
Восстановление: Этот этап касается возвращения агента или системы в стабильное и работоспособное состояние после ошибки. Это может включать отмену недавних изменений или транзакций для устранения последствий ошибки (откат состояния). Тщательное расследование причины ошибки жизненно важно для предотвращения повторения. Корректировка плана, логики или параметров агента через механизм самокоррекции или процесс перепланирования может потребоваться, чтобы избежать той же ошибки в будущем. В сложных или серьезных случаях делегирование проблемы человеческому оператору или системе более высокого уровня (эскалация) может быть лучшим курсом действий.
Реализация этого надежного шаблона обработки исключений и восстановления может превратить агентов ИИ из хрупких и ненадежных систем в устойчивые, надежные компоненты, способные эффективно и стойко работать в сложных и крайне непредсказуемых средах. Это гарантирует, что агенты поддерживают функциональность, минимизируют время простоя и обеспечивают бесшовный и надежный опыт даже при столкновении с неожиданными проблемами.
Практические применения и случаи использования
Обработка исключений и восстановление критически важны для любого агента, развернутого в реальном сценарии, где идеальные условия не могут быть гарантированы.
Чатботы службы поддержки клиентов: Если чатбот пытается получить доступ к базе данных клиентов, а база данных временно недоступна, он не должен аварийно завершать работу. Вместо этого он должен обнаружить ошибку API, информировать пользователя о временной проблеме, возможно, предложить попробовать еще раз позже или эскалировать запрос к человеческому агенту.
Автоматизированная финансовая торговля: Торговый бот, пытающийся выполнить сделку, может столкнуться с ошибкой "insufficient funds" или "market closed". Он должен обрабатывать эти исключения, логируя ошибку, не повторяя одну и ту же недействительную сделку многократно, и потенциально уведомляя пользователя или корректируя свою стратегию.
Автоматизация умного дома: Агент, управляющий умным освещением, может не справиться с включением света из-за проблем с сетью или неисправности устройства. Он должен обнаружить этот сбой, возможно, повторить попытку, и если все еще неуспешно, уведомить пользователя, что свет не удалось включить, и предложить ручное вмешательство.
Агенты обработки данных: Агент, задачей которого является обработка пакета документов, может столкнуться с поврежденным файлом. Он должен пропустить поврежденный файл, зарегистрировать ошибку, продолжить обработку других файлов и сообщить о пропущенных файлах в конце, а не останавливать весь процесс.
Агенты веб-скрапинга: Когда агент веб-скрапинга сталкивается с CAPTCHA, измененной структурой веб-сайта или ошибкой сервера (например, 404 Not Found, 503 Service Unavailable), он должен обрабатывать это корректно. Это может включать паузу, использование прокси или сообщение о конкретном URL, который не удалось обработать.
Робототехника и производство: Роботизированная рука, выполняющая задачу сборки, может не справиться с захватом компонента из-за неточности. Она должна обнаружить этот сбой (например, через обратную связь датчиков), попытаться перенастроиться, повторить захват, и если проблема сохраняется, предупредить человеческого оператора или переключиться на другой компонент.
Короче говоря, этот шаблон является фундаментальным для создания агентов, которые являются не только интеллектуальными, но также надежными, устойчивыми и удобными для пользователя в условиях сложностей реального мира.
Практический пример кода (ADK)
Обработка исключений и восстановление жизненно важны для надежности и стабильности системы. Рассмотрим, например, реакцию агента на неудачный вызов инструмента. Такие сбои могут происходить из-за неправильного ввода инструмента или проблем с внешним сервисом, от которого зависит инструмент.
from google.adk.agents import Agent, SequentialAgent
# Агент 1: Пытается использовать основной инструмент. Его фокус узок и ясен.
primary_handler = Agent(
name="primary_handler",
model="gemini-2.0-flash-exp",
instruction="""
Ваша задача - получить точную информацию о местоположении.
Используйте инструмент get_precise_location_info с адресом, предоставленным пользователем.
""",
tools=[get_precise_location_info]
)
# Агент 2: Действует как fallback-обработчик, проверяя состояние для принятия решения.
fallback_handler = Agent(
name="fallback_handler",
model="gemini-2.0-flash-exp",
instruction="""
Проверьте, не удался ли основной поиск местоположения, посмотрев на state["primary_location_failed"].
- Если это True, извлеките город из исходного запроса пользователя и используйте инструмент get_general_area_info.
- Если это False, ничего не делайте.
""",
tools=[get_general_area_info]
)
# Агент 3: Представляет финальный результат из состояния.
response_agent = Agent(
name="response_agent",
model="gemini-2.0-flash-exp",
instruction="""
Просмотрите информацию о местоположении, сохраненную в state["location_result"].
Представьте эту информацию ясно и кратко пользователю.
Если state["location_result"] не существует или пуст, извинитесь, что не удалось получить местоположение.
""",
tools=[] # Этот агент только рассуждает над финальным состоянием.
)
# SequentialAgent обеспечивает выполнение обработчиков в гарантированном порядке.
robust_location_agent = SequentialAgent(
name="robust_location_agent",
sub_agents=[primary_handler, fallback_handler, response_agent]
)Этот код определяет надежную систему получения информации о местоположении, использующую SequentialAgent ADK с тремя подагентами. primary_handler является первым агентом, пытающимся получить точную информацию о местоположении с помощью инструмента get_precise_location_info. fallback_handler действует как резервный, проверяя, не удался ли основной поиск путем проверки переменной состояния. Если основной поиск не удался, резервный агент извлекает город из запроса пользователя и использует инструмент get_general_area_info. response_agent является финальным агентом в последовательности. Он просматривает информацию о местоположении, сохраненную в состоянии. Этот агент предназначен для представления финального результата пользователю. Если информация о местоположении не найдена, он извиняется. SequentialAgent гарантирует, что эти три агента выполняются в предопределенном порядке. Эта структура позволяет использовать многоуровневый подход к получению информации о местоположении.
Краткий обзор
Что: Агенты ИИ, работающие в реальных средах, неизбежно сталкиваются с непредвиденными ситуациями, ошибками и системными неисправностями. Эти нарушения могут варьироваться от сбоев инструментов и проблем с сетью до недопустимых данных, угрожая способности агента выполнять свои задачи. Без структурированного способа управления этими проблемами агенты могут быть хрупкими, ненадежными и склонными к полному сбою при столкновении с неожиданными препятствиями. Эта ненадежность затрудняет их развертывание в критических или сложных приложениях, где стабильная производительность является существенной.
Зачем: Шаблон обработки исключений и восстановления предоставляет стандартизированное решение для создания надежных и устойчивых агентов ИИ. Он оснащает их агентной способностью предвидеть, управлять и восстанавливаться после операционных сбоев. Шаблон включает проактивное обнаружение ошибок, такое как мониторинг выходных данных инструментов и ответов API, и реактивные стратегии обработки, такие как логирование для диагностики, повторные попытки временных сбоев или использование fallback-механизмов. Для более серьезных проблем он определяет протоколы восстановления, включая возврат к стабильному состоянию, самокоррекцию путем корректировки своего плана или эскалацию проблемы к человеческому оператору. Этот систематический подход гарантирует, что агенты могут поддерживать операционную целостность, учиться на сбоях и надежно функционировать в непредсказуемых условиях.
Практическое правило: Используйте этот шаблон для любого агента ИИ, развернутого в динамичной реальной среде, где возможны системные сбои, ошибки инструментов, проблемы с сетью или непредсказуемые входные данные, и где операционная надежность является ключевым требованием.
Визуальная сводка

Рис.2: Шаблон обработки исключений
Ключевые выводы
Основные моменты для запоминания:
- Обработка исключений и восстановление является существенной для создания надежных и стабильных агентов.
- Этот шаблон включает в себя обнаружение ошибок, корректную их обработку и реализацию стратегий восстановления.
- Обнаружение ошибок может включать валидацию выходных данных инструментов, проверку кодов ошибок API и использование таймаутов.
- Стратегии обработки включают логирование, повторные попытки, fallback-механизмы, плавную деградацию и уведомления.
- Восстановление фокусируется на возвращении к стабильной работе через диагностику, самокоррекцию или эскалацию.
- Этот шаблон гарантирует, что агенты могут эффективно работать даже в непредсказуемых реальных средах.
Заключение
Эта глава исследует шаблон обработки исключений и восстановления, который является существенным для разработки надежных и зависимых агентов ИИ. Этот шаблон рассматривает, как агенты ИИ могут выявлять и управлять неожиданными проблемами, реализовывать соответствующие ответы и восстанавливаться до стабильного операционного состояния. Глава обсуждает различные аспекты этого шаблона, включая обнаружение ошибок, обработку этих ошибок через такие механизмы, как логирование, повторные попытки и fallback-механизмы, а также стратегии, используемые для восстановления агента или системы до правильного функционирования. Практические применения шаблона обработки исключений и восстановления иллюстрируются в нескольких областях, чтобы продемонстрировать его актуальность в обработке сложностей и потенциальных сбоев реального мира. Эти применения показывают, как оснащение агентов ИИ возможностями обработки исключений способствует их надежности и адаптивности в динамичных средах.
Список литературы
- McConnell, S. (2004). Code Complete (2nd ed.). Microsoft Press.
- Shi, Y., Pei, H., Feng, L., Zhang, Y., & Yao, D. (2024). Towards Fault Tolerance in Multi-Agent Reinforcement Learning. arXiv preprint arXiv:2412.00534.
- O'Neill, V. (2022). Improving Fault Tolerance and Reliability of Heterogeneous Multi-Agent IoT Systems Using Intelligence Transfer. Electronics, 11(17), 2724.
Навигация
Назад: [Глава 11. Постановка целей и мониторинг](../../Часть 2/Глава 11. Постановка целей и мониторинг.md)
Вперед: Глава 13. Человек в контуре