Ipshita
Ipshita

Reputation: 3

Trouble Creating GroupChat with Autogen: ValueError Related to `allowed_speaker_transitions_dict`

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

Answers (2)

Ipshita
Ipshita

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

Sampath
Sampath

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})


enter image description here

Upvotes: 0

Related Questions