mirror of
https://github.com/microsoft/autogen.git
synced 2025-08-10 01:32:03 +00:00
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from autogen_core import Component, ComponentModel
|
|
from pydantic import BaseModel
|
|
from typing_extensions import Self
|
|
|
|
from autogen_agentchat.teams import BaseGroupChat
|
|
|
|
from ._task_runner_tool import TaskRunnerTool
|
|
|
|
|
|
class TeamToolConfig(BaseModel):
|
|
"""Configuration for the TeamTool."""
|
|
|
|
name: str
|
|
description: str
|
|
team: ComponentModel
|
|
|
|
|
|
class TeamTool(TaskRunnerTool, Component[TeamToolConfig]):
|
|
"""Tool that can be used to run a task.
|
|
|
|
The tool returns the result of the task execution as a :class:`~autogen_agentchat.base.TaskResult` object.
|
|
|
|
Args:
|
|
team (BaseGroupChat): The team to be used for running the task.
|
|
name (str): The name of the tool.
|
|
description (str): The description of the tool.
|
|
"""
|
|
|
|
component_config_schema = TeamToolConfig
|
|
component_provider_override = "autogen_agentchat.tools.TeamTool"
|
|
|
|
def __init__(self, team: BaseGroupChat, name: str, description: str) -> None:
|
|
self._team = team
|
|
super().__init__(team, name, description)
|
|
|
|
def _to_config(self) -> TeamToolConfig:
|
|
return TeamToolConfig(
|
|
name=self._name,
|
|
description=self._description,
|
|
team=self._team.dump_component(),
|
|
)
|
|
|
|
@classmethod
|
|
def _from_config(cls, config: TeamToolConfig) -> Self:
|
|
return cls(BaseGroupChat.load_component(config.team), config.name, config.description)
|