autogen/samples/apps/cap/py/autogencap/ag_adapter/CAPGroupChatManager.py
Rajan db30ec8961
Reduce sleep() in CAP library code (#2189)
* 1) Removed most framework sleeps 2) refactored connection code

* pre-commit fixes

* pre-commit

* ignore protobuf files in pre-commit checks

* Fix duplicate actor registration

* refactor change

* Nicer printing of Actors

* 1) Report recv_multipart errors 4) Always send 4 parts

* AutoGen generate_reply expects to wait indefinitely for an answer.  CAP can wait a certain amount and give up.   In order to reconcile the two, AutoGenConnector is set to wait indefinitely.

* pre-commit formatting fixes

* pre-commit format changes

* don't check autogenerated proto py files
2024-04-02 07:49:07 +00:00

41 lines
1.6 KiB
Python

from autogen import GroupChatManager
from autogencap.ActorConnector import ActorConnector
from autogencap.LocalActorNetwork import LocalActorNetwork
from autogencap.ag_adapter.CAP2AG import CAP2AG
from autogencap.ag_adapter.CAPGroupChat import CAPGroupChat
import time
class CAPGroupChatManager:
def __init__(self, groupchat: CAPGroupChat, llm_config: dict, network: LocalActorNetwork):
self._network: LocalActorNetwork = network
self._cap_group_chat: CAPGroupChat = groupchat
self._ag_group_chat_manager: GroupChatManager = GroupChatManager(
groupchat=self._cap_group_chat, llm_config=llm_config
)
self._cap_proxy: CAP2AG = CAP2AG(
ag_agent=self._ag_group_chat_manager,
the_other_name=self._cap_group_chat.chat_initiator,
init_chat=False,
self_recursive=True,
)
self._network.register(self._cap_proxy)
def initiate_chat(self, txt_msg: str) -> None:
self._network.connect()
user_proxy_conn: ActorConnector = self._network.lookup_actor(self._cap_group_chat.chat_initiator)
user_proxy_conn.send_txt_msg(txt_msg)
self._wait_for_user_exit()
def is_running(self) -> bool:
return self._cap_group_chat.is_running()
def _wait_for_user_exit(self) -> None:
try:
while self.is_running():
# Hang out for a while and print out
# status every now and then
time.sleep(0.5)
except KeyboardInterrupt:
print("Interrupted by user, shutting down.")