mirror of
https://github.com/microsoft/autogen.git
synced 2025-10-01 11:06:58 +00:00

* Added Runtime Factory to support multiple implementations * Rename to ComponentEnsemble to ZMQRuntime * rename zmq_runtime * rename zmq_runtime * pre-commit fixes * pre-commit fix * pre-commit fixes and default runtime * pre-commit fixes * Rename constants * Rename Constants --------- Co-authored-by: Li Jiang <bnujli@gmail.com>
84 lines
2.5 KiB
Python
84 lines
2.5 KiB
Python
import time
|
|
from typing import Callable, Dict, List, Optional, Union
|
|
|
|
from autogen import Agent, ConversableAgent
|
|
|
|
from ..actor_runtime import IRuntime
|
|
from .AutoGenConnector import AutoGenConnector
|
|
|
|
|
|
class AG2CAP(ConversableAgent):
|
|
"""
|
|
A conversable agent proxy that sends messages to CAN when called
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
ensemble: IRuntime,
|
|
agent_name: str,
|
|
agent_description: Optional[str] = None,
|
|
):
|
|
super().__init__(name=agent_name, description=agent_description, llm_config=False)
|
|
self._agent_connector: AutoGenConnector = None
|
|
self._ensemble: IRuntime = ensemble
|
|
self._recv_called = False
|
|
|
|
def reset_receive_called(self):
|
|
self._recv_called = False
|
|
|
|
def was_receive_called(self):
|
|
return self._recv_called
|
|
|
|
def set_name(self, name: str):
|
|
"""
|
|
Set the name of the agent.
|
|
Why? because we need it to look like different agents
|
|
"""
|
|
self._name = name
|
|
|
|
def _check_connection(self):
|
|
if self._agent_connector is None:
|
|
self._agent_connector = AutoGenConnector(self._ensemble.find_by_name(self.name))
|
|
self._terminate_connector = AutoGenConnector(self._ensemble.find_termination())
|
|
|
|
def receive(
|
|
self,
|
|
message: Union[Dict, str],
|
|
sender: Agent,
|
|
request_reply: Optional[bool] = None,
|
|
silent: Optional[bool] = False,
|
|
):
|
|
"""
|
|
Receive a message from the AutoGen system.
|
|
"""
|
|
self._recv_called = True
|
|
self._check_connection()
|
|
self._agent_connector.send_receive_req(message, sender, request_reply, silent)
|
|
|
|
def generate_reply(
|
|
self,
|
|
messages: Optional[List[Dict]] = None,
|
|
sender: Optional[Agent] = None,
|
|
exclude: Optional[List[Callable]] = None,
|
|
) -> Union[str, Dict, None]:
|
|
"""
|
|
Generate a reply message for the AutoGen system.
|
|
"""
|
|
self._check_connection()
|
|
return self._agent_connector.send_gen_reply_req()
|
|
|
|
def _prepare_chat(
|
|
self,
|
|
recipient: ConversableAgent,
|
|
clear_history: bool,
|
|
prepare_recipient: bool = True,
|
|
reply_at_receive: bool = True,
|
|
) -> None:
|
|
self._check_connection()
|
|
self._agent_connector.send_prep_chat(recipient, clear_history, prepare_recipient)
|
|
|
|
def send_terminate(self, recipient: ConversableAgent) -> None:
|
|
self._check_connection()
|
|
self._agent_connector.send_terminate(recipient)
|
|
self._terminate_connector.send_terminate(self)
|