by AG2 Community Python 3.9+, OpenAI, Azure, Gemini, Anthropic, Ollama
Мультиагентный фреймворк для создания систем, где несколько LLM-агентов ведут диалог и совместно решают задачи. Поддерживает человека в цикле (human-in-the-loop), выполнение кода в изолированной среде, групповой чат агентов, вложенный чат и плановые агенты с саморефлексией. AG2 — активно развиваемый форк оригинального Microsoft AutoGen с расширенным API.
# pip (AG2 — активно поддерживаемый форк)
pip install ag2
# Или оригинальный пакет Microsoft
pip install pyautogen
# С поддержкой Docker-санбокса для выполнения кода
pip install 'ag2[docker]'
# С поддержкой всех LLM-провайдеров
pip install 'ag2[openai,anthropic,gemini,ollama]'
# Пример: два агента решают задачу
from autogen import AssistantAgent, UserProxyAgent
assistant = AssistantAgent(
name="assistant",
llm_config={"model": "gpt-4o-mini", "api_key": "YOUR_KEY"}
)
user_proxy = UserProxyAgent(
name="user_proxy",
human_input_mode="NEVER",
code_execution_config={"work_dir": "coding", "use_docker": False}
)
user_proxy.initiate_chat(
assistant,
message="Write a Python script that finds prime numbers up to 100"
)
📚 Документация | 💡 Примеры | 🤝 Участие в разработке | 📝 Цитировать статью | 💬 Присоединиться к Discord
AG2 эволюционировал из AutoGen. Полностью с открытым исходным кодом. Мы приглашаем сотрудников из всех организаций к участию.
[!IMPORTANT] AG2 находится на пути к версии 1.0. Руководимый протоколом фреймворк теперь является пакетом верхнего уровня, импортируемым как
ag2. Классический фреймворк (ConversableAgent,GroupChat, …) был удален, и имя импортаautogenбольше недоступно — используйтеimport ag2.
AG2 (ранее AutoGen) — это открытый программный фреймворк для создания ИИ-агентов и содействия сотрудничеству между несколькими агентами для решения задач. AG2 направлен на упрощение разработки и исследования агентного ИИ. Он предлагает такие функции, как агенты, способные взаимодействовать друг с другом, поддержка различных больших языковых моделей (LLM) и использования инструментов, автономные и рабочие процессы с участием человека, а также модели многоагентных разговоров.
В настоящее время проект поддерживается динамичной группой волонтёров из нескольких организаций. Свяжитесь с администраторами проекта Чжи Ваном и Цинюнь Ву по адресу support@ag2.ai, если вы заинтересованы в том, чтобы стать ответственным за поддержку.
Для пошагового изучения концепций и кода AG2 см. Основные концепции в нашей документации.
Для AG2 требуется версия Python >= 3.10. AG2 доступен как ag2 на PyPI.
Windows/Linux:
pip install ag2[openai]
Mac:
pip install 'ag2[openai]'
По умолчанию устанавливаются минимальные зависимости. Вы можете установить дополнительные опции в зависимости от нужных вам функций.
Чтобы ваши зависимости от LLM были чистыми и случайно не загрузить код с вашим ключом API, мы рекомендуем хранить ключи в файле конфигурации.
В наших примерах мы используем файл с именем OAI_CONFIG_LIST для хранения ключей API. Вы можете выбрать любое имя файла, но убедитесь, что он добавлен в .gitignore, чтобы он не был отправлен в управление исходным кодом.
Вы можете использовать следующий шаблон в качестве основы:
[
{
"model": "gpt-5",
"api_key": "<your OpenAI API key here>"
}
]
Создайте скрипт или Jupyter Notebook и запустите вашего первого агента.
from ag2 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="Summarize the main differences between Python lists and tuples.").process()
Мы поддерживаем отдельный репозиторий с широким спектром приложений, чтобы помочь вам начать работу с различными вариантов использования, или ознакомьтесь с нашей коллекцией Jupyter-блокнотов в качестве отправной точки.
В AG2 есть несколько понятий агентов, которые помогут вам построить ваших ИИ-агентов. Здесь мы представляем наиболее распространенные из них.
ConversableAgent является фундаментальным строительным блоком AG2, разработанным для обеспечения бесперебойного взаимодействия между ИИ-сущностями. Этот базовый тип агента обрабатывает обмен сообщениями и генерацию ответов, служа базовым классом для всех агентов во фреймворке.
Начнем с простого примера, где два агента сотрудничают: - Агент-программист, который пишет код на Python. - Агент-рецензент, который критикует код, не переписывая его.
import logging
from ag2 import ConversableAgent, LLMConfig
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# Load LLM configuration
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# Define agents
coder = ConversableAgent(
name="coder",
system_message="You are a Python developer. Write short Python scripts.",
llm_config=llm_config,
)
reviewer = ConversableAgent(
name="reviewer",
system_message="You are a code reviewer. Analyze provided code and suggest improvements. "
"Do not generate code, only suggest improvements.",
llm_config=llm_config,
)
# Start a conversation
response = reviewer.run(
recipient=coder, message="Write a Python function that computes Fibonacci numbers.", max_turns=10
)
response.process()
logger.info("Final output:\n%s", response.summary)
AG2 обеспечивает сложное многоагентное сотрудничество через гибкие паттерны оркестрации, позволяя вам создавать динамические системы, где специализированные агенты работают вместе для решения сложных задач.
Вот как создать команду агентов учителя, планировщика уроков и рецензента, которые работают вместе для разработки плана урока:
import logging
from ag2 import ConversableAgent, LLMConfig
from ag2.agentchat import run_group_chat
from ag2.agentchat.group.patterns import AutoPattern
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# Определение планировщика и рецензента уроков
planner_message = "Ты планировщик уроков в классе. По заданной теме составь план урока для четвероклассников."
reviewer_message = (
"Ты рецензент уроков в классе. Сравни план с учебной программой и предложи до 3 улучшений."
)
lesson_planner = ConversableAgent(
name="planner_agent",
system_message=planner_message,
description="Создает или пересматривает планы уроков.",
llm_config=llm_config,
)
lesson_reviewer = ConversableAgent(
name="reviewer_agent",
system_message=reviewer_message,
description="Предоставляет один раунд обратной связи по планам уроков.",
llm_config=llm_config,
)
teacher_message = "Ты учитель в классе. Ты определяешь темы и сотрудничаешь с планировщиком и рецензентом для финализации планов уроков. Когда доволен результатом, выведи DONE!"
teacher = ConversableAgent(
name="teacher_agent",
system_message=teacher_message,
is_termination_msg=lambda x: "DONE!" in (x.get("content", "") or "").upper(),
llm_config=llm_config,
)
auto_selection = AutoPattern(
agents=[teacher, lesson_planner, lesson_reviewer],
initial_agent=lesson_planner,
group_manager_args={"name": "group_manager", "llm_config": llm_config},
)
response = run_group_chat(
pattern=auto_selection,
messages="Давайте познакомим наших детей с Солнечной системой.",
max_rounds=20,
)
response.process()
logger.info("Конечный вывод:\n%s", response.summary)
Человеческий контроль часто необходим для валидации или направления выводов ИИ.
AG2 предоставляет UserProxyAgent для бесшовной интеграции человеческой обратной связи.
Здесь мы расширяем пример учителя–планировщика–рецензента, вводя агент-человек, который валидирует финальный урок:
import logging
from ag2 import ConversableAgent, LLMConfig, UserProxyAgent
from ag2.agentchat import run_group_chat
from ag2.agentchat.group.patterns import AutoPattern
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# Те же агенты, что и ранее, но теперь валидатор-человек будет передавать управление планировщику, который проверит наличие "APPROVED" и завершит работу
planner_message = "Ты планировщик уроков в классе. По заданной теме составь план урока для четвероклассников."
reviewer_message = (
"Ты рецензент уроков в классе. Сравни план с учебной программой и предложи до 3 улучшений."
)
teacher_message = "Ты опытный учитель в классе. Ты не готовишь планы, ты даешь простые указания планировщику для подготовки плана урока по ключевой теме."
lesson_planner = ConversableAgent(
name="planner_agent",
system_message=planner_message,
description="Создает или пересматривает планы уроков перед их проверкой.",
is_termination_msg=lambda x: "APPROVED" in (x.get("content", "") or "").upper(),
human_input_mode="NEVER",
llm_config=llm_config,
)
lesson_reviewer = ConversableAgent(
name="reviewer_agent",
system_message=reviewer_message,
description="Предоставляет один раунд обратной связи по планам уроков обратно планировщику перед обращением к валидатору-человеку.",
llm_config=llm_config,
)
teacher = ConversableAgent(
name="teacher_agent",
system_message=teacher_message,
description="Предоставляет направление по теме и содержанию, если требуется.",
llm_config=llm_config,
)
human_validator = UserProxyAgent(
name="human_validator",
system_message="Ты человек-педагог, который дает финальное одобрение планам уроков.",
description="Оценивает предложенный план урока и либо одобряет его, либо запрашивает правки, затем возвращает управление планировщику.",
)
auto_selection = AutoPattern(
agents=[teacher, lesson_planner, lesson_reviewer],
initial_agent=teacher,
user_agent=human_validator,
group_manager_args={"name": "group_manager", "llm_config": llm_config},
)
response = run_group_chat(
pattern=auto_selection,
messages="Давайте познакомим наших детей с Солнечной системой.",
max_rounds=20,
)
response.process()
logger.info("Конечный вывод:\n%s", response.summary)
Агенты получают значительную функциональность через инструменты (tools), которые расширяют их возможности за счет внешних данных, API или функций.
import logging
from datetime import datetime
from typing import Annotated
from ag2 import ConversableAgent, register_function, LLMConfig
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")
# Инструмент: возвращает день недели для заданной даты
def get_weekday(date_string: Annotated[str, "Формат: YYYY-MM-DD"]) -> str:
date = datetime.strptime(date_string, "%Y-%m-%d")
return date.strftime("%A")
date_agent = ConversableAgent(
name="date_agent",
system_message="Ты находишь день недели для заданной даты.",
llm_config=llm_config,
)
executor_agent = ConversableAgent(
name="executor_agent",
human_input_mode="NEVER",
llm_config=llm_config,
)
# Регистрация инструмента
register_function(
get_weekday,
caller=date_agent,
executor=executor_agent,
description="Получить день недели для заданной даты",
)
# Использование инструмента в чате
chat_result = executor_agent.initiate_chat(
recipient=date_agent,
message="Я родился 1995-03-25, какой это был день?",
max_turns=2,
)
logger.info("Конечный вывод:\n%s", chat_result.chat_history[-1]["content"])
AG2 поддерживает более продвинутые концепции, чтобы помочь вам создавать рабочие процессы ваших ИИ-агентов. Больше информации вы можете найти в документации.
🔥 🎉 11 ноября 2024: Мы развиваем AutoGen в AG2! Создана новая организация AG2AI для разработки AG2 и связанных проектов с открытым управлением. Ознакомьтесь с новым обликом AG2.
📄 Лицензия: Мы adoptируем лицензию Apache 2.0 начиная с версии v0.3. Это укрепляет наши commitments к открытому сотрудничеству, обеспечивая при этом дополнительную защиту как для контрибьюторов, так и для пользователей.
🎉 29 мая 2024: DeepLearning.ai запустил новый короткий курс AI Agentic Design Patterns with AutoGen, созданный в сотрудничестве с Microsoft и Penn State University, и преподаваемый создателями AutoGen Chi Wang и Qingyun Wu.
🎉 24 мая 2024: Foundation Capital опубликовал статью на Forbes: The Promise of Multi-Agent AI и видео AI in the Real World Episode 2: Exploring Multi-Agent AI and AutoGen with Chi Wang.
🎉 17 апреля 2024: Andrew Ng процитировал AutoGen в рассылке The Batch и на What's next for AI agentic workflows в Sequoia Capital's AI Ascent (26 марта).
Этот проект использует хуки prek для поддержания качества кода. Перед вкладом:
pip install prek
prek install
prek run --all-files
AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation
EcoOptiGen: Hyperparameter Optimization for Large Language Model Generation Inference
MathChat: Converse to Tackle Challenging Math Problems with LLM Agents
AgentOptimizer: Offline Training of Language Model Agents with Functions as Learnable Weights
StateFlow: Enhancing LLM Task-Solving through State-Driven Workflows
@software{AG2_2024,
author = {Chi Wang and Qingyun Wu and the AG2 Community},
title = {AG2: Open-Source AgentOS for AI Agents},
year = {2024},
url = {https://github.com/ag2ai/ag2},
note = {Available at https://docs.ag2.ai/},
version = {latest}
}
Проект лицензирован в соответствии с Лицензией Apache, версия 2.0 (Apache-2.0).
Этот проект является форком AutoGen и содержит код под двумя лицензиями:
Оригинальный код из https://github.com/microsoft/autogen лицензирован по MIT License. Подробности см. в файле LICENSE_original_MIT.
Модификации и дополнения, внесенные в этот форк, лицензированы по Лицензии Apache, версия 2.0. Полный текст лицензии см. в файле LICENSE.
Мы задокументировали эти изменения для ясности и обеспечения прозрачности перед нашим сообществом пользователей и участников. Для получения дополнительной информации см. файл NOTICE.