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 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)
|