Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ability to add MessageTransforms to the GroupChat's Select Speaker nested chat (speaker_selection_method='auto') #2719

Merged
merged 21 commits into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
aea58fa
Initial commit with ability to add transforms to GroupChat
marklysze May 19, 2024
9de72c0
Added tests
marklysze May 19, 2024
678f9c0
Tidy up
marklysze May 19, 2024
918a1d0
Tidy up of variable names and commented out test
marklysze May 24, 2024
fad0a77
Tidy up comment
marklysze May 24, 2024
8c203d6
Update import to relative
marklysze Jun 4, 2024
3fb7a14
Added documentation topic for transform messages for speaker selection.
marklysze Jun 5, 2024
4e05e03
Merge remote-tracking branch 'origin/main' into selectspeakertransforms
marklysze Jun 28, 2024
f7328bc
Merge remote-tracking branch 'origin/main' into selectspeakertransforms
marklysze Jul 24, 2024
c479a81
Merge branch 'main' into selectspeakertransforms
marklysze Aug 8, 2024
8e3f6d9
Merge branch 'main' into selectspeakertransforms
thinkall Aug 12, 2024
430a7e4
Merge branch 'main' into selectspeakertransforms
thinkall Aug 14, 2024
44048f7
Merge remote-tracking branch 'origin/main' into selectspeakertransforms
marklysze Aug 19, 2024
4c7b8d2
Merge branch 'selectspeakertransforms' of https://github.com/microsof…
marklysze Aug 19, 2024
3cf1091
Added handling of non-core module, transforms, in groupchat
marklysze Aug 19, 2024
49b7367
Adjusted parameter if module not loaded.
marklysze Aug 19, 2024
7dd60bc
Merge branch 'main' into selectspeakertransforms
thinkall Aug 20, 2024
9293ddb
Merge branch 'main' into selectspeakertransforms
marklysze Aug 20, 2024
9ce18ec
Merge branch 'main' into selectspeakertransforms
thinkall Aug 20, 2024
4b797c3
Merge branch 'main' into selectspeakertransforms
marklysze Aug 23, 2024
aa334fc
Updated groupchat test which failed during CI/CD
marklysze Aug 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Added tests
  • Loading branch information
marklysze committed May 19, 2024
commit 9de72c08e79b0a8a4b7861a975d0a07be391a0b4
6 changes: 3 additions & 3 deletions autogen/agentchat/groupchat.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ def __post_init__(self):
if isinstance(self.select_speaker_auto_message_transforms, transform_messages.TransformMessages):
WaelKarkoub marked this conversation as resolved.
Show resolved Hide resolved
self._auto_message_transforms = self.select_speaker_auto_message_transforms
else:
raise ValueError("select_speaker_auto_message_transforms must be None or MessageTransforms")
raise ValueError("select_speaker_auto_message_transforms must be None or MessageTransforms.")
else:
self._auto_message_transforms = None

Expand Down Expand Up @@ -738,8 +738,8 @@ def validate_speaker_name(recipient, messages, sender, config) -> Tuple[bool, Un
)

# Add the message transforms, if any, to the speaker selection agent
if self._auto_message_transforms_context_handling is not None:
self._auto_message_transforms_context_handling.add_to_agent(speaker_selection_agent)
if self._auto_message_transforms is not None:
self._auto_message_transforms.add_to_agent(speaker_selection_agent)

# Run the speaker selection chat
result = await checking_agent.a_initiate_chat(
Expand Down
42 changes: 42 additions & 0 deletions test/agentchat/test_groupchat.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import autogen
from autogen import Agent, AssistantAgent, GroupChat, GroupChatManager
from autogen.agentchat.contrib.capabilities import transform_messages, transforms
from autogen.exception_utils import AgentNameConflict, UndefinedNextAgent


Expand Down Expand Up @@ -2007,6 +2008,46 @@ def test_manager_resume_messages():
return_agent, return_message = manager.resume(messages="Let's get this conversation started.")


def test_select_speaker_transform_messages():
"""Tests adding transform messages to a GroupChat for speaker selection when in 'auto' mode"""

# Test adding a TransformMessages to a group chat
test_add_transforms = transform_messages.TransformMessages(
transforms=[
transforms.MessageHistoryLimiter(max_messages=10),
transforms.MessageTokenLimiter(max_tokens=3000, max_tokens_per_message=500, min_tokens=300),
]
)

coder = AssistantAgent(name="Coder", llm_config=None)
groupchat = GroupChat(messages=[], agents=[coder], select_speaker_auto_message_transforms=test_add_transforms)

# Ensure the transform have been added to the GroupChat
assert groupchat._auto_message_transforms == test_add_transforms

# Attempt to add a non MessageTransforms object, such as a list of transforms
with pytest.raises(ValueError, match="select_speaker_auto_message_transforms must be None or MessageTransforms."):
groupchat = GroupChat(
messages=[],
agents=[coder],
select_speaker_auto_message_transforms=List[transforms.MessageHistoryLimiter(max_messages=10)],
)

# Ensure if we don't pass any transforms in, none are on the GroupChat
groupchat_missing = GroupChat(messages=[], agents=[coder])

assert groupchat_missing._auto_message_transforms is None

# Ensure we can pass in None
groupchat_none = GroupChat(
messages=[],
agents=[coder],
select_speaker_auto_message_transforms=None,
)

assert groupchat_none._auto_message_transforms is None


if __name__ == "__main__":
# test_func_call_groupchat()
# test_broadcast()
Expand Down Expand Up @@ -2037,4 +2078,5 @@ def test_manager_resume_messages():
# test_manager_resume_functions()
# test_manager_resume_returns()
# test_manager_resume_messages()
test_select_speaker_transform_messages()
pass
marklysze marked this conversation as resolved.
Show resolved Hide resolved
Loading