К основному содержимому

AutoGen на VDS: мультиагентная система от Microsoft

AI-агенты на VDS · 19.04.2026 · 4 мин чтения
Иллюстрация к статье «AutoGen на VDS: мультиагентная система от Microsoft»

Что такое AutoGen?

AutoGen — фреймворк от Microsoft Research для создания мультиагентных систем. Агенты могут разговаривать между собой, писать и выполнять код, обращаться к внешним инструментам. Это особенно мощно для задач программирования и анализа данных.

Установка

pip install pyautogen

Два агента: программист и критик

import autogen

config = {
    "config_list": [{
        "model": "llama3.2",
        "base_url": "http://localhost:11434/v1",
        "api_key": "ollama"
    }]
}

# Агент-программист пишет код
coder = autogen.AssistantAgent(
    name="Coder",
    system_message="Ты опытный Python разработчик. Пиши чистый код.",
    llm_config=config
)

# Агент-пользователь запускает и проверяет
user = autogen.UserProxyAgent(
    name="User",
    human_input_mode="NEVER",
    code_execution_config={"work_dir": "/tmp/autogen"},
    max_consecutive_auto_reply=10
)

# Запуск диалога
user.initiate_chat(
    coder,
    message="Напиши Python скрипт для мониторинга использования RAM и CPU"
)

GroupChat — несколько агентов

groupchat = autogen.GroupChat(
    agents=[coder, user, reviewer],
    messages=[],
    max_round=10
)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=config)
user.initiate_chat(manager, message="Создай REST API для управления задачами")
Выполнение кода: AutoGen может запускать сгенерированный код автоматически. Запускайте в изолированном Docker-контейнере или с ограниченными правами.

Когда выбрать AutoGen?

  • Задачи кодирования и отладки
  • Автоматический анализ данных
  • Системы, где нужен диалог между агентами
  • Сложные многошаговые задачи с кодом

Частые ошибки при установке и запуске

Большинство проблем с AutoGen связаны не с самим кодом агентов, а с окружением: конфликтующими пакетами, недоступным Ollama или неверными путями для выполнения кода.

ModuleNotFoundError: No module named 'autogen'

Экосистема AutoGen в 2024 году разделилась: часть разработчиков продолжила проект под тем же именем, часть — под форком с отдельным названием на PyPI. Оба пакета используют одно и то же пространство имён import autogen, поэтому если в окружении случайно оказались установлены оба, второй пакет молча перезаписывает файлы первого, и старый код перестаёт находить нужные классы. Решение — держать в проекте только один из пакетов и фиксировать его версию в requirements.txt.

TimeoutError при обращении к локальной модели

requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=11434): Max retries exceeded

Эта ошибка означает, что AutoGen не может достучаться до Ollama по адресу из base_url. Проверьте, что служба запущена (systemctl status ollama), что модель из config_list действительно загружена (ollama list), и что порт 11434 не занят другим процессом.

AutoGen, CrewAI и LangChain: как выбрать фреймворк

Критерий AutoGen CrewAI LangChain
Модель общения агентов Свободный диалог, GroupChat Фиксированные роли и передача задач Явные цепочки и графы вызовов
Выполнение кода Встроенное, через UserProxyAgent Через отдельные инструменты Через инструменты и агент-исполнитель
Порог входа Средний, нужно понимать роли агентов Низкий, декларативное описание команды Выше, много абстракций
Где сильнее Кодогенерация и отладка Пошаговые бизнес-процессы Кастомные пайплайны и RAG

Если задача — не мультиагентный диалог, а конкретный пайплайн с чёткими шагами, обычно проще начать с LangChain или CrewAI, а AutoGen оставить для задач, где агентам действительно нужно писать и запускать код в диалоге друг с другом.

Когда AutoGen не подходит

  • Нужен предсказуемый, детерминированный пайплайн без произвольного числа раундов диалога — GroupChat может уйти в лишние итерации.
  • В продакшене нельзя выполнять сгенерированный код без ручной проверки — UserProxyAgent по умолчанию запускает код автоматически.
  • Команда не готова поддерживать изоляцию окружения выполнения (Docker или отдельный пользователь с ограниченными правами).
  • Задача решается одним вызовом модели без диалога между ролями — в этом случае прямой запрос к Ollama будет проще и дешевле по ресурсам.

Как проверить, что всё работает

python3 -c "import autogen; print(autogen.__version__)"
ollama list
systemctl status ollama --no-pager

Первая команда подтверждает, что пакет установлен и виден интерпретатору. Вторая показывает, какие модели реально загружены — имя в конфиге агента должно совпадать с одной из строк вывода. Третья проверяет, что служба Ollama активна и принимает соединения. Если диалог между агентами зависает без ответа, почти всегда причина в одном из этих трёх пунктов.

Стоит учитывать и нагрузку на ресурсы сервера: каждый раунд GroupChat — это отдельный вызов модели, и при большом числе участников время ответа растёт линейно вместе с числом раундов, а не остаётся постоянным. На VDS с ограниченным числом ядер CPU имеет смысл заранее выставить разумный max_round и следить за очередью запросов к Ollama, иначе диалог агентов может занять минуты вместо секунд.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке