oettam_oisolliv
oettam_oisolliv

Reputation: 226

How to set graceful stopping conditions in pyautogen

I have a group chat that seems to work quite well but i am strugglying to stop it gracefully. In particular, with this groupchat:

groupchat = GroupChat(
    agents=[user_proxy, engineer_agent, writer_agent, code_executor_agent, planner_agent],
    messages=[],
    max_round=30,
    allowed_or_disallowed_speaker_transitions={
        user_proxy: [engineer_agent, writer_agent, code_executor_agent, planner_agent],
        engineer_agent: [code_executor_agent],
        writer_agent: [planner_agent],
        code_executor_agent: [engineer_agent, planner_agent],
        planner_agent: [engineer_agent, writer_agent],
    },
    speaker_transitions_type="allowed",
)

I gave to the planner_agent the possibility, at least in my understanding, to stop the chat. I did so in the following way:

def istantiate_planner_agent(llm_config) -> ConversableAgent:
    planner_agent = ConversableAgent(
        name="planner_agent",
        system_message=(
            [... REDACTED PROMPT SINCE IT HAS INFO I CANNOT SHARE ...]
            "After each step is done by others, check the progress and instruct the remaining steps.\n"
            "When the final taks has been completed, output TERMINATE_CHAT to stop the conversation."
            "If a step fails, try to find a workaround. Remember, you must dispatch only one single tasak at a time."
        ),
        description="Planner. Given a task, determine what "
                    "information is needed to complete the task. "
                    "After each step is done by others, check the progress and "
                    "instruct the remaining steps",
        is_termination_msg=lambda msg: "TERMINATE_CHAT" in msg["content"],
        human_input_mode="NEVER",
        llm_config=llm_config,
    )
    return planner_agent

The planner understand it is time to stop quite well, as you can see in the following message from it:


Next speaker: planner_agent

planner_agent (to chat_manager):

The executive summary looks comprehensive and well-structured. It covers the market situation, competitors, and their differentiations effectively.

Since the task is now complete, I will proceed to terminate the conversation.

TERMINATE_CHAT


Unfortunately, when it fires this message the conversation continue as this:


Next speaker: writer_agent

writer_agent (to chat_manager):

I'm glad you found the executive summary comprehensive and well-structured. If you have any further questions or need additional refinements in the future, feel free to reach out. Have a great day!

TERMINATE_CHAT


Next speaker: planner_agent

Provide feedback to chat_manager. Press enter to skip and use auto-reply, or type 'exit' to end the conversation: exit

As you see for some reason the writer picks it up and i have to give my feedback to tell the convo to stop.

Am i doing somethibg wrong?

Upvotes: 0

Views: 45

Answers (0)

Related Questions