Що таке 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?
- Задачі кодування та налагодження
- Автоматичний аналіз даних
- Системи, де потрібен діалог між агентами
- Складні багатокрокові задачі з кодом
Часті помилки під час встановлення та запуску
Більшість проблем з 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, інакше діалог агентів може зайняти хвилини замість секунд.