10 проектов с ИИ-агентами: от tool calling до продакшена
Большинство учебных проектов с ИИ-агентами заканчиваются чат-ботом, который умеет вызвать одну функцию. Это полезно, чтобы понять основы, но настоящая агентная система устроена сложнее. Агенту нужно выбирать инструмент, помнить прошлые разговоры, разбивать сложную задачу на шаги, восстанавливаться после сбоев инструментов и проверять собственную работу. А если агентов несколько, они должны работать вместе так, чтобы система не превратилась в непредсказуемый хаос.
Лучше всего это понимается на практике. Ниже 10 проектов, которые ведут от простого вызова функций к агентной системе, готовой к продакшену. Каждый следующий опирается на предыдущий, поэтому проходить их удобно по порядку.
1. Агент с вызовом инструментов
Языковая модель умеет генерировать текст, но сама по себе не может взаимодействовать с вашим приложением. Нужен механизм, который позволит ей вызывать функции вроде get_weather(), search_database(), send_email() или create_ticket().
Задача проекта: агент получает запрос, решает, нужен ли инструмент, вызывает нужную функцию и использует результат в ответе. Стек: Python, OpenAI API с function calling, Pydantic для описания аргументов. Здесь становится понятна принципиальная разница между моделью, которая пишет текст, и агентом, который совершает действия.
2. ReAct-агент
Многие задачи одним вызовом не решаются. Агенту нужно подумать, сделать действие, посмотреть на результат и решить, что делать дальше. Пример: «Найди текущую цену X, сравни с ценой месяц назад и посчитай изменение в процентах». Тут понадобится несколько шагов подряд.
В этом проекте вы реализуете цикл в стиле ReAct: рассуждение, действие, наблюдение, и так до готового ответа. Стек: Python, OpenAI, LangGraph. Главный урок в том, что агент работает как итеративный цикл, и у этого цикла обязательно должен быть лимит шагов.
3. Агент с несколькими инструментами
Полезный агент редко ограничен одним инструментом. У него может быть доступ к базе данных, веб-поиску, калькулятору, внутренним API, файловому хранилищу, почте и календарю. Главной сложностью становится выбор: какой инструмент подходит для конкретного запроса.
Дайте агенту набор инструментов и позвольте модели выбирать нужный. Стек: Python, OpenAI, LangGraph, Pydantic. Вы научитесь описывать схемы инструментов, работать со структурированными входными данными и проектировать инструменты так, чтобы модель пользовалась ими надежно. Хорошее описание и понятное имя функции влияют на качество выбора не меньше, чем сама модель.
4. Агент с памятью
Большинство агентов по сути не имеют состояния. Начните новый разговор, и агент не знает, кто вы, что вы обсуждали, какие у вас предпочтения и какие решения уже приняты.
Начните с истории диалога, затем добавьте долговременную память, которая хранится вне контекста модели. Стек: Python, OpenAI или Ollama, SQLite или PostgreSQL, эмбеддинги для поиска по смыслу. Проект учит отличать контекст от памяти, а самое сложное здесь в решении, какую информацию вообще стоит сохранять. Дальше проект легко развить до семантической и эпизодической памяти и профилей пользователей.
5. Агент-планировщик
Некоторые задачи слишком сложны для одного шага. Например: «Изучи трех облачных провайдеров, сравни цены, оцени возможности и подготовь отчет с рекомендацией». Агенту нужен план.
Создайте агента, который раскладывает большую цель на подзадачи и выполняет их по очереди или параллельно. Стек: Python, LangGraph, OpenAI, Pydantic. Здесь вы разберетесь с декомпозицией задач, зависимостями между шагами и разницей между последовательным и параллельным выполнением.
6. Агент с рефлексией
Агент может выдать убедительный ответ, который на деле неполон или ошибочен. Вместо того чтобы сразу возвращать результат, система может сначала проверить себя.
Сделайте конвейер из трех стадий: генерация, критика, исправление. Критик проверяет, не пропущена ли информация, нет ли ошибок в рассуждении, неподтвержденных утверждений, нарушений формата и выполнена ли задача целиком. Стек: Python, OpenAI, LangGraph. Удобнее всего, когда критик возвращает структурированный ответ, а не свободный текст.
7. Мультиагентная система
Некоторые задачи естественно делятся по областям экспертизы. Вместо одного огромного агента с десятками инструментов можно сделать несколько специализированных. Исследователь собирает информацию, программист пишет код, ревьюер проверяет результат, а супервизор решает, что делать дальше.
Стек: Python, LangGraph, OpenAI, Pydantic. Вы освоите координацию и делегирование, управление общим состоянием и обмен данными между агентами. И заодно увидите цену такой архитектуры: больше вызовов модели, больше задержка и сложнее отладка, поэтому мультиагентность стоит вводить, только когда один агент действительно не справляется.
8. Исследовательский агент
Обычный чат-бот отвечает из того, что уже знает. Исследовательский агент сначала собирает информацию: ищет по нескольким источникам, открывает документы, извлекает нужное, сравнивает источники, разбирается с противоречиями и ставит ссылки.
Постройте агента, который самостоятельно проводит многошаговое исследование. Стек: Python, LangGraph, OpenAI, API поиска, Pydantic. Проект учит агентному поиску, выбору источников, сбору доказательств и аккуратной работе с цитатами.
9. Агент для программирования
Написание кода составляет лишь часть работы инженера. Полезному агенту нужно разобраться в существующей кодовой базе, менять файлы, запускать тесты, читать ошибки и повторять цикл, пока все не заработает.
Дайте агенту контролируемый доступ к среде разработки. Стек: Python, OpenAI, Git, Docker, pytest. Здесь вы разберетесь с навигацией по коду, циклами выполнения, проверкой через тесты и, что особенно важно, с границами безопасности: агент должен работать в изолированном контейнере и не иметь доступа к секретам и продакшену.
10. Агент для продакшена
В демо все работает. Потом агент попадает в продакшен, и появляются вопросы. Какие инструменты он вызвал? Сколько заняла задача? Почему она упала? Сколько токенов ушло? Какая модель отвечала? Как часто он повторяет попытки? Что будет, если инструмент недоступен? Можно ли воспроизвести инцидент?
Проблема продакшена в контроле и наблюдаемости. Соберите идеи всех предыдущих проектов в одного агента, рассчитанного на реальную нагрузку. Стек: Python, LangGraph, OpenAI, PostgreSQL, Redis, Docker, OpenTelemetry. Придется продумать таймауты, повторные попытки, права на инструменты, подтверждение человеком для рискованных действий, лимиты стоимости, сохранение состояния, трассировку, оценку качества и безопасность.
Как это складывается в целое
Эти 10 проектов описывают строительные блоки, а не 10 разных типов агентов. Агент в продакшене обычно сочетает почти все: вызов инструментов, цикл рассуждений, выбор среди многих инструментов, память, планирование, самопроверку, иногда несколько ролей, поиск и работу с кодом, а поверх всего этого наблюдаемость и ограничения.
Цель обучения состоит в понимании того, когда агенту стоит действовать, что ему можно делать, как он должен помнить, как восстанавливаться после сбоев и как вы сможете проверить, что он сделал. Агент, который просто эффектно выглядит в демо, на эти вопросы не отвечает. С этого момента разработка агентов и становится по-настоящему интересной.
Полная версия статьи с примерами кода на uproger.com. Больше материалов про ИИ-агентов в разделе Искусственный интеллект на uproger.