Image

5 мощных декораторов Python для создания надежных агентов искусственного интеллекта

Эти пять декораторов Python спасли меня от бесчисленных головных болей, и, вероятно, спасут и вас.

5 мощных декораторов Python для создания надежных агентов искусственного интеллекта
Изображение предоставлено редактором.

# Введение

Если вы создали агентов ИИ, которые идеально работают в вашем ноутбуке, но дают сбой в момент запуска в продакшене, вы не одиноки. Вызовы API завершаются по таймауту, ответы больших языковых моделей (LLM) возвращаются некорректными, а ограничения скорости срабатывают в самый неподходящий момент .

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

# 1. Автоматическая повторная попытка с экспоненциальной задержкой

Каждый ИИ-агент взаимодействует с внешними API, и любой внешний API рано или поздно даст сбой. Возможно, OpenAI возвращает ошибку 429 из-за превышения лимита запросов, или это может быть кратковременный сбой в сети. В любом случае, ваш агент не должен просто сдаваться при первой же ошибке.

Декоратор `@retry` оборачивает любую функцию таким образом, что при возникновении определённого исключения она ждёт некоторое время и пытается снова. Экспоненциальная задержка имеет решающее значение, поскольку время ожидания должно увеличиваться с каждой попыткой. Первая попытка ждёт одну секунду, вторая — две, третья — четыре и так далее. Это предотвращает перегрузку и без того испытывающего трудности API.

Вы можете создать это самостоятельно с помощью простой обертки, используя time.sleep() и цикл, или воспользоваться библиотекой Tenacity , которая предоставляет проверенный временем декоратор @retry прямо из коробки. Ключевым моментом является настройка правильных типов исключений. Вам не нужно повторять попытку при некорректном приглашении (это будет приводить к ошибке каждый раз), но вы обязательно должны повторять попытку при ошибках подключения и ответах, связанных с ограничением скорости запросов.

# 2. Использование защитных механизмов от тайм-аута

Звонки в LLM могут зависать. Это случается нечасто, но когда это происходит, ваш оператор сидит без дела, пока пользователь смотрит на вращающийся индикатор загрузки. Хуже того, если вы используете несколько операторов параллельно, один зависший звонок может стать узким местом для всего вашего конвейера обработки звонков.

Декоратор `@timeout` устанавливает жесткое ограничение на продолжительность выполнения любой функции . Если функция не возвращает управление, скажем, в течение 30 секунд, декоратор генерирует исключение `TimeoutError`, которое можно перехватить и корректно обработать. Типичная реализация использует модуль `signal` Python для синхронного кода или `asyncio.wait_for()`, если вы работаете с асинхронными операциями .

В сочетании с декоратором повторной попытки это дает мощную комбинацию: если вызов зависает, таймаут прерывает его, и срабатывает логика повторной попытки с новой попыткой. Уже одно это устраняет огромную категорию сбоев в производственной среде.

# 3. Внедрение кэширования ответов

Вот что позволит значительно сократить ваши расходы на API. Если ваш агент выполняет один и тот же вызов с одними и теми же параметрами несколько раз (а это часто случается, особенно в многоэтапных циклах обработки данных), нет причин платить за этот ответ дважды.

Декоратор `@cache` сохраняет результат вызова функции на основе её входных аргументов . При следующем вызове функции с теми же аргументами декоратор мгновенно возвращает сохранённый результат. Встроенный в Python `functools.lru_cache` отлично подходит для простых случаев, но для рабочих процессов агентов вам понадобится что-то с поддержкой времени жизни (TTL), чтобы кэшированные ответы удалялись через разумный промежуток времени.

Это важнее, чем вы думаете. Агенты, использующие шаблоны вызова инструментов, часто повторно проверяют предыдущие результаты или повторно получают контекст, который они уже получили. Кэширование этих вызовов означает более быстрое выполнение и меньшие расходы в конце месяца.

# 4. Проверка входных и выходных данных

Большие языковые модели по своей природе непредсказуемы. Вы отправляете тщательно составленный запрос на ввод JSON, а иногда получаете в ответ блок кода Markdown с лишней запятой, которая нарушает работу парсера. Декоратор `@validate` обнаруживает эти проблемы на границе, прежде чем некорректные данные проникнут глубже в логику вашего агента.

На стороне ввода декоратор проверяет, соответствуют ли аргументы, получаемые вашей функцией, ожидаемым типам и ограничениям. На стороне вывода он проверяет, соответствует ли возвращаемое значение схеме, а Pydantic делает этот процесс невероятно простым . Вы определяете ожидаемый ответ как модель Pydantic, и декоратор пытается преобразовать выходные данные LLM в эту модель. Если проверка не удается, вы можете повторить вызов, применить функцию исправления или вернуться к значению по умолчанию.

Главное преимущество здесь в том, что декораторы проверки превращают скрытые ошибки данных в громкие, легко перехватываемые сообщения об ошибках. Вы сможете отлаживать проблемы за минуты, а не за часы.

# 5. Создание резервных цепочек

Агентам, работающим в производственной среде, нужен план Б. Если ваша основная модель недоступна, если ваша база данных векторов недоступна, если API вашего инструмента возвращает некорректные данные, ваш агент должен корректно переходить в нерабочее состояние, а не аварийно завершать работу.

Декоратор `@fallback` позволяет определить цепочку альтернативных функций . Декоратор сначала пробует основную функцию, и если она вызывает исключение, переходит к следующей функции в цепочке. Вы можете настроить резервный вариант: от GPT-5.4 к Claude, а затем к локальной модели Llama. Или от запроса к базе данных в реальном времени к кэшированному снимку, а затем к жестко заданному значению по умолчанию.

Реализация довольно проста. Декоратор принимает список резервных вызываемых функций и перебирает их в случае сбоя. Можно усложнить задачу, добавив логирование на каждом уровне резервирования, чтобы точно знать, где и почему произошла ошибка в системе. Этот шаблон встречается повсюду в производственных системах машинного обучения, и использование его в качестве декоратора позволяет отделить логику от бизнес-кода.

# Заключение

Декораторы — одна из самых недооцененных возможностей Python при создании надежных агентов искусственного интеллекта. Пять описанных здесь шаблонов рассматривают наиболее распространенные сценарии сбоев, с которыми вы столкнетесь, когда ваш агент покинет безопасный мир блокнота Jupyter.

И они прекрасно сочетаются друг с другом. Добавьте @retry поверх @timeout, а затем поверх @validate, и вы получите функцию, которая не зависнет, не сдастся слишком легко и не будет молча передавать некорректные данные дальше по потоку. Начните добавлять логику повторных попыток к вашим API-запросам уже сегодня. Как только вы увидите, насколько чище станет ваша обработка ошибок, вам захочется использовать декораторы повсюду.

Нала Дэвис — разработчик программного обеспечения и технический писатель. Прежде чем полностью посвятить себя техническому письму, ей, помимо прочего, удалось поработать ведущим программистом в компании, входящей в список Inc. 5000 и занимающейся созданием впечатляющих брендов, среди клиентов которой такие компании, как Samsung, Time Warner, Netflix и Sony.

Источник: www.kdnuggets.com

✅ Найденные теги: 5, Python, Агенты, Декораторы, искусственный интеллект, Надежность, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Лупа над текстом с кодом, слово "HIDDEN" выделено красным.
Девушка в пижаме сидит в темной комнате на кровати со смартфоном.
Ретро-футуристический гаджет с экраном и кнопками в стиле научной фантастики.
Карта ледников Цей и Сказка с точками проб почвы, Кавказские горы.
ideipro logotyp
Медицинская страховая компания Mass General Brigham Health Plan запускает интерактивный оздоровительный центр | Новости финансового сектора здравоохранения
Изготовление стеклянных изделий с использованием горелки в ремесленной мастерской.
Древняя акула Helicoprion в синем океане, вид сбоку.
Метеорит падает на Землю, огненный след в космосе.
Image Not Found
Ретро-футуристический гаджет с экраном и кнопками в стиле научной фантастики.

Легендарный Pip-Boy стал реальностью

Спустя почти два десятилетия после выхода Fallout 3 и Fallout: New Vegas культовый наручный компьютер стал реальностью: компания The Wand Company выпустила полнофункциональную реплику Pip-Boy 3000.  Устройство создано на основе оригинальной 3D-модели из игр и представляет собой…

Мар 21, 2026
Карта ледников Цей и Сказка с точками проб почвы, Кавказские горы.

Почвы у ледников Кавказа оказались загрязнены тяжелыми металлами из-за активного туризма

. Карта территории исследования с участками отбора проб. © Ivan Kushnov / International Journal of Geoheritage and Parks, 2026. Ученые выяснили, что приледниковые почвы в высокогорных районах Центрального Кавказа с активным туризмом содержат почти в два раза…

Мар 21, 2026
ideipro logotyp

Россия расширит национальную генетическую базу данных для обеспечения лечения различных этнических групп.

Автор: Юджин Герден 11 марта 2026 г. | Россия значительно расширяет существующую национальную базу данных частоты генетических вариантов населения в целях улучшения лечения ряда социально значимых заболеваний и снижения смертности от них. Согласно официальной статистике Министерства здравоохранения…

Мар 21, 2026
Медицинская страховая компания Mass General Brigham Health Plan запускает интерактивный оздоровительный центр | Новости финансового сектора здравоохранения

Медицинская страховая компания Mass General Brigham Health Plan запускает интерактивный оздоровительный центр | Новости финансового сектора здравоохранения

Медицинская страховая компания заключила партнерское соглашение с mPulse для обеспечения цифрового доступа к поддержке физического и психического здоровья. Фото: Предоставлено Массачусетской больницей общего профиля Бригхэм. Компания Mass General Brigham Health Plan и mPulse объединили усилия для запуска…

Мар 21, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых