mirror of
https://github.com/microsoft/autogen.git
synced 2025-06-26 22:30:10 +00:00
68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
![]() |
from typing import AsyncGenerator, Union, Optional
|
||
|
import time
|
||
|
from .database import ComponentFactory
|
||
|
from .datamodel import TeamResult, TaskResult, ComponentConfigInput
|
||
|
from autogen_agentchat.messages import InnerMessage, ChatMessage
|
||
|
from autogen_core.base import CancellationToken
|
||
|
|
||
|
|
||
|
class TeamManager:
|
||
|
def __init__(self) -> None:
|
||
|
self.component_factory = ComponentFactory()
|
||
|
|
||
|
async def run_stream(
|
||
|
self,
|
||
|
task: str,
|
||
|
team_config: ComponentConfigInput,
|
||
|
cancellation_token: Optional[CancellationToken] = None
|
||
|
) -> AsyncGenerator[Union[InnerMessage, ChatMessage, TaskResult], None]:
|
||
|
"""Stream the team's execution results"""
|
||
|
start_time = time.time()
|
||
|
|
||
|
try:
|
||
|
# Let factory handle all config processing
|
||
|
team = await self.component_factory.load(team_config)
|
||
|
|
||
|
stream = team.run_stream(
|
||
|
task=task,
|
||
|
cancellation_token=cancellation_token
|
||
|
)
|
||
|
|
||
|
async for message in stream:
|
||
|
if cancellation_token and cancellation_token.is_cancelled():
|
||
|
break
|
||
|
|
||
|
if isinstance(message, TaskResult):
|
||
|
yield TeamResult(
|
||
|
task_result=message,
|
||
|
usage="",
|
||
|
duration=time.time() - start_time
|
||
|
)
|
||
|
else:
|
||
|
yield message
|
||
|
|
||
|
except Exception as e:
|
||
|
raise e
|
||
|
|
||
|
async def run(
|
||
|
self,
|
||
|
task: str,
|
||
|
team_config: ComponentConfigInput,
|
||
|
cancellation_token: Optional[CancellationToken] = None
|
||
|
) -> TeamResult:
|
||
|
"""Original non-streaming run method with optional cancellation"""
|
||
|
start_time = time.time()
|
||
|
|
||
|
# Let factory handle all config processing
|
||
|
team = await self.component_factory.load(team_config)
|
||
|
result = await team.run(
|
||
|
task=task,
|
||
|
cancellation_token=cancellation_token
|
||
|
)
|
||
|
|
||
|
return TeamResult(
|
||
|
task_result=result,
|
||
|
usage="",
|
||
|
duration=time.time() - start_time
|
||
|
)
|