mirror of
https://github.com/microsoft/autogen.git
synced 2026-02-11 12:54:59 -05:00
Numerous fixes for agbench (#170)
* Shift to new runtime API * Add pretty printing * Reformat * Fix linting errors
This commit is contained in:
@@ -1,9 +1,15 @@
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from typing import List
|
||||
|
||||
from agnext.application.logging import EVENT_LOGGER_NAME
|
||||
from agnext.components import TypeRoutedAgent, message_handler
|
||||
from agnext.components.models import AssistantMessage, UserMessage
|
||||
from agnext.core import AgentProxy, CancellationToken
|
||||
|
||||
from ..messages import BroadcastMessage, RequestReplyMessage
|
||||
from ..messages import BroadcastMessage, OrchestrationEvent, RequestReplyMessage
|
||||
|
||||
logger = logging.getLogger(EVENT_LOGGER_NAME + ".orchestrator")
|
||||
|
||||
|
||||
class RoundRobinOrchestrator(TypeRoutedAgent):
|
||||
@@ -19,12 +25,39 @@ class RoundRobinOrchestrator(TypeRoutedAgent):
|
||||
@message_handler
|
||||
async def handle_incoming_message(self, message: BroadcastMessage, cancellation_token: CancellationToken) -> None:
|
||||
"""Handle an incoming message."""
|
||||
source = "Unknown"
|
||||
if isinstance(message.content, UserMessage) or isinstance(message.content, AssistantMessage):
|
||||
source = message.content.source
|
||||
|
||||
assert isinstance(source, str)
|
||||
|
||||
current_timestamp = datetime.now().isoformat()
|
||||
logger.info(
|
||||
OrchestrationEvent(
|
||||
current_timestamp,
|
||||
f"""
|
||||
-------------------------------------
|
||||
{source}: {message.content.content}
|
||||
-------------------------------------
|
||||
""",
|
||||
)
|
||||
)
|
||||
|
||||
if self._num_rounds > 20:
|
||||
return
|
||||
|
||||
next_agent = self._select_next_agent()
|
||||
request_reply_message = RequestReplyMessage()
|
||||
# emit an event
|
||||
|
||||
current_timestamp = datetime.now().isoformat()
|
||||
logger.info(
|
||||
OrchestrationEvent(
|
||||
current_timestamp,
|
||||
f"Orchestrator (thought): Next speaker {next_agent.metadata['name']}",
|
||||
)
|
||||
)
|
||||
|
||||
await self.send_message(request_reply_message, next_agent.id)
|
||||
|
||||
self._num_rounds += 1
|
||||
|
||||
@@ -11,3 +11,9 @@ class BroadcastMessage:
|
||||
@dataclass
|
||||
class RequestReplyMessage:
|
||||
pass
|
||||
|
||||
|
||||
@dataclass
|
||||
class OrchestrationEvent:
|
||||
timestamp: str
|
||||
message: str
|
||||
|
||||
Reference in New Issue
Block a user