Using Custom Models
When using GroupChatManager
we need to pass a GroupChat
object in the constructor, a dataclass responsible for
gathering agents, preparing messages from prompt templates and selecting speakers
(eventually using speaker_selection_method
as described here).
To do so GroupChat internally initializes two instances of ConversableAgent.
In order to control the model clients used by the agents instantiated within the GroupChat, which already receives the
llm_config
passed to GroupChatManager, the optional model_client_cls
attribute can be set.
Example
First we need to define an llm_config
and define some agents that will partake in the group chat:
from autogen import GroupChat, ConversableAgent, GroupChatManager, UserProxyAgent
from somewhere import MyModelClient
# Define the custom model configuration
llm_config = {
"config_list": [
{
"model": "gpt-3.5-turbo",
"model_client_cls": "MyModelClient"
}
]
}
# Initialize the agents with the custom model
agent1 = ConversableAgent(
name="Agent 1",
llm_config=llm_config
)
agent1.register_model_client(model_client_cls=MyModelClient)
agent2 = ConversableAgent(
name="Agent 2",
llm_config=llm_config
)
agent2.register_model_client(model_client_cls=MyModelClient)
agent3 = ConversableAgent(
name="Agent 2",
llm_config=llm_config
)
agent3.register_model_client(model_client_cls=MyModelClient)
user_proxy = UserProxyAgent(name="user", llm_config=llm_config, code_execution_config={"use_docker": False})
user_proxy.register_model_client(MyModelClient)
Note that the agents definition illustrated here is minimal and might not suit your needs. The only aim is to show a basic setup for a group chat scenario.
We then create a GroupChat
and, if we want the underlying agents used by GroupChat to use our
custom client, we will pass it in the model_client_cls
attribute.
Finally we create an instance of GroupChatManager
and pass the config to it. This same config will be forwarded to
the GroupChat, that (if needed) will automatically handle registration of custom models only.
# Create a GroupChat instance and add the agents
group_chat = GroupChat(agents=[agent1, agent2, agent3], messages=[], model_client_cls=MyModelClient)
# Create the GroupChatManager with the GroupChat, UserProxy, and model configuration
chat_manager = GroupChatManager(groupchat=group_chat, llm_config=llm_config)
chat_manager.register_model_client(model_client_cls=MyModelClient)
# Initiate the chat using the UserProxy
user_proxy.initiate_chat(chat_manager, initial_message="Suggest me the most trending papers in microbiology that you think might interest me")
This attribute can either be a class or a list of classes which adheres to the ModelClient
protocol (see
this link for more info about defining a custom model client
class).
Note that it is not necessary to define a model_client_cls
when working with Azure OpenAI, OpenAI or other non-custom
models natively supported by the library.