创建代理群组聊天

已完成

语义内核代理框架的主要功能是能够促进多个代理之间的交互。 通过使用 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)
      ```
    

这两种模式都允许代理通过构建彼此的响应进行协作,从而产生动态的智能交互。