diff --git a/python/packages/autogen-agentchat/src/autogen_agentchat/agents/_code_executor_agent.py b/python/packages/autogen-agentchat/src/autogen_agentchat/agents/_code_executor_agent.py index 3d55ff154..407709637 100644 --- a/python/packages/autogen-agentchat/src/autogen_agentchat/agents/_code_executor_agent.py +++ b/python/packages/autogen-agentchat/src/autogen_agentchat/agents/_code_executor_agent.py @@ -31,7 +31,7 @@ class CodeExecutorAgent(BaseChatAgent): Follow the installation instructions for `Docker `_. In this example, we show how to set up a `CodeExecutorAgent` agent that uses the - :py:class:`~autogen_ext.code_executors.DockerCommandLineCodeExecutor` + :py:class:`~autogen_ext.code_executors.docker.DockerCommandLineCodeExecutor` to execute code snippets in a Docker container. The `work_dir` parameter indicates where all executed files are first saved locally before being executed in the Docker container. .. code-block:: python @@ -39,7 +39,7 @@ class CodeExecutorAgent(BaseChatAgent): import asyncio from autogen_agentchat.agents import CodeExecutorAgent from autogen_agentchat.messages import TextMessage - from autogen_ext.code_executors import DockerCommandLineCodeExecutor + from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor from autogen_core import CancellationToken diff --git a/python/packages/autogen-core/docs/src/packages/index.md b/python/packages/autogen-core/docs/src/packages/index.md index 0a1cd2eb8..5a66ef6cd 100644 --- a/python/packages/autogen-core/docs/src/packages/index.md +++ b/python/packages/autogen-core/docs/src/packages/index.md @@ -67,8 +67,8 @@ pip install 'autogen-ext==0.4.0.dev8' Extras: - `langchain` needed for {py:class}`~autogen_ext.tools.LangChainToolAdapter` -- `azure` needed for {py:class}`~autogen_ext.code_executors.ACADynamicSessionsCodeExecutor` -- `docker` needed for {py:class}`~autogen_ext.code_executors.DockerCommandLineCodeExecutor` +- `azure` needed for {py:class}`~autogen_ext.code_executors.azure.ACADynamicSessionsCodeExecutor` +- `docker` needed for {py:class}`~autogen_ext.code_executors.docker.DockerCommandLineCodeExecutor` - `openai` needed for {py:class}`~autogen_ext.models.OpenAIChatCompletionClient` [{fas}`circle-info;pst-color-primary` User Guide](/user-guide/extensions-user-guide/index.md) | [{fas}`file-code;pst-color-primary` API Reference](/reference/python/autogen_ext.agents.web_surfer.rst) | [{fab}`python;pst-color-primary` PyPI](https://pypi.org/project/autogen-ext/0.4.0.dev8/) | [{fab}`github;pst-color-primary` Source](https://github.com/microsoft/autogen/tree/main/python/packages/autogen-ext) diff --git a/python/packages/autogen-core/docs/src/user-guide/core-user-guide/cookbook/tool-use-with-intervention.ipynb b/python/packages/autogen-core/docs/src/user-guide/core-user-guide/cookbook/tool-use-with-intervention.ipynb index a46ccdfbc..47b59ac67 100644 --- a/python/packages/autogen-core/docs/src/user-guide/core-user-guide/cookbook/tool-use-with-intervention.ipynb +++ b/python/packages/autogen-core/docs/src/user-guide/core-user-guide/cookbook/tool-use-with-intervention.ipynb @@ -37,7 +37,7 @@ ")\n", "from autogen_core.components.tools import PythonCodeExecutionTool, ToolSchema\n", "from autogen_core.tool_agent import ToolAgent, ToolException, tool_agent_caller_loop\n", - "from autogen_ext.code_executors import DockerCommandLineCodeExecutor\n", + "from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor\n", "from autogen_ext.models import OpenAIChatCompletionClient" ] }, diff --git a/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/command-line-code-executors.ipynb b/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/command-line-code-executors.ipynb index 152079594..2a0ea31c3 100644 --- a/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/command-line-code-executors.ipynb +++ b/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/command-line-code-executors.ipynb @@ -56,7 +56,7 @@ "\n", "from autogen_core import CancellationToken\n", "from autogen_core.code_executor import CodeBlock\n", - "from autogen_ext.code_executors import DockerCommandLineCodeExecutor\n", + "from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor\n", "\n", "work_dir = Path(\"coding\")\n", "work_dir.mkdir(exist_ok=True)\n", diff --git a/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/tools.ipynb b/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/tools.ipynb index d8ea48c63..4e90cc5f2 100644 --- a/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/tools.ipynb +++ b/python/packages/autogen-core/docs/src/user-guide/core-user-guide/framework/tools.ipynb @@ -45,7 +45,7 @@ "source": [ "from autogen_core import CancellationToken\n", "from autogen_core.components.tools import PythonCodeExecutionTool\n", - "from autogen_ext.code_executors import DockerCommandLineCodeExecutor\n", + "from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor\n", "\n", "# Create the tool.\n", "code_executor = DockerCommandLineCodeExecutor()\n", diff --git a/python/packages/autogen-ext/src/autogen_ext/code_executors/__init__.py b/python/packages/autogen-ext/src/autogen_ext/code_executors/__init__.py deleted file mode 100644 index ab7dc8a9b..000000000 --- a/python/packages/autogen-ext/src/autogen_ext/code_executors/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from ._azure_container_code_executor import ACADynamicSessionsCodeExecutor, TokenProvider -from ._docker_code_executor import DockerCommandLineCodeExecutor - -__all__ = ["DockerCommandLineCodeExecutor", "TokenProvider", "ACADynamicSessionsCodeExecutor"] diff --git a/python/packages/autogen-ext/src/autogen_ext/code_executors/azure/__init__.py b/python/packages/autogen-ext/src/autogen_ext/code_executors/azure/__init__.py new file mode 100644 index 000000000..33c79b0f2 --- /dev/null +++ b/python/packages/autogen-ext/src/autogen_ext/code_executors/azure/__init__.py @@ -0,0 +1,3 @@ +from ._azure_container_code_executor import ACADynamicSessionsCodeExecutor, TokenProvider + +__all__ = ["TokenProvider", "ACADynamicSessionsCodeExecutor"] diff --git a/python/packages/autogen-ext/src/autogen_ext/code_executors/_azure_container_code_executor.py b/python/packages/autogen-ext/src/autogen_ext/code_executors/azure/_azure_container_code_executor.py similarity index 98% rename from python/packages/autogen-ext/src/autogen_ext/code_executors/_azure_container_code_executor.py rename to python/packages/autogen-ext/src/autogen_ext/code_executors/azure/_azure_container_code_executor.py index c54d7c54c..9cb91f1de 100644 --- a/python/packages/autogen-ext/src/autogen_ext/code_executors/_azure_container_code_executor.py +++ b/python/packages/autogen-ext/src/autogen_ext/code_executors/azure/_azure_container_code_executor.py @@ -23,7 +23,7 @@ from autogen_core.code_executor import ( ) from typing_extensions import ParamSpec -from ._common import build_python_functions_file, get_required_packages, to_stub +from .._common import build_python_functions_file, get_required_packages, to_stub if TYPE_CHECKING: from azure.core.credentials import AccessToken @@ -47,7 +47,11 @@ class ACADynamicSessionsCodeExecutor(CodeExecutor): .. note:: - This class requires the :code:`azure` extra for the :code:`autogen-ext` package. + This class requires the :code:`azure` extra for the :code:`autogen-ext` package: + + .. code-block:: bash + + pip install 'autogen-ext[azure]==0.4.0.dev7' **This will execute LLM generated code on an Azure dynamic code container.** diff --git a/python/packages/autogen-ext/src/autogen_ext/code_executors/docker/__init__.py b/python/packages/autogen-ext/src/autogen_ext/code_executors/docker/__init__.py new file mode 100644 index 000000000..424184379 --- /dev/null +++ b/python/packages/autogen-ext/src/autogen_ext/code_executors/docker/__init__.py @@ -0,0 +1,3 @@ +from ._docker_code_executor import DockerCommandLineCodeExecutor + +__all__ = ["DockerCommandLineCodeExecutor"] diff --git a/python/packages/autogen-ext/src/autogen_ext/code_executors/_docker_code_executor.py b/python/packages/autogen-ext/src/autogen_ext/code_executors/docker/_docker_code_executor.py similarity index 99% rename from python/packages/autogen-ext/src/autogen_ext/code_executors/_docker_code_executor.py rename to python/packages/autogen-ext/src/autogen_ext/code_executors/docker/_docker_code_executor.py index 170c4f468..3ade46cb1 100644 --- a/python/packages/autogen-ext/src/autogen_ext/code_executors/_docker_code_executor.py +++ b/python/packages/autogen-ext/src/autogen_ext/code_executors/docker/_docker_code_executor.py @@ -22,7 +22,7 @@ from autogen_core.code_executor import ( FunctionWithRequirementsStr, ) -from ._common import ( +from .._common import ( CommandLineCodeResult, build_python_functions_file, get_file_name_from_content, @@ -55,7 +55,11 @@ class DockerCommandLineCodeExecutor(CodeExecutor): .. note:: - This class requires the :code:`docker` extra for the :code:`autogen-ext` package. + This class requires the :code:`docker` extra for the :code:`autogen-ext` package: + + .. code-block:: bash + + pip install 'autogen-ext[docker]==0.4.0.dev7' The executor first saves each code block in a file in the working @@ -323,6 +327,7 @@ $functions""" async def start(self) -> None: try: import asyncio_atexit + import docker from docker.errors import ImageNotFound except ImportError as e: diff --git a/python/packages/autogen-ext/tests/code_executors/test_aca_dynamic_sessions.py b/python/packages/autogen-ext/tests/code_executors/test_aca_dynamic_sessions.py index e46912568..7a69a1879 100644 --- a/python/packages/autogen-ext/tests/code_executors/test_aca_dynamic_sessions.py +++ b/python/packages/autogen-ext/tests/code_executors/test_aca_dynamic_sessions.py @@ -10,7 +10,7 @@ import pytest from anyio import open_file from autogen_core import CancellationToken from autogen_core.code_executor import CodeBlock -from autogen_ext.code_executors import ACADynamicSessionsCodeExecutor +from autogen_ext.code_executors.azure import ACADynamicSessionsCodeExecutor from azure.identity import DefaultAzureCredential UNIX_SHELLS = ["bash", "sh", "shell"] diff --git a/python/packages/autogen-ext/tests/code_executors/test_aca_user_defined_functions.py b/python/packages/autogen-ext/tests/code_executors/test_aca_user_defined_functions.py index e826abec0..27adbee72 100644 --- a/python/packages/autogen-ext/tests/code_executors/test_aca_user_defined_functions.py +++ b/python/packages/autogen-ext/tests/code_executors/test_aca_user_defined_functions.py @@ -11,7 +11,7 @@ from autogen_core.code_executor import ( FunctionWithRequirements, with_requirements, ) -from autogen_ext.code_executors import ACADynamicSessionsCodeExecutor +from autogen_ext.code_executors.azure import ACADynamicSessionsCodeExecutor from azure.identity import DefaultAzureCredential ENVIRON_KEY_AZURE_POOL_ENDPOINT = "AZURE_POOL_ENDPOINT" diff --git a/python/packages/autogen-ext/tests/code_executors/test_docker_commandline_code_executor.py b/python/packages/autogen-ext/tests/code_executors/test_docker_commandline_code_executor.py index c9e57aee1..ad7423600 100644 --- a/python/packages/autogen-ext/tests/code_executors/test_docker_commandline_code_executor.py +++ b/python/packages/autogen-ext/tests/code_executors/test_docker_commandline_code_executor.py @@ -10,7 +10,7 @@ import pytest_asyncio from aiofiles import open from autogen_core import CancellationToken from autogen_core.code_executor import CodeBlock -from autogen_ext.code_executors import DockerCommandLineCodeExecutor +from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor def docker_tests_enabled() -> bool: diff --git a/python/packages/autogen-magentic-one/examples/example.py b/python/packages/autogen-magentic-one/examples/example.py index fb0a7d9b4..9ee37de6c 100644 --- a/python/packages/autogen-magentic-one/examples/example.py +++ b/python/packages/autogen-magentic-one/examples/example.py @@ -8,7 +8,7 @@ import os from autogen_core import AgentId, AgentProxy, SingleThreadedAgentRuntime from autogen_core.application.logging import EVENT_LOGGER_NAME from autogen_core.code_executor import CodeBlock -from autogen_ext.code_executors import DockerCommandLineCodeExecutor +from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor from autogen_magentic_one.agents.coder import Coder, Executor from autogen_magentic_one.agents.file_surfer import FileSurfer from autogen_magentic_one.agents.multimodal_web_surfer import MultimodalWebSurfer diff --git a/python/packages/autogen-magentic-one/examples/example_coder.py b/python/packages/autogen-magentic-one/examples/example_coder.py index 6c7bfc6e2..e71b5c886 100644 --- a/python/packages/autogen-magentic-one/examples/example_coder.py +++ b/python/packages/autogen-magentic-one/examples/example_coder.py @@ -10,7 +10,7 @@ import logging from autogen_core import AgentId, AgentProxy, SingleThreadedAgentRuntime from autogen_core.application.logging import EVENT_LOGGER_NAME from autogen_core.code_executor import CodeBlock -from autogen_ext.code_executors import DockerCommandLineCodeExecutor +from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor from autogen_magentic_one.agents.coder import Coder, Executor from autogen_magentic_one.agents.orchestrator import RoundRobinOrchestrator from autogen_magentic_one.agents.user_proxy import UserProxy