init
This commit is contained in:
79
AlgoriAgent/examples/conversation_with_mentions/main.py
Normal file
79
AlgoriAgent/examples/conversation_with_mentions/main.py
Normal file
@@ -0,0 +1,79 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
""" A group chat where user can talk any time implemented by agentscope. """
|
||||
from loguru import logger
|
||||
from groupchat_utils import (
|
||||
select_next_one,
|
||||
filter_agents,
|
||||
)
|
||||
|
||||
import agentscope
|
||||
from agentscope.agents import UserAgent
|
||||
from agentscope.message import Msg
|
||||
from agentscope.msghub import msghub
|
||||
|
||||
USER_TIME_TO_SPEAK = 10
|
||||
DEFAULT_TOPIC = """
|
||||
This is a chat room and you can speak freely and briefly.
|
||||
"""
|
||||
|
||||
SYS_PROMPT = """
|
||||
You can designate a member to reply to your message, you can use the @ symbol.
|
||||
This means including the @ symbol in your message, followed by
|
||||
that person's name, and leaving a space after the name.
|
||||
|
||||
All participants are: {agent_names}
|
||||
"""
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""group chat"""
|
||||
npc_agents = agentscope.init(
|
||||
model_configs="./configs/model_configs.json",
|
||||
agent_configs="./configs/agent_configs.json",
|
||||
project="Conversation with Mentions",
|
||||
)
|
||||
|
||||
user = UserAgent()
|
||||
|
||||
agents = list(npc_agents) + [user]
|
||||
|
||||
hint = Msg(
|
||||
name="Host",
|
||||
content=DEFAULT_TOPIC
|
||||
+ SYS_PROMPT.format(
|
||||
agent_names=[agent.name for agent in agents],
|
||||
),
|
||||
role="assistant",
|
||||
)
|
||||
|
||||
rnd = 0
|
||||
speak_list = []
|
||||
with msghub(agents, announcement=hint):
|
||||
while True:
|
||||
try:
|
||||
x = user(timeout=USER_TIME_TO_SPEAK)
|
||||
if x.content == "exit":
|
||||
break
|
||||
except TimeoutError:
|
||||
x = {"content": ""}
|
||||
logger.info(
|
||||
f"User has not typed text for "
|
||||
f"{USER_TIME_TO_SPEAK} seconds, skip.",
|
||||
)
|
||||
|
||||
speak_list += filter_agents(x.get("content", ""), npc_agents)
|
||||
|
||||
if len(speak_list) > 0:
|
||||
next_agent = speak_list.pop(0)
|
||||
x = next_agent()
|
||||
else:
|
||||
next_agent = select_next_one(npc_agents, rnd)
|
||||
x = next_agent()
|
||||
|
||||
speak_list += filter_agents(x.content, npc_agents)
|
||||
|
||||
rnd += 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user