Способы создания ИИ-агентов глазами разработчика

Решил понять, как сейчас можно создавать ИИ-агентов. Вариантов так много, что голова может пойти кругом. Я попытаться увидеть в этом систему.
Принципиально есть три основных направления.
1. Засучить рукава и писать много кода самому
Нужно неплохо знать какой-нибудь язык программирования (сюрприз!).
Лучше всего — Python, потому что он используется для LLM и это как бы "родной" язык для работы с ИИ. Но и другие языки тоже вполне подойдут. У меня есть некоторый опыт с Node.js, поэтому я, например, использую его.
С точки зрения сложности проекта средний ИИ-агент — это довольно простая программа.
У вас может быть веб-сервер на базе Express или просто скрипт. Триггером (тем, что запускает агента) может выступать любой планировщик или внешняя система, которая вызывает агента через веб-хук.
Например, написал пользователь на сайте сообщение. Ваш сайт посылает запрос вашему серверу и там уже агент начинает свою работу.
Во варианте с написанием кода у вас максимум гибкости, возможностей и... кайфа от процесса, если вы любите кодить. Можно реализовать любую сложную логику.
Писать агентов реально интересно, потому что это не просто примитивный CRUD. Нужно продумывать воркфлоу и порой взаимодействие между агентами. Я уж не говорю про механизмы самообучения.
2. Писать меньше кода за счет использования фреймворков
Пожалуй, это самый оптимальный и адекватный подход, если вы планируете создавать сложные агенты.
Под "сложными" я имею ввиду автономные агенты и команды агентов.
Автономный агент может сам принимать решения, что дальше делать в зависимости от ситуации. То есть это не фиксированная if-else логика.
Например, в аутриче важно фокусироваться на ценных лидах. Чем лучше подобраны лиды, тем больше эффективность кампаний.
У вас может быть главный агент ("мозг") и команда вспомогательных агентов, отвечающих за определенные задачи, такие как обогащение данных о лиде, скоринг и категоризация, написание писем, личных сообщений.
Главный агент может использовать вспомогательные агенты в зависимости от ценности лида. Особо ценный лид может быть передан в обработку нескольким аутрич-агентам (e-mail, личные сообщения), а менее ценный — только e-mail-аутрич-агенту. E-mail-агент может поменять текст следующего письма, если в личных сообщениях лид что-то написал другому агенту и контекст поменялся.
Суть тут в том, что решение принимается динамично за счет LLM. И еще нужен общий контекст между агентами, чтобы все это работало в унисон.
Фреймворки тут могут быть очень полезны, потому что в них реализованы инструменты для всего этого, и вам не придется изобретать необходимую логику с нуля. Также фреймворки поддерживают интеграции со многими сервисами, поэтому опять же надо меньше кода писать самому.
Примеры подобных фреймворков: AutoGen (Python), CrewAI (Python), LangChain (Python, Node.js).
3. Писать минимум кода и создавать ИИ-агентов в конструкторах.
Сейчас есть много, так называемых, "no-code" решений для создания ИИ-агентов. Тут большой набор вариантов, начиная от тех, что попроще (Zapier, make.com) и заканчивая более продвинутыми (n8n, pipedream).
Все эти платформы — это что-то вроде Scratch для взрослых.
Суть сводится к тому, что вы создаете нужный вам воркфлоу и настраиваете интеграции через интерфейс приложения.
Простые агенты можно создавать вообще без единой строчки кода. Сложные агенты скорее всего не получится реализовать из-за ограничений.
Тут максимум хайпа, потому что люди, не умеющие писать код, получили возможность ✨ творить ✨ .
---
Некая матрица принятия решения, как я это вижу
💡 Хочу построить простого агента или не умею кодить (тогда сложного агента создать не получится).
➡️ Использовать конструкторы.
💡 Хочу сложного агента и умею кодить на Python.
➡️ Юзать фреймворк или писать с нуля. Скорее всего юзать фреймворк более оправдано, потому что есть из чего выбрать.
💡 Хочу сложного агента и умею кодить на др. языках (например, Node.js)
➡️ Писать с нуля.