Skip to content

ContainerManager

autogen.beta.config.openai.containers.ContainerManager #

ContainerManager(api_key=None, organization=None, project=None, base_url=None, timeout=not_given, max_retries=DEFAULT_MAX_RETRIES, default_headers=None, default_query=None, http_client=None)

Manages OpenAI hosted shell containers.

Use this to create reusable containers and reference them in :class:ShellTool via :class:~autogen.beta.tools.builtin.shell.ContainerReferenceEnvironment.

Example::

manager = ContainerManager(api_key="sk-...")
container = await manager.create(
    name="my-env",
    expires_after=ExpiresAfter(minutes=20),
)

agent = Agent(
    ...,
    tools=[ShellTool(environment=ContainerReferenceEnvironment(container_id=container.id))],
)

See: https://developers.openai.com/api/docs/guides/tools-shell#reuse-a-container-across-requests

Source code in autogen/beta/config/openai/containers.py
def __init__(
    self,
    api_key: str | None = None,
    organization: str | None = None,
    project: str | None = None,
    base_url: str | None = None,
    timeout: Any = not_given,
    max_retries: int = DEFAULT_MAX_RETRIES,
    default_headers: dict[str, str] | None = None,
    default_query: dict[str, object] | None = None,
    http_client: httpx.AsyncClient | None = None,
) -> None:
    self._client = AsyncOpenAI(
        api_key=api_key,
        organization=organization,
        project=project,
        base_url=base_url,
        timeout=timeout,
        max_retries=max_retries,
        default_headers=default_headers,
        default_query=default_query,
        http_client=http_client,
    )

create async #

create(*, name=None, memory_limit=None, expires_after=None)

Create a new hosted container and return its metadata.

PARAMETER DESCRIPTION
name

Optional human-readable name for the container.

TYPE: str | None DEFAULT: None

memory_limit

Memory cap, e.g. "1g" or "512m".

TYPE: str | None DEFAULT: None

expires_after

Expiry policy. Defaults to OpenAI's platform default (20 minutes of inactivity) when omitted.

TYPE: ExpiresAfter | None DEFAULT: None

RETURNS DESCRIPTION
ContainerInfo

class:ContainerInfo with the id to pass to

ContainerInfo

class:~autogen.beta.tools.builtin.shell.ContainerReferenceEnvironment.

Source code in autogen/beta/config/openai/containers.py
async def create(
    self,
    *,
    name: str | None = None,
    memory_limit: str | None = None,
    expires_after: ExpiresAfter | None = None,
) -> ContainerInfo:
    """Create a new hosted container and return its metadata.

    Args:
        name: Optional human-readable name for the container.
        memory_limit: Memory cap, e.g. ``"1g"`` or ``"512m"``.
        expires_after: Expiry policy. Defaults to OpenAI's platform default
            (20 minutes of inactivity) when omitted.

    Returns:
        :class:`ContainerInfo` with the ``id`` to pass to
        :class:`~autogen.beta.tools.builtin.shell.ContainerReferenceEnvironment`.
    """
    body: dict[str, Any] = {}
    if name is not None:
        body["name"] = name
    if memory_limit is not None:
        body["memory_limit"] = memory_limit
    if expires_after is not None:
        body["expires_after"] = {
            "anchor": expires_after.anchor,
            "minutes": expires_after.minutes,
        }

    container = await self._client.containers.create(**body)
    return ContainerInfo(
        id=container.id,
        name=getattr(container, "name", None),
        status=getattr(container, "status", None),
    )

delete async #

delete(container_id)

Delete a container by ID.

PARAMETER DESCRIPTION
container_id

The id returned by :meth:create.

TYPE: str

Source code in autogen/beta/config/openai/containers.py
async def delete(self, container_id: str) -> None:
    """Delete a container by ID.

    Args:
        container_id: The ``id`` returned by :meth:`create`.
    """
    await self._client.containers.delete(container_id)