ИИ-агенты. Первый шаги

Всем привет! Сегодня я хочу рассказать вам про то, как я начал внедрять в процесс разработки ИИ-агентов. Расскажу про трудности, с которыми я столкнулся и поделюсь своим небольшим опытом, полученным за последнюю неделю.

ИИ-агенты. Первый шаги

❓Что такое ИИ-агент? Я уже рассказывал, что такое нейронная сеть. И мы знаем, что LLM тоже нейронная сеть (Transfomer точнее). Однако, что из себя представляет ИИ-агент я понял только сейчас. ИИ-агент — это автономная программная система на базе больших языковых моделей (LLM, БЯМ), способная самостоятельно ставить цели, планировать многоступенчатые действия и использовать внешние инструменты для решения задач без постоянного участия человека. Основными компонентами ИИ-агента являются: 1Языковая модель (LLM), которая является мозгом агента, именно она генерирует шаги решения. Она выпускает мысли (reasoning traces) и указывает действия для выполнения. 2Инструменты (Tools) — внешние функции или API, которые агент может вызывать для получения информации или выполнения операций. Большинство ИИ-сред разработки (AI IDE) и ИИ-расширения для VS Code уже имеют встроенные инструменты для чтения и записи файлов, запуска команд в терминале и другие. Инструменты регистрируются с именами и описаниями на естественном языке, чтобы модель знала, как ими пользоваться. 3Исполнитель действий (Agent Executor) — принимает решение модели о действии, вызывает соответствующий инструмент и возвращает результат обратно модели. 4Состояние агента (State) — накопленная история диалога и действий. Сюда входит запрос пользователя, сообщения модели (мысли/действия) и наблюдения (результаты инструментов). Состояние постоянно обновляется по мере выполнения шагов. И важно, что это состояние передается полностью с каждым новым промтом. Таким образом, чем больше контекст, тем больше токенов тратиться с новым запросом. Чтобы минимизировать эту проблему существует механизм кэширования и сжатия контекста. ❓Какие AI-IDE, ИИ-расширения и модели использую я? Сразу скажу, что я только начинаю и делюсь своим путём. Поэтому то, что использую я, не обязательно будет лучшим и правильным. Для того, чтобы попробовать разные модели, а также не платить сразу 20+ долларов за подписку на ChatGPT и прочие модели, я решил пополнить баланс на $5 в OpenRouter. OpenRouter — это платформа-агрегатор, которая предоставляет единый универсальный API для доступа к множеству различных моделей искусственного интеллекта через один API-ключ. Для использования ИИ-агента я сначала решил использовать расширение Roo Code для VS Code, но с ним возникли трудности и я перешел на расширение Cline. Первой тестовой дешевой моделью была Qwen 2.5 Coder 32B Instruct, но с ней была проблема: она не поддерживала инструменты или поддерживает их не так, как надо Cline (скорее всего из-за конфликта XML и JSON). Наконец-то всё заработало с meta-llama/llama-3.3-70b-instruct. У неё копеечная стоимость на входной и выходной миллион токенов. Но мне она не сильно понравилась, об этом ниже. ⚡Как я организовал рабочее пространство? Первым делом я подумал о безопасности и решил, что агент будет работать только в Docker-контейнере. А доступ ему дам к папке в контейнере через расширение Remote ssh. Для ИИ-агента поднял следующий контейнер:

FROM python:3.12-slim RUN apt-get update && apt-get install -y \ openssh-server \ curl \ git \ docker.io \ docker-compose \ && rm -rf /var/lib/apt/lists/* RUN mkdir -p /var/run/sshd RUN echo 'root:pxi' | chpasswd RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config COPY ./PXILUM /PXILUM WORKDIR /PXILUM EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]

Тут мы подняли ssh сервер, создали пользователя и разрешили подключаться к нему по паролю. Однако, я хочу, чтоб он вёл разработку сам, используя контейнеризацию, поэтому я прокинул в его контейнер Unix-сокет демона Docker с хост-машины:

-v /var/run/docker.sock:/var/run/docker.sock

Благодаря этому он сможет создавать контейнеры на хосте, но это конечно небезопасно (root по сути дали), поэтому рекомендую работать с агентом на VPS. Команда для создания образа:

docker build -t pxilum_agents .

Команда для запуска контейнера:

docker run -d -p 2222:22 -v var/run/docker.sock:/var/run/docker.sock \ -v "${PWD}/PXILUM:/PXILUM" --name pxilum_sandbox pxilum_agents

Проброс порта не обязателен, но он нам позволяет подключиться по localhost:2222, а не вводить каждый раз новый IP. А также подключиться к контейнеру даже с другого устройства. После того, как мы подключились по ssh через расширение VS Code, заходим в нашу рабочую папку и нажимаем на расширение Cline, далее нужно нажать кнопку, которая установит это расширение внутрь нашего контейнера. Вставляем наш API-ключ от OpenRouter в настройках Cline, выбираем модель и можем писать первый промпт. Режим act не забываем, для удобство ставим авто подтверждение действий агента. Перед первым промтом я заранее создал другой моделью файлы agents.md и skills.md, но о них в следующий раз. ☄Мой первый опыт создания программного средства с помощью ИИ-агента Подводя итог хочу сказать, что первый блин всегда комом. Либо я написал плохой agents.md, либо модель не подходит для таких целей. Во-первых, она плохо написала requirements.txt, не указав версии (как следствие, проблема с зависимостями библиотек), из-за чего фастапи не поднялся (что видно по docker logs). Во-вторых, все переменные окружения написала прямо в docker-compose.yml, тем самым забив на безопасность. 💬В любом случае надо дальше копить опыт и улучшать свои навыки работы с агентами, за этими навыками будущее по моему мнению, но и не забывать ботать фундаментальные знания

11