文章目录
一、AutoGen简介
AutoGen是微软推出的一个Multi-Agent框架,允许用户创建和管理多个智能体,以协同完成复杂的任务。AutoGen具有 可定制 和 可对话 的能力,同时支持 人类输入 和 工具扩展 的能力。基于AutoGen可以简化、优化和自动化大型语言模型的工作流程。
- Github 项目地址:https://github.com/microsoft/autogen
- AutoGen 官方文档:https://microsoft.github.io/autogen/stable/
- AutoGen 中文文档:https://www.aidoczh.com/autogen/stable/
1.1 AutoGen的特点
- AutoGen最大的特点是其 可定制、可交互、可人工干预。每个Agent都可以具有不同的能力,通过多个Agent之间的对话可以解决它们的局限性。
- AutoGen具有 高可扩展性,可以根据不同的场景,定义并实现所需的Agent类型(通过扩展子类实现)。
- AutoGen将复杂的Multi-Agent简化为定义 一组具有特定能力和角色的Agent。用户可以定义Agent之间的互动行为,包含定义Agent角色,及其协同模式。例如,如果我们要构建一个工程团队,我们可能会有一个是工程师,另一个是项目经理,再有一个是质量保证等等。然后你需要定义Agent之间的互动行为,即当一个Agent从另一个Agent收到消息时该如何回复。所以你不仅仅是在定义Agent和角色,你还在定义它们如何协同工作。
- AutoGen并不完全依赖于OpenAI的API(当然它自身提供了对OpenAI的API支持),只要提供了API,用户可以用Autogen对接任何LLM。

上图中,AutoGen使用多智能体对话实现了复杂的基于LLM的工作流。(左)AutoGen代理可以定制,可以基于LLM、工具、人员,甚至是它们的组合。(右上角)代理可以通过对话解决任务。(右下角)该框架支持许多其他复杂的对话模式。
1.2 AutoGen的实现
AutoGen的核心设计原则是使用多Agent对话来简化和整合多Agent工作流程。其旨在最大限度地提高实现Agent的可重用性。 AutoGen主要包含两个关键概念:可对话Agent和对话编程。
1.2.1 可对话Agent
在AutoGen中,可对话智能体是一个具有特定角色的实体,可以传递消息与其他可对话智能体之间发送和接收信息,例如启动或继续对话。它根据发送和接收的消息维护其内部上下文,并可以配置具有一组能力,例如由LLMs、工具或人类输入等启用。
虽然对大模型领域对 Agent 的定义有许多种,但 在 AutoGen 中,代理是一个能够发送消息、接收消息,并通过模型、工具、人类输入或它们的组合生成回复的实体。代理可以由模型(例如大型语言模型 GPT-4)、代码执行器(如 IPython 内核)、人类,或这些组件的组合构建。
(1)由LLMs、人类和工具提供支持的智能体能力
AutoGen支持根据需求灵活的赋予智能体各种能力,其能力可以是以下能力的单个或者多个之间的组合。
- LLMs:基于LLMs的智能体,可以利用LLMs的许多优秀能力,如角色扮演、基于对话历史的简化性推理、提供反馈、根据反馈进行适应等。通过提示技术,这些能力支持以不同的方式组合起来,以增加智能体的技能和自主性。AutoGen还加强了LLM的推理能力,如结果缓存、错误处理、消息模板等。
- 人类:AutoGen允许人类参与到智能对话中,具体取决于智能对的配置,可以在对话的某些回合征求人类输入。
- 工具:AutoGen支持基于代码或函数来扩展其工具。
以AutoGen框架中的ConversableAgent代理为示例,它支持下面的组件:
- 一个LLM列表
- 一个代码执行器
- 一个函数和工具执行器
- 一个用于人工参与的组件

下面的例子中构建一个打开GPT-4o-mini模型组件,关闭其他组件的 ConversableAgent:
import os
from dotenv import load_dotenv
from autogen import ConversableAgent
load_dotenv()
api_key = os.getenv("API_KEY")
api_version = os.getenv("API_VERSION")
base_url = os.getenv("BASE_URL")
# Create an instance of ConversableAgent
agent = ConversableAgent(
"chatbot",
llm_config={
"config_list": [{
"model": "gpt-4o-mini", "temperature": 0.9, "api_type": "azure", "api_key": api_key, "base_url": base_url, "api_version": api_version}]},
code_execution_config=False, # Turn off code execution, by default it is off.
function_map=None, # No registered functions, by default it is None.
human_input_mode="NEVER", # Never ask for human input.
)
你可以向上述构建好的agent提问,并使用generate_reply方法获得代理对问题的回答:
agent.generate_reply(messages=[{
"content": "给我讲一个童话故事.", "role": "user"}])
'从前,在一个遥远的王国里,住着一位美丽善良的公主,名叫小莉。小莉公主非常喜欢大自然,尤其是花朵和动物。王国的花园里种满了五彩缤纷的花朵,公主每天都会在花园中嬉戏,与小动物们玩耍。\n\n然而,王国的另一边住着一位邪恶的女巫,她非常嫉妒小莉公主的美丽和快乐。女巫决定要给公主一个教训,她施下了一个恶咒:每当白天的阳光落下,公主的花园就会被浓厚的黑暗笼罩,花朵会枯萎,小动物们也会逃离。\n\n小莉公主得知这个诅咒后,心中充满了忧虑。她决定去寻找能打破诅咒的办法。于是,公主踏上了旅程,她走过高山、穿越树林,最终来到了女巫的城堡。\n\n公主勇敢地敲响了城堡的大门。女巫见到小莉,冷冷一笑,问道:“公主,你来这里做什么?”小莉毫不畏惧地回答:“我来解除你的诅咒,给我的花园和小动物们带回光明。”\n\n女巫被公主的勇气所震撼,但她并不打算轻易放过小莉。女巫提出了三个难题,只有答对了,才能解除诅咒。小莉毫不退缩,认真思考每一个难题,凭着自己的智慧和对大自然的了解,最终成功解答了所有难题。\n\n女巫见状,心中不禁有些感动。她意识到,自己虽然拥有强大的魔法,但却没有小莉那样纯真的心灵。于是,女巫决定放弃她的恶意,将诅咒解除,并赠予公主一朵魔法花,这朵花可以带来永恒的光明。\n\n小莉公主带着这朵魔法花回到了自己的王国。当天晚上,公主将花放在花园中央,顿时,整个花园被温暖的光芒笼罩,花朵再次绽放,小动物们也纷纷回到了这里。\n\n从此以后,公主和女巫成为了朋友,女巫也用她的魔法来帮助王国的发展。而小莉公主则继续守护着她的花园,和大自然的所有生灵分享着快乐和爱。\n\n这个故事告诉我们,勇敢和智慧能够战胜邪恶,而爱与友谊能让世界变得更加美好。'
(2)Agent定制和合作
AutoGen允许通过重用或扩展内置智能体轻松创建具有专业能力和角色的智能体。
图2的黄色阴影区域提供了AutoGen中内置智能体的草图。
ConversableAgent类是最高级的智能体抽象,可以默认使用LLMs、人类和工具。AssistantAgent和UserProxyAgent是两个预配置的ConversableAgent子类,分别表示常见的使用模式。AssistantAgent作为AI助手(由LLMs支持)和UserProxyAgent作为人类代理以征求人类输入或执行代码/函数调用(由人类和/或工具支持)。

图2:使用AutoGen实现多智能体对话的示意图。顶部子图示例AutoGen提供的内置智能体,这些智能体具有统一的对话接口并可进行自定义。中间子图显示了使用AutoGen开发具有自定义回复函数的双智能体系统的示例。底部子图说明了在程序执行期间从双智能体系统中产生的自动化智能体对话。
例如,在下面的示例中,我们通过设置代理的 system_message 来为两个代理分配不同的角色。
degang = ConversableAgent(
"Guodegang",
system_message="你是相声演员郭德纲,你善于活灵活现的运用各种修辞手法,并辅以时事,将相声艺术的讽刺性发挥到极致",
llm_config={
"config_list": [{
"model": "gpt-4o-mini", "temperature": 0.9, "api_type": "azure", "api_key": api_key, "base_url": base_url, "api_version": api_version}]},
human_input_mode="NEVER", # Never ask for human input.
)
yuqian = ConversableAgent(
"Yuqian",
system_message="你是相声演员于谦,你的台风儒雅沉稳,自然从容。与郭德纲嬉闹灵动,充强扮愣的喜剧风格相得益彰",
llm_config={
"config_list":

最低0.47元/天 解锁文章
1993

被折叠的 条评论
为什么被折叠?



