Неделю назад я говорил, что выпиливаю из AG2 весь легаси и готовлю фреймворк к выходу из беты. Так вот, этот час настал: первая бета AG2 1.0 вышла🎉
Классика (тот самый AutoGen) уехала в ag2-classic и живет в maintenance-режиме - у тех, кто на ней в проде, ничего не ломается. А `
pip install ag2` теперь ставит полностью новый фреймворк: все, что мы строили в `autogen.beta` (и о чем я вам регулярно рассказывал), стало основным API.Зачем еще один фреймворк, когда есть LangChain / CrewAI / PydanticAI?
Мой ответ - протоколы вместо абстракций. Отсюда все остальное:
• Маленький публичный API на протоколах - поверх него строятся все фичи фреймворка. Меньше поверхность - предсказуемее поведение. А еще можно воткнуть свои реализации на что угодно
• Агенты stateless - состояние вынесено наружу, поэтому поведение агента можно точно контролировать и воспроизводить
• Акторная модель исполнения - все части фреймворка построены на событиях: любое можно перехватить и изменить, повесить свой обработчик, а то и построить логику поверх кастомных событий. Это другой уровень гибкости инструмента
• Лучший DI - хуков много, и везде доступны и зависимости, и контекст управления:
Depends, Inject, Variable. Даже ваш любимый dishka поддерживается🌚• Все необходимое на месте - поддержка Skills, сабагентов, динамических и бекграунд агентов, память, Shell и Coding инструменты... Написать свой Hermes можно в 10 строчек😎
• Открытые протоколы на все случаи жизни - фронтенд через AG-UI, мультиагенты через A2A, MCP, A2UI. Можно даже оркестрировать Claude Code-агентов через ACP
• Нормальные мидлвари - через них уже реализовано многое: сжатие контекста, OpenTelemetry и тд
Минимальный агент выглядит так:
from ag2 import Agent
from ag2.config import OpenAIConfig
agent = Agent(
"assistant",
prompt="You are a helpful assistant.",
config=OpenAIConfig("gpt-4o-mini"),
)
# Start a new conversation
reply = await agent.ask("Give me one sentence about AG2.")
print(reply.body)
# Continue the exact same conversation context
next_turn = await reply.ask("Now make it shorter.")
print(next_turn.body)
Фреймворк получился в моем стиле: экстремальная гибкость - реализовать можно что угодно, но на стандартные кейсы есть стандартные батарейки.
Финальный 1.0 - по плану, середина июля. Если вы еще выбираете, на чем писать агентов - идеальный момент потыкать бету и принести нам issues, пока API не заморожен😅
#Agents #opensource