创建代理群组聊天
语义内核代理框架的主要功能是能够促进多个代理之间的交互。 通过使用 AgentGroupChat
,开发人员可以创建动态的多代理对话,其中不同类型的代理可以协作生成响应。
该 AgentGroupChat
类扩展了 AgentChat 框架,提供了管理多代理协作的结构化方法。 它提供内置机制来控制聊天流、定义协作策略,并支持单轮次和多轮次交互。
若要创建, AgentGroupChat
可以使用预定义的代理集初始化聊天对象。 例如:
# Define agents
agent_writer = AzureAIAgent(...)
agent_reviewer = AzureAIAgent(...)
# Create chat with participating agents
chat = AgentGroupChat(agents=[agent_writer, agent_reviewer])
或者,可以从空聊天开始,并动态添加代理。 例如:
# Create an empty chat
chat = AgentGroupChat()
# Add agents to an existing chat
chat.add_agent(agent=agent_writer)
chat.add_agent(agent=agent_reviewer)
将消息添加到聊天
创建聊天后,可以创建一个 ChatMessageContent
对象并将其添加到聊天线程。 该对象除了内容外,还 ChatMessageContent
采用角色参数。 例如:
chat_message = ChatMessageContent(role=AuthorRole.USER, content="This is the message content.")
await chat.add_chat_message(message=chat_message)
AgentGroupChat 中的聊天模式
代理群组聊天可以采用两种不同的模式运行,具体取决于聊天要求:
在 单轮对话中,指定的代理根据用户输入提供响应。
可以通过使用
AgentGroupChat.invoke
和指定应响应的代理,从单轮聊天调用响应。 例如:```python async for message in chat.invoke(agent) # process message response(s) ```
在 多轮次对话中,多个代理轮流响应,继续聊天,直到满足终止条件。
代理响应在生成时异步返回,从而允许聊天实时展开。
可以使用多轮聊天
AgentGroupChat.invoke
调用响应。 例如:```python async for message in chat.invoke() # process message response(s) ```
这两种模式都允许代理通过构建彼此的响应进行协作,从而产生动态的智能交互。