autogen/python/packages/autogen-agentchat/tests/test_group_chat_endpoint.py
Eric Zhu 426b898485
fix: improve speaker selection in SelectorGroupChat for weaker models (#5454)
Don't throw an exception when model makes a mistake. Use retries, and if
not succeeding after a fixed attempts, fall back to the previous sepaker
if available, or the first participant.

Resolves #5453
2025-02-08 23:13:46 +00:00

63 lines
2.0 KiB
Python

import os
import pytest
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import SelectorGroupChat
from autogen_agentchat.ui import Console
from autogen_core.models import ChatCompletionClient, ModelFamily
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def _test_selector_group_chat(model_client: ChatCompletionClient) -> None:
assistant = AssistantAgent(
"assistant",
description="A helpful assistant agent.",
model_client=model_client,
system_message="You are a helpful assistant.",
)
critic = AssistantAgent(
"critic",
description="A critic agent to provide feedback.",
model_client=model_client,
system_message="Provide feedback.",
)
team = SelectorGroupChat([assistant, critic], model_client=model_client, max_turns=2)
await Console(team.run_stream(task="Draft a short email about organizing a holiday party for new year."))
@pytest.mark.asyncio
async def test_selector_group_chat_gemini() -> None:
try:
api_key = os.environ["GEMINI_API_KEY"]
except KeyError:
pytest.skip("GEMINI_API_KEY not set in environment variables.")
model_client = OpenAIChatCompletionClient(
model="gemini-1.5-flash",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
api_key=api_key,
model_info={
"vision": True,
"function_calling": True,
"json_output": True,
"family": ModelFamily.GEMINI_1_5_FLASH,
},
)
await _test_selector_group_chat(model_client)
@pytest.mark.asyncio
async def test_selector_group_chat_openai() -> None:
try:
api_key = os.environ["OPENAI_API_KEY"]
except KeyError:
pytest.skip("OPENAI_API_KEY not set in environment variables.")
model_client = OpenAIChatCompletionClient(
model="gpt-4o-mini",
api_key=api_key,
)
await _test_selector_group_chat(model_client)