Если вы, как и я, тратите часы на сортировку резюме или сбор задач по разным доскам — добро пожаловать. Я расскажу, как за пару вечеров собрал AI-агентов, которые делают это за меня. Без магии — просто Make, n8n и немного здравого смысла.

Привет, Хабр! Меня зовут Василий Соломкин, я младший руководитель проектов в IBS. Управляю проектами разного профиля: нагрузочное тестирование, DevOps, внутренние проекты по разработке, юзабилити-тестирование и другие. Последние полгода активно изучаю искусственный интеллект, в первую очередь чтобы облегчить себе жизнь и оставить рутину за кадром. В этой статье расскажу про новое ответвление нейросетей — AI-агентов — и покажу собственные рабочие кейсы по автоматизации задач с их помощью. Сразу отмечу, что это именно мои кейсы — я разрабатывал их специально под свои задачи, и далеко не обязательно они покажутся вам актуальными именно для ваших задач. Но моя цель — показать, что ИИ можно использовать не только в формате чата, а создавать персональные автоматизации. Это просто, быстро и крайне полезно.

Что такое AI-агенты и зачем они нужны

AI-агент — это искусственный интеллект, которому дали доступ к конкретным инструментам и информации. В отличие от простого бота, который действует строго по заданному алгоритму, AI-агент обладает несравненно более высокой гибкостью и может проявлять почти человеческую креативность.

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

Еще одна фишка AI-агента — масштабируемость. Если расшарить его с командой, он будет выполнять для всех одну и ту же функцию и работать в едином контексте.

Обзор инструментов: во что «собирают» агентов

Для запуска AI-агента нужны три составляющие:

  1. Платформа для автоматизации: инструмент для визуальной автоматизации, который позволяет создавать сами процессы, связывать между собой различные системы посредством довольно простых интеграций и запускать все это по триггеру без необходимости писать код. Я указал две таких платформы — Make и n8n, но их в действительности больше.

  2. Большая языковая модель: мозг процесса, который будет обрабатывать информацию, генерировать идеи и выдавать результат. Я использую платный сервис, который за $10 предоставляет 1 млн токенов на ввод: это примерно 20 книг «Гарри Поттер и философский камень».

  3. Сервисы: программы и приложения, работу в которых нужно автоматизировать. На схеме выше я указал несколько инструментов, которыми пользуюсь сам: Trello, Google-таблицы, Telegram и другие, но вариантов может быть очень много. API-доступы к большинству популярных сервисов бесплатные.

Make vs n8n

Make и n8n — умные конструкторы, в которых можно собирать процессы из шагов-блоков. Каждый отдельный блок процесса называется нодой. Это какое-то определенное действие — например, получить письмо, сохранить файл или отправить сообщение в Telegram. Каждый процесс всегда начинается с триггера — ноды, которая запускает работу AI-агента. Это может быть, например, ручной запуск по клику или определенное событие в приложении.

Вот пример автоматизации планирования встреч в календаре по данным из Excel-таблицы, реализованной с помощью Make:

Make — максимально простая no-code-платформа, не требующая вообще никакого знания программного кода. Это идеальный вариант для знакомства с AI-агентами.

Рабочее пространство n8n выглядит чуть более сдержанно:

При этом n8n более гибкая. Платформа поддерживает 400+ интеграций и позволяет визуализировать более сложные логические процессы, правда, для этого могут потребоваться минимальные low-code-доработки. Впрочем, не думаю, что сегодня это может кого-то отпугнуть — написание простенького скрипта можно доверить тому же ИИ.

Платформа

Назначение

Доступность

Сложность

Make

No-code-сборка процессов

Бесплатно до 1000 операций в месяц

Легко

n8n

Low-code, open source, кастомные сценарии

Триал в облаке 14 дней, потом можно зарегистрировать новый аккаунт и перезалить свои автоматизации; другая опция — установить к себе на сервер и пользоваться бесплатно

Средне

А теперь самое интересное: покажу два собственных кейса по автоматизации рутины с помощью n8n.

Кейс № 1: AI в подборе кандидатов

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

Автоматизацию по подбору специалистов можно разделить на два этапа, два отдельных процесса. Первый — это подготовка данных из резюме. Второй — обработка этих данных AI-агентом. Эти этапы реализуются в двух разных пространствах. В моем примере они названы соответственно «hr agent - vector store» и «AI agent (HR)».

Открываем первое пространство. По сути, это пустая доска для отрисовки схемы процесса. Чтобы создать триггер, нажимаем на плюс.

В выпадающем списке много вариантов: запуск по таймеру, по вызову вебхука, по заполнению формы и т. д. Выбираем «Trigger manually» — процесс будет запускаться при нажатии на кнопку.

После этого можно начинать добавлять различные приложения и сервисы, которые потребуются для конкретной задачи. Нажимаем на «Action in an app» — и появляется огромное количество различных сервисов для привязки.

Нам нужно подвязать заранее созданную Google-таблицу с двумя столбцами: имя кандидата и ссылка на резюме, которое лежит на Google Disk в формате PDF.

Важно! Чтобы не загружать в стороннее облако конфиденциальную информацию, любые персональные данные нужно сначала обезличить. Например, в работе с резюме я зашифровал ФИО кандидатов кодовыми названиями, а локально у себя на компьютере сделал мэппинг кодов и реальных имен.

Выбираем из списка предлагаемых сервисов Google Sheets и видим варианты возможных действий.

При выборе действия открывается окно с настройками. В поле «Credentials to connect with» проходим авторизацию, после чего в список документов подтягиваются все таблицы, которые хранятся в личном аккаунте Google.

Суть процесса подготовки данных — превратить резюме в векторный формат, с которым привык работать ИИ, и положить в специализированную векторную базу данных для дальнейшего использования. Первый шаг — выдернуть данные из таблицы (Operation: Get Rows). Далее — подвязать Google Drive, чтобы скачать PDF с резюме для дальнейшей обработки.

JSON-запрос решается простым drag-and-drop. Чтобы скачались все резюме, а не только один файл, нужно зажать слева ссылку и перетащить в поле «File» — она автоматически преобразуется в корректный JSON.

Теперь из этих PDF-файлов нам нужно извлечь текст. Для этого используем инструмент «Extract from File».

Помимо текстов резюме, у нас автоматически подгрузилось много лишней информации: номера страниц, версии и метаданные. Чтобы не засорять нашу векторную базу, используем ноду «Edit Fields». Так же с помощью drag-and-drop указываем значения данных, которые автоматически преобразуются в JSON-запрос.

Следующий шаг обработки — превратить полученный текст в векторный формат. Для этой цели я использую сервис Pinecone Vector Store, но вы можете использовать любой другой.

Добавляем большую языковую модель для создания векторов — эмбеддингов. Я выбираю Embeddings OpenAI. Здесь особых настроек не требуется. Достаточно указать API-ключ от OpenAI-аккаунта и выбрать модель.

Следующий элемент — загрузчик данных. Он определяет, какие именно данные мы грузим («Load All Input Data»), и позволяет осуществить разметку метаданных.

Зачем это нужно? Когда мы переводим данные из текста в векторный формат, мы дробим наш текст на кусочки. Размер этих кусочков можно определить самостоятельно. Чем он меньше, тем быстрее будет скорость обработки. Но при этом если, например, имя кандидата указано в самом верху резюме один раз и больше не повторяется, то ИИ может «забыть», что следующие кусочки текста относятся к тому же самому человеку. Чтобы не сбить AI-агента с толку, можно использовать метаданные как некие теги, которые размечают информацию. В нашем случае этими тегами будут: ссылка на резюме, имя и номер строки из таблицы.

Последний инструмент подготовки данных — Recursive Character Text Splitter, который определяет, на какие именно кусочки дробить наши векторные данные. Их размеры тоже можно задать вручную.

На этом подготовка данных для AI-агента окончена. Вот как выглядит полный workflow.

Переходим к workflow самой автоматизации на другой доске. Здесь все намного проще. Требуется только две ноды и несколько инструментов.

Первая нода — триггер — получение сообщения с требованиями заказчика к специалисту во встроенном чате. Вторая нода — привязка AI-агента.

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

  • Chat Model: LLM-модель, которая будет анализировать наши данные.

  • Memory: контекст общения с ИИ; для простых задач достаточно встроенной «Simple Memory».

  • Tool: инструменты, с которыми будет работать AI-агент; в нашем случае привязываем векторное хранилище Pinecone Vector Store.

К Pinecone Vector Store также необходимо подключить Embeddings OpenAI, то есть инструмент, который будет обратно из векторного формата переводить данные в текст.

Автоматизация готова.

Спойлер: как правило, когда вы создаете свою первую автоматизацию, она не работает. Но в n8n есть прекрасная функция «Test Step» и свой внутренний искусственный интеллект, который расписывает возникшие ошибки и предлагает решения.

Пробуем запустить AI-агента и спустя примерно 30 секунд получаем результат.

AI-агент посчитал, что самые подходящие кандидаты на роль QA Manual — это Романенко Роман, Сергиенко Сергей, Антонов Антон и Василенко Василий (имена вымышленные, все совпадения случайны:) Это значит, что я начну отбор именно с этих четырех ребят. Если меня заинтересуют какие-то конкретные аспекты их резюме, я смогу задать AI-агенту уточняющие вопросы — и он подскажет, сэкономив мне еще немного времени.

Кейс № 2. Отчеты по задачам из Trello

Как устроен n8n я показал выше, так что про этот кейс расскажу по верхам.

Я использую Trello для личных рабочих задач, которые не могу трекать в командной Jira. Идея автоматизации простая: сделать так, чтобы ИИ оценивал список моих дел и выдавал некую сводку — что «горит», что нужно сделать в первую очередь и тому подобное.

Workflow такой. Чат-бот в Telegram, который срабатывает по таймеру, запускает в n8n процесс выгрузки и записи в таблицу всех моих задач из Trello. AI-агент анализирует задачи, обрабатывая их по системному промпту и направляет мне ответ обратно, через того же Telegram-бота.

На схеме это выглядит следующим образом.

В качестве второй ноды я добавил простую авторизацию (проверку совпадения никнейма), чтобы случайные люди не получили доступ к моим задачам из Trello, случайно наткнувшись на чат-бот.

Поскольку AI-агент не может обрабатывать сырые данные из таск-менеджера, сперва нужно выгрузить их в таблицу.

К вопросу о том, что с первого раза автоматизация обычно не срабатывает: здесь я столкнулся с тем, что данные в таблице не заменялись при обновлении информации в Trello. Мое решение: просто первым шагом всегда чистить таблицу перед тем, как загрузить новые данные. Для этого я использовал функцию Delete Rows.

Далее — три шага работы с Trello: получить нужную доску (Get Board), получить колонки с задачами (Get Many), получить карточки с задачами (Get Cards).

Следующая нода — добавить или обновить строки. Выбираем созданную ранее таблицу и производим через уже знакомый принцип drag-and-drop мэппинг колонок по определенному значению, в данном случае — по ID карточек.

На этом этапе я обнаружил еще одну проблему: если напрямую подключить таблицу к AI-агенту, то он будет получать на вход не одну сущность, а то количество сущностей, которые соответствуют количеству строк в моей таблице. Другими словами, он пытается дать ответ на каждую отдельно взятую строчку, из-за этого очень долго работает и потом выдает миллиард ошибок. Чтобы это исправить, я добавил ноду агрегирования данных — из таблицы в одно общее полотно текста.

Осталось только подключить AI-агента и заслать его ответ обратно в Telegram. Вот результат.

Если вы хотите погрузиться в тему поглубже, можно начать с бесплатных обучающих материалов n8n и Make — в них даже есть шаблоны различных процессов. Но вообще я бы советовал просто потестить эти платформы своими руками. Это тот случай, когда дизайн действительно «интуитивно понятный» и максимально user friendly.

Комментарии (0)