Reputation: 3
I'm working on creating a group chat using the autogen
library but encountering an error related to the allowed_speaker_transitions_dict
. Here's a simplified version of my code:
# Define the data fetch tool.
data_search_agent = AssistantAgent(
name="assistant",
model_client=az_model_client,
tools=[
get_customer_details_by_customerid,
get_customer_bill_details_by_customerid,
get_customer_call_center_conversations_by_customerid,
get_customer_email_conversations_by_customerid,
get_order_detail_by_customerid
],
system_message="system message",
)
# Define the Bill inspection agent.
bill_inspection_agent = AssistantAgent(
name="billing_assistant",
model_client=az_model_client_o1,
system_message="system message",
)
# Define the supervisor agent.
supervisor_agent = AssistantAgent(
name="supervison_assistant",
model_client=az_model_client,
system_message="Your work is to look at the query and ask the appropriate agent to get to work. You are the supervisor and you have to make sure that the work is done properly.",
)
user_proxy = autogen.ConversableAgent(
name="Admin",
system_message="Give the task, and send",
code_execution_config=False,
llm_config=llm_config,
human_input_mode="ALWAYS",
)
groupchat = autogen.GroupChat(
agents=[user_proxy, data_search_agent, supervisor_agent, bill_inspection_agent],
messages=[],
max_round=10,
)
manager = autogen.GroupChatManager(
groupchat=groupchat, model_client=az_model_client
)
This results in the following error:
ValueError: allowed_speaker_transitions_dict has values that are not lists of Agents.
Full Traceback:
Traceback (most recent call last):
File "agents.py", line 652, in <module>
groupchat = autogen.GroupChat(
File "<string>", line 21, in __init__
File "groupchat.py", line 220, in __post_init__
check_graph_validity(
File "graph_utils.py", line 52, in check_graph_validity
raise ValueError("allowed_speaker_transitions_dict has values that are not lists of Agents.")
ValueError: allowed_speaker_transitions_dict has values that are not lists of Agents.
Upvotes: 0
Views: 94
Reputation: 3
Groupchat doesnt allow agents with tool, instead we can use SelectorGroupChat or other conversation patterns to accommodate agents with tools/function calling.
Upvotes: 0
Reputation: 3639
The error occurs due to a missing allowed_speaker_transitions_dict
in the GroupChat
initialization. The allowed_speaker_transitions_dict
contains lists of AssistantAgent
instances, which define valid speaker transitions.
data_search_agent = autogen.AssistantAgent(
name="assistant",
system_message="System message for fetching customer data",
)
bill_inspection_agent = autogen.AssistantAgent(
name="billing_assistant",
system_message="System message for handling billing queries",
)
supervisor_agent = autogen.AssistantAgent(
name="supervisor_assistant",
system_message="You are the supervisor. You assign tasks to the correct agents.",
)
user_proxy = autogen.ConversableAgent(
name="Admin",
system_message="Give the task and send",
human_input_mode="ALWAYS",
)
allowed_transitions = {
"Admin": ["supervisor_assistant"],
"supervisor_assistant": ["assistant", "billing_assistant"],
"assistant": ["supervisor_assistant"],
"billing_assistant": ["supervisor_assistant"],
}
groupchat = autogen.GroupChat(
agents=[user_proxy, data_search_agent, supervisor_agent, bill_inspection_agent],
messages=[],
max_round=10,
allowed_speaker_transitions_dict=allowed_transitions
)
manager = autogen.GroupChatManager(
groupchat=groupchat
)
For more details on using Azure AI Agent Service with AutoGen, refer to the following resources:
code_writer_agent = ConversableAgent(
name="CodeWriter",
system_message="You are an AI that writes Python code. Output valid Python code only.",
llm_config={"config_list": config_list},
is_termination_msg=lambda msg: "code output" in msg["content"]
)
code_executor_agent = ConversableAgent(
name="CodeExecutor",
llm_config=False,
code_execution_config={"executor": aca_sessions_executor},
human_input_mode="NEVER",
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", "").strip().upper()
)
news_agent = ConversableAgent(
name="NewsFetcher",
system_message="Fetch the latest top 10 news articles from the world.",
llm_config={"config_list": config_list}
)
groupchat = GroupChat(agents=[code_writer_agent, code_executor_agent, news_agent], messages=[], max_round=10)
manager = GroupChatManager(groupchat=groupchat, llm_config={"config_list": config_list})
Upvotes: 0