我们知道多智能体系统与单智能体系统的主要区别在于系统内决策和交互的分布。在单代理系统中,集中式代理做出所有决策,而其他代理充当远程从属代理。这个单一的代理,通常根据上下文来决定。这可能会错过其他观点/可能性。另一方面,多智能体系统涉及多个交互的智能智能体,每个智能体都能够做出决策并影响环境。
多代理架构背后的想法是创建代理,根据它们所扮演的角色,使用不同的上下文引入不同的视角。尽管它们可能使用相同的 LLM,但由于为该代理定义的角色、目标和上下文,它们的行为不同。就像团队中的一名成员一样。
下面是典型的多代理架构的构建组建:
代理(Agents)
智能代理在大语言模型(LLM)上运行,并具有明确的角色、身份和上下文。每个代理在其特定场景中承担独特的任务和职责。连接(Connections)
代理通过特定的通信方式连接,确保它们能够协同工作和信息共享。编排(Orchestration)
编排定义了多个代理如何协同工作,常见的模式包括顺序执行、分层结构和双向对话等。这种设计确保代理之间能够高效合作。人工干预(Human-in-the-Loop)
在大多数应用场景中,人类通常作为中间环节,帮助做出关键决策和评估代理的输出结果。工具(Tools)
代理使用各种工具来完成特定任务,例如在网络上搜索信息、生成和读取文档、或者将生成的代码上传到 GitHub 等。大语言模型(LLM)
代理的推理和任务执行依赖于大语言模型(LLM)的强大能力,提供支持和核心逻辑。
下面介绍Autogen框架。
Autogen 是 Microsoft 流行的新兴框架之一。这是一个开源框架,它还提供了一个非常直观的基于 UI 的开发工具,称为 Autogen Studio。用于构建强大的多代理应用程序。它允许创建 LLM 代理,这些代理使用大型语言模型进行推理和操作,可以使用来自自定义源的信息进行扩展。它为多代理架构提供了一种非常明确的基于 orchestrator 的方法。
AutoGen 提供了一个统一的多代理对话框架,作为使用基础模型的高级抽象。它具有功能强大、可定制和可交谈的代理,这些代理通过自动代理聊天集成LLMs、工具和人工。通过在多个有能力的代理之间自动聊天,可以轻松地让他们自主或通过人工反馈共同执行任务,包括需要通过代码使用工具的任务。
该框架简化了复杂的 LLM。它最大限度地提高了 LLM并克服了它们的弱点。它支持以最少的工作量构建基于多代理对话的下一代 LLM 应用程序。
使用Autogen可以做什么呢,官方给出了6中应用示例。
下面,我们将创建代码执行机器人。这个机器人根据问题编写代码,将代码保存在一个文件中,如果代码没有执行,它将执行并再次写入。
首先,安装 Autogen 软件包:
pip install pyautogen
在此示例中,我们将使用 OpenAI 最新开发的 gpt-4–1106-preview 模型。
import autogen
config_list = [
{
"model" : "gpt-4-1106-preview",
"api_key" : "secret_key"
}
]
llm_config = {
"seed": 42, # caching, reproducibility.
"config_list": config_list, # a list of OpenAI API configurations
"temperature": 0 #temperature -> sampling
}
seed 参数用于缓存和确保可重现性;config_list includes the list of OpenAI API configurations;config_list包括 OpenAI API 配置列表。
定义助手
assistant = autogen.AssistantAgent(
name = "coder",
llm_config = llm_config)
创建用户代理
user_proxy = autogen.UserProxyAgent(
name = "user_proxy",
human_input_mode= "NEVER",
max_consecutive_auto_reply=10,
is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
llm_config=llm_config,
code_execution_config={
"work_dir": "coding",
"use_docker": False,
},
system_message = "Reply TERMINATE if the task has been solved for your full satisfaction. Or reply CONTINUE if the task is not solved yet",
)
将 human_input_mode 设置为 “ALWAYS” 意味着每次收到消息时都会获取人工输入。或者,也可以将其配置为 “TERMINATE”,以仅在收到终止消息或自动回复数量达到最大连续自动回复限制时请求人工输入。
助手会收到来自user_proxy的消息,其中包含任务描述。
user_proxy.initiate_chat(
assistant,
message="give me exact segmentation mask of this image with white color, use semantic segmentation, take the exact borders and save the result as mask.png https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCbLonevQIqBWh2Yh2C1BACaaoMhoJIKHedg&usqp=CAU")
2023 年 9 月 25 日,Microsoft 推出了 AutoGen,这是人工智能领域的突破性发展。尽管当前的用例处于早期阶段,但根据 Microsoft 技术研究员 Doug Burger 的说法,“AutoGen 已准备好从根本上改变和扩展大型语言模型的能力。这是我最近在 AI 领域看到的最令人兴奋的发展之一。
参考:
https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat/
https://medium.com/@ilhnsevval/quick-start-to-autogen-multi-agent-workflow-f989b72ba3bb