autogen_core.tools._workbench 源代码
from abc import ABC, abstractmethod
from types import TracebackType
from typing import Any, List, Literal, Mapping, Optional, Type
from pydantic import BaseModel, Field
from typing_extensions import Annotated, Self
from .._cancellation_token import CancellationToken
from .._component_config import ComponentBase
from .._image import Image
from ._base import ToolSchema
[文档]
class TextResultContent(BaseModel):
"""
工具执行结果的文本内容。
"""
type: Literal["TextResultContent"] = "TextResultContent"
content: str
"""结果的文本内容。"""
[文档]
class ImageResultContent(BaseModel):
"""
工具执行结果的图像内容。
"""
type: Literal["ImageResultContent"] = "ImageResultContent"
content: Image
"""结果的图像内容。"""
ResultContent = Annotated[TextResultContent | ImageResultContent, Field(discriminator="type")]
[文档]
class Workbench(ABC, ComponentBase[BaseModel]):
"""
工作台是一个提供一组可能共享资源和状态的工具的组件。
工作台负责管理工具的生命周期,并提供调用它们的统一接口。工作台提供的工具可能是动态的,
每次工具执行后它们的可用性可能会发生变化。
可以通过调用 :meth:`~autogen_core.tools.Workbench.start` 方法启动工作台,
通过调用 :meth:`~autogen_core.tools.Workbench.stop` 方法停止工作台。
它也可以作为异步上下文管理器使用,在进入和退出上下文时会自动启动和停止工作台。
"""
component_type = "workbench"
[文档]
@abstractmethod
async def start(self) -> None:
"""
启动工作台并初始化所有资源。
在使用工作台前应调用此方法。
"""
...
[文档]
@abstractmethod
async def stop(self) -> None:
"""
停止工作台并释放所有资源。
当不再需要工作台时应调用此方法。
"""
...
[文档]
@abstractmethod
async def reset(self) -> None:
"""
将工作台重置为初始化后的启动状态。
"""
...
[文档]
@abstractmethod
async def save_state(self) -> Mapping[str, Any]:
"""
保存工作台的状态。
调用此方法以持久化工作台的状态。
"""
...
[文档]
@abstractmethod
async def load_state(self, state: Mapping[str, Any]) -> None:
"""
加载工作台的状态。
Args:
state (Mapping[str, Any]): 要加载到工作台中的状态。
"""
...
async def __aenter__(self) -> Self:
"""
进入工作台上下文管理器。
当工作台在 `with` 语句中使用时调用此方法。
它会调用 :meth:`~autogen_core.tools.WorkBench.start` 方法来启动工作台。
"""
await self.start()
return self
async def __aexit__(
self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType]
) -> None:
"""
退出工作台上下文管理器。
当工作台在 `with` 语句中使用时调用此方法。
它会调用 :meth:`~autogen_core.tools.WorkBench.stop` 方法来停止工作台。
"""
await self.stop()