{"id":5102,"library":"ag2","title":"AG2: Open-Source AgentOS for AI Agents","description":"AG2 (formerly AutoGen) is an open-source programming framework for building AI agents and facilitating cooperation among multiple agents to solve tasks. It provides fundamental building blocks to create, deploy, and manage AI agents, supporting various LLMs, tool use, autonomous and human-in-the-loop workflows, and multi-agent conversation patterns. The current version is 0.11.5 and it maintains a rapid release cadence with frequent updates and new features.","status":"active","version":"0.11.5","language":"python","source_language":"en","source_url":"https://github.com/ag2ai/ag2","tags":["AI","agents","multi-agent","LLM","framework","orchestration","tool-use"],"install":[{"cmd":"pip install \"ag2[openai]\"","lang":"bash","label":"Install with OpenAI support"},{"cmd":"pip install \"ag2[gemini,anthropic]\"","lang":"bash","label":"Install with multiple LLM providers"},{"cmd":"pip install ag2","lang":"bash","label":"Minimal installation (no LLM providers)"}],"dependencies":[{"reason":"Requires Python version >= 3.10 and < 3.14.","package":"python","optional":false},{"reason":"Required for OpenAI LLM integrations. Other providers (e.g., Gemini, Anthropic) require installing their respective extras.","package":"openai","optional":true}],"imports":[{"note":"The primary class for creating flexible, conversational AI agents.","symbol":"ConversableAgent","correct":"from autogen import ConversableAgent"},{"note":"Used to define the configuration for Language Model interactions.","symbol":"LLMConfig","correct":"from autogen import LLMConfig"},{"note":"For orchestrating conversations among multiple agents.","symbol":"GroupChat","correct":"from autogen import GroupChat"},{"note":"Manages the flow and speaker selection within a GroupChat.","symbol":"GroupChatManager","correct":"from autogen import GroupChatManager"},{"note":"The `autogen.beta` module introduces a redesigned agent framework, which will become the official `ag2` v1.0 API. While `from ag2 import Agent` might be seen in some older examples or specific contexts, the future-proof path is `autogen.beta.Agent`.","wrong":"from ag2 import Agent","symbol":"Agent (beta)","correct":"from autogen.beta import Agent"}],"quickstart":{"code":"import os\nfrom autogen import ConversableAgent, LLMConfig\n\n# Ensure your OpenAI API key is set as an environment variable\n# For example: export OPENAI_API_KEY=\"YOUR_API_KEY\"\n\nopenai_api_key = os.environ.get(\"OPENAI_API_KEY\", \"\")\n\nif not openai_api_key:\n    print(\"Error: OPENAI_API_KEY environment variable is not set.\")\n    exit()\n\nllm_config = LLMConfig(\n    {\n        \"api_type\": \"openai\",\n        \"model\": \"gpt-5-nano\",\n        \"api_key\": openai_api_key\n    }\n)\n\n# Create a poetic AI assistant\nmy_agent = ConversableAgent(\n    name=\"helpful_agent\",\n    system_message=\"You are a poetic AI assistant, respond in rhyme.\",\n    llm_config=llm_config,\n)\n\n# Run the agent with a prompt\nresponse = my_agent.run(\n    message=\"In one sentence, what's the big deal about AI?\",\n    max_turns=1, # Limit turns for a quick, non-interactive example\n    user_input=False, # Disable human input for automatic execution\n)\n\n# Print the agent's final response\nif response.chat_history:\n    print(response.chat_history[-1][\"content\"])\nelse:\n    print(\"No response generated.\")","lang":"python","description":"This quickstart initializes a `ConversableAgent` with an OpenAI LLM configuration and runs a single-turn conversation. It demonstrates basic agent creation and interaction, requiring the `OPENAI_API_KEY` environment variable to be set."},"warnings":[{"fix":"Monitor the official AG2 documentation and release roadmap for migration guides and adopt the `autogen.beta` API for new projects to ensure future compatibility.","message":"AG2 is transitioning from its original framework (autogen.agentchat) to a new, redesigned beta framework (autogen.beta) which will become the official v1.0. This will involve deprecations and architectural changes in upcoming minor versions (v0.12, v0.13, v0.14) before the beta becomes stable at v1.0. Users should plan for migration.","severity":"breaking","affected_versions":"0.11.x to 1.0"},{"fix":"Migrate from `GPTAssistantAgent` to `ConversableAgent`. For multi-agent orchestration, use the unified `GroupChat` pattern and its associated classes (`GroupChat`, `GroupChatManager`).","message":"The `GPTAssistantAgent` class is deprecated as of v0.12 and will be removed in v0.14. Similarly, the `Swarm` orchestration pattern (and related functions like `initiate_swarm_chat()`) has been deprecated since v0.9 in favor of the new `GroupChat` pattern.","severity":"deprecated","affected_versions":"0.9+, 0.12+"},{"fix":"Install AG2 with the appropriate extra for your desired LLM provider, e.g., `pip install \"ag2[openai]\"`, `\"ag2[gemini]\"`, `\"ag2[anthropic]\"`, etc.","message":"LLM provider packages are not installed by default with `pip install ag2`. Users must explicitly install them as extras (e.g., `pip install \"ag2[openai]\"`) for their chosen LLM provider to function.","severity":"gotcha","affected_versions":"0.8+"},{"fix":"Ensure any custom objects passed within `LLMConfig` implement the `__deepcopy__` method to support deep copying.","message":"The `LLMConfig` object uses `deepcopy` internally to prevent unintended modifications. If `llm_config` contains custom objects that do not implement a `__deepcopy__` method, it can lead to `TypeError`.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Review any custom shell command execution logic. Ensure that commands passed to `ShellExecutor` are properly sanitized and do not rely on `shell=True` behavior if not explicitly intended and secured.","message":"As of v0.11.4, `ShellExecutor` now uses `shell=False` with `shlex.split` to prevent shell command injection vulnerabilities. Previously, users might have inadvertently created insecure execution environments.","severity":"security","affected_versions":"0.11.4+"}],"env_vars":null,"last_verified":"2026-05-22T21:43:47.552Z","next_check":"2026-07-12T00:00:00.000Z","problems":[{"fix":"Install the 'ag2' package using pip: 'pip install ag2'.","cause":"The 'ag2' package is not installed in the Python environment.","error":"ModuleNotFoundError: No module named 'ag2'"},{"fix":"Upgrade 'ag2' to version 0.2.27 or higher: 'pip install --upgrade ag2'.","cause":"An older version of 'ag2' is incompatible with the OpenAI library version 1.21 or later.","error":"TypeError: Assistants.create() got an unexpected keyword argument 'file_ids'"},{"fix":"Ensure Docker is running, or disable Docker usage by setting 'use_docker' to 'False' in 'code_execution_config'.","cause":"AG2 agents attempt to execute code within a Docker container, but Docker is not running.","error":"Agents are throwing due to docker not running"},{"fix":"Ensure you have installed the correct package, `ag2`, and import classes directly from the `ag2` top-level module (or `autogen` if you are using an alias, after `pip install ag2`).\n```bash\npip install ag2\n```\nThen in your Python code:\n```python\nimport ag2\n# or, if you prefer the old alias, it should still work after installing ag2\nimport autogen \nfrom autogen import Agent, ConversableAgent\n```","cause":"This error occurs because the official package name for the AG2 library on PyPI is `ag2` (or historically `autogen-agentchat`, `pyautogen`), but users might attempt to import from a module named `autogen` which might not be installed or is a different, unofficial package.","error":"ModuleNotFoundError: No module named 'autogen'"},{"fix":"First, uninstall any potentially conflicting `autogen` or `pyautogen` packages, then install or upgrade to the official `ag2` package.\n```bash\npip uninstall autogen pyautogen autogen-agentchat # uninstall all conflicting packages\npip install --upgrade ag2\n```\nThen ensure your imports are correct, typically `from ag2 import Agent` or `import ag2 as autogen` followed by `autogen.Agent`.","cause":"This usually happens when an incorrect or outdated `autogen` package is installed (e.g., a stub package or an older version that doesn't expose the 'Agent' class directly under the `autogen` namespace) instead of the primary `ag2` package.","error":"AttributeError: module 'autogen' has no attribute 'Agent'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.13.0","cli_name":"","cli_version":null,"type":"library","homepage":"https://ag2.ai/","github":"https://github.com/ag2ai/ag2","docs":"https://docs.ag2.ai","changelog":null,"pypi":"https://pypi.org/project/ag2/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["llm-agents","ai-ml"],"base_url":null,"auth_type":null,"install_checks":{"last_tested":"2026-05-22","tag":null,"tag_description":null,"installed_version":"0.9.7","pypi_latest":"0.13.0","is_stale":true,"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":32.85,"mem_mb":275.8,"disk_size":"306.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.72,"mem_mb":36.3,"disk_size":"70.6M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.1,"mem_mb":26.5,"disk_size":"55.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":22.2,"import_time_s":12.91,"mem_mb":186.2,"disk_size":"304M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":9.2,"import_time_s":2.87,"mem_mb":36.3,"disk_size":"71M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.5,"import_time_s":1.53,"mem_mb":26.5,"disk_size":"56M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":27.3,"mem_mb":287.5,"disk_size":"342.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.24,"mem_mb":38.5,"disk_size":"77.4M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.5,"mem_mb":28.4,"disk_size":"60.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":20.1,"import_time_s":16.92,"mem_mb":206.9,"disk_size":"340M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.1,"import_time_s":3.91,"mem_mb":38.5,"disk_size":"78M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.3,"import_time_s":2.25,"mem_mb":28.4,"disk_size":"62M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":26.6,"mem_mb":282.8,"disk_size":"329.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.96,"mem_mb":38,"disk_size":"68.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.48,"mem_mb":28,"disk_size":"51.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":18,"import_time_s":16.97,"mem_mb":203.3,"disk_size":"327M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.4,"import_time_s":4,"mem_mb":38,"disk_size":"68M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.2,"import_time_s":2.4,"mem_mb":28,"disk_size":"53M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":25.04,"mem_mb":283.5,"disk_size":"326.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.88,"mem_mb":38.6,"disk_size":"67.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.38,"mem_mb":28.3,"disk_size":"51.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":18.2,"import_time_s":15.53,"mem_mb":202.3,"disk_size":"324M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.7,"import_time_s":3.77,"mem_mb":38.6,"disk_size":"68M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.3,"import_time_s":2.31,"mem_mb":28.3,"disk_size":"52M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":28.13,"mem_mb":270.8,"disk_size":"286.2M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":3.42,"mem_mb":37.8,"disk_size":"67.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":1.82,"mem_mb":27,"disk_size":"49.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"gemini,anthropic","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":24.3,"import_time_s":12.4,"mem_mb":183.8,"disk_size":"283M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"openai","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":10,"import_time_s":3.31,"mem_mb":37.8,"disk_size":"67M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"ag2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":8.1,"import_time_s":1.67,"mem_mb":27,"disk_size":"50M"}]},"_links":{"self":"https://checklist.day/api/registry/ag2","v1":"https://checklist.day/v1/registry/ag2","v1_install":"https://checklist.day/v1/registry/ag2/install","v1_imports":"https://checklist.day/v1/registry/ag2/imports","v1_compatibility":"https://checklist.day/v1/registry/ag2/compatibility","v1_quickstart":"https://checklist.day/v1/registry/ag2/quickstart","docs":"https://checklist.day/docs"}}