Операционка для агентов как AG2 превращает LLM в слаженную команду
Помните, как в прошлом году все носились с AutoGen от Microsoft? Идея была крутая: посадим несколько LLM в один чат, дадим им роли, и пусть они сами пишут код, проверяют его и исправляют ошибки. Проект нашумел, но в какой-то момент стал казаться тяжеловесным. На днях я наткнулся на AG2 — это, по сути, эволюция того самого AutoGen, которая теперь живет своей жизнью под крылом сообщества и готовится к релизу версии 1.0.
Интересно, что разработчики называют свой проект «AgentOS». Звучит громко, но если копнуть глубже, логика понятна. Вместо того чтобы писать простыню промптов для одной модели, вы строите систему, где задачи распределяются между виртуальными «сотрудниками». Один пишет код, второй — тестировщик, третий — менеджер, который общается с вами.
Что поменялось и зачем это нужно
Если вы пропустили ребрендинг, напомню: в ноябре 2024 года AutoGen переехал в организацию AG2AI. Теперь это полностью опенсорсный фреймворк с открытым управлением. Для нас как для разработчиков это значит меньше зависимости от корпоративных решений Microsoft и больше гибкости.
Главная проблема обычных чат-ботов — они быстро теряют нить в сложных задачах. AG2 решает это через оркестрацию. Вы можете настроить цепочку так, что агент-программист вообще не будет видеть ваши вопросы, а будет общаться только с агентом-ревьюером. Это отсекает лишний шум и заставляет модели работать точнее.
Попробуем в деле
Для запуска понадобится Python не ниже 3.10. Установка простая, но я советую ставить сразу с поддержкой OpenAI, так как на этих моделях агентские паттерны работают стабильнее всего.
pip install ag2[openai]
Самая удобная штука здесь — UserProxyAgent. Это агент, который представляет вас в системе. Он может сам выполнять код, который написал агент-помощник, в локальной папке или Docker-контейнере.
Вот базовый пример, как запустить связку из двух агентов:
from autogen import AssistantAgent, UserProxyAgent, LLMConfig
# Настройки берем из файла, чтобы не светить ключи в коде
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# ИИ-помощник
assistant = AssistantAgent("assistant", llm_config=llm_config)
# Ваш представитель, который умеет запускать код
user_proxy = UserProxyAgent(
"user_proxy",
code_execution_config={"work_dir": "coding", "use_docker": False}
)
# Поехали!
user_proxy.run(assistant, message="Напиши скрипт для парсинга курса валют с сайта ЦБ").process()
Три фишки, которые меня зацепили
1. Тандем кодера и ревьюера
В AG2 легко реализовать паттерн, где один агент пишет код, а другой его критикует. Причем критик не просто говорит «плохо», а дает советы. Это заставляет «кодера» переписывать функции до тех пор, пока они не станут идеальными. В моей практике такой подход на 30-40% снижает количество глупых синтаксических ошибок.
2. Человек в контуре (Human in the Loop)
Иногда страшно отдавать все на откуп нейронке, особенно если она собирается удалять файлы или слать API-запросы. С помощью UserProxyAgent можно настроить режим подтверждения. Агент подготовит план, покажет его вам, и пока вы не напишете «OK», работа не продолжится.
3. Инструменты и функции
Агенты в AG2 не ограничены только текстом. Их можно научить пользоваться вашими функциями. Например, можно написать Python-функцию, которая лезет во внутреннюю базу данных компании, и «подарить» её агенту. Он сам решит, когда её вызвать, чтобы получить нужные данные для отчета.
def get_stock_price(symbol: str) -> float:
# Здесь логика получения цены
return 150.0
# Регистрируем функцию как инструмент для агента
register_function(
get_stock_price,
caller=assistant,
executor=user_proxy,
description="Узнать цену акций по тикеру"
)
Как это устроено внутри
В основе всего лежит класс ConversableAgent. Это такой универсальный кирпичик, который умеет принимать сообщения, думать (делать вызов LLM) и отвечать. Из этих кирпичиков вы собираете архитектуру.
Разработчики предлагают несколько готовых паттернов:
- Group Chat: классический чат, где менеджер решает, чья сейчас очередь говорить.
- Sequential Chat: конвейер, где результат работы одного агента передается на вход следующему.
- Swarms: более сложная система, где агенты могут динамически передавать задачу друг другу в зависимости от нагрузки или компетенций.
Стоит ли внедрять сейчас?
Если вам нужно просто пересказать PDF-файл, AG2 — это стрельба из пушки по воробьям. Лучше взять что-то попроще. Но если вы строите сложный пайплайн, где нужно сначала собрать данные из трех источников, потом проанализировать их, написать отчет и отправить его в Slack — AG2 сэкономит вам недели разработки.
Сейчас проект находится на пути к версии 1.0. Это значит, что API может немного меняться (команда активно чистит старые методы), но зато документация становится человечнее, а количество примеров в репозитории build-with-ag2 растет каждый день.
Кому точно стоит заглянуть в репозиторий:
- Тем, кто устал от односложных ответов ChatGPT и хочет строить автономные системы.
- Командам, которым нужно внедрить LLM в рабочие процессы с сохранением контроля (тот самый Human-in-the-loop).
- Исследователям, работающим над многоагентными системами.
Лично я планирую покрутить их новые паттерны оркестрации в связке с локальными моделями через Ollama — кажется, для автоматизации рутины в небольших командах это идеальный вариант.
