逐步掌握最佳Ai Agents框架-AutoGen 一

微软 最新推出的大语言模型框架AutoGen,号称目前地表最强AI Agents。不知道有多少朋友和我一样,在感受了LangChain Agents的大力出奇迹后,又心痒难耐想把AutoGen搞起....

好吧,那就一起来吧。AutoGen在构建复杂的基于大语言模型工作流方面,挺好用的,大家可以看AutoGen:Enabling next generation large language model applications文档的介绍。我的天啊,LangChain还没有怎么搞熟,下一代的AutoGen就来了。

何为AutoGen

AutoGen是一个AI应用开发框架,允许使用多个代理程序,也就是Agents来开发具有相互对话能力,以解决任务度的大语言模型应用程序。简化了复杂的大语言模型工作流的编排、自动化和优化,它最大程的提高了大语言模型的性能。

什么神仙打架,八仙过海,各显神通,说的就是AutoGen吧。以后,我们的AI应用就是复仇者联盟,写代码的我们只要打下响指,一切搞定....

LLM工作流

设计、实施和优化一个能够充分发挥大语言模型潜力的工作流程是需要大量的工作和专业知识的。自动化这些工作流程具有极大的价值。随着开发人员开始开发越来越复杂的基于大语言模型应用程序,工作流会更加的复杂。AutoGen尝试在这些方面帮我们解决一些问题。

接下来,就让我们结合Getting Started | AutoGen (microsoft.github.io)来一起学习起来吧。

AutoGen

AutoGen允许以最少的Code,来构建基于多代理对话的LLM应用。下面,我们来看官方给的例子。在这个例子中,我们要搞明白AutoGen和agents 之间的关系,agents和agents是怎么相互对话的。

Multi agent conversation framework

  • ConversableAgent

是一个基于对话的,其它可对话的代理。它管理着AssistantAgent、UserProxyAgent和GroupChatManager,它们分别代表不同的代理类型。

  • AssistantAgent

在AutoGen中担任AI助手的角色。它会默认使用LLM,为用户编写代码(比如python),然后由用户执行。它还可以接收执行结果并提出更正或修改建议。

  • UserProxyAgent

它就好像管家,当得到我们的授权后(征求我们的输入,或提供一些提示,比如是否继续还是退出?),会代理我们去做一些事情。它还具有执行代码和调用函数的能力(接收到的消息中),就好像您家大业大,您是王多鱼,那么管家也是需要指使人去修剪草坪,做饭 什么的,听起来太美好了....

  • GroupChatManager

群组聊天管理器,它可以包含多个AssistantAgent\UserProxyAgent。按功能逻辑,封装起来。

UserProxyAgent和AssistantAgent 自动对话Demo

上图,最左边是两个Agent,分别是Assistant Agent和User Proxy Agent。在中间,用户发出指令后,不再需要干预,这两种Agent就自动相互对话解决了问题。最右边,输出了结果。

为了更好的理解Agent间的自动对话,我们上代码。

Solving Tasks Requiring Web Info Demo

代码的python notebook 地址 [notebook](autogen/notebook/agentchat_web_info.ipynb at main · microsoft/autogen (github.com)) 可以在colab上运行代码看效果。

  • 首先我们来安装两个包,分别是AutoGen和docker。
python 复制代码
%pip install pyautogen~=0.2.0b4 docker -q -U
  • 加载配置列表

在配置列表中定义了模型和对应的API_KEY。

python 复制代码
llm_config={
    "timeout": 600,
    "cache_seed": 42,
    "config_list": config_list,
    "temperature": 0,
}
# 根据自己的模型使用情况和API_KEY 设置
config_list = [
    {
        'model': 'gpt-3.5-turbo',
        'api_key': '*****************************'
    }
]
  • 创建Agents
python 复制代码
# create an AssistantAgent instance named "assistant"
assistant = autogen.AssistantAgent(
    name="assistant",  # 助理Agent
    llm_config=llm_config  # 配置
)
# create a UserProxyAgent instance named "user_proxy"
user_proxy = autogen.UserProxyAgent(  
    name="user_proxy", #代理Agent
    human_input_mode="TERMINATE",
    max_consecutive_auto_reply=10,
    is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
    code_execution_config={"work_dir":"web"},
    llm_config=llm_config,
    system_message="""Reply TERMINATE if the task has been solved at full satisfaction.Otherwise, reply CONTINUE, or the reason why the task is not solved yet.
    
    """
)
  • 接下来两个Agent一起合作,通过一篇文章的链接,告诉我们谁应该来阅读这篇论文。
python 复制代码
user_proxy.initiate_chat(
    assistant,
    message="""
        Who should read this paper: https://arxiv.org/abs/2308.08155
    """
)

代码执行后,我们看下过程:

  如上图,首先user_proxy,这个人类代理向assistant助手,提问谁应该来读这篇文章。

  助理会尝试回答这个问题,需要了解论文中的内容和它上下文信息。它给到我们一段python脚本,去获得论文的内容,将摘要信息抽取出来,并告诉proxy 运行这段代码。

  在这里user_proxy 就成功执行(execution succeeded)了刚刚assistant给的代码, 助理接下来根据这个摘要,来决定接下来哪些人是适合读这篇文章的。

最后给了我们一个输入框,告诉我们可以回车,或者是输入exit来终止这次会话。 由此可见,这次的任务绝大部份工作都是由user_proxy和assistant之间,通过对话自动完成的

总结

这就是AutoGen如何使用,帮助我们将大语言模型的工作流拆分成独立的、可控的、可调试的小的功能单元,以Agent的形式存在,Agent与Agent之间的基于对话的交流,完成自动化的,基于大语言模型工作流的执行。

相关推荐
程序员X小鹿5 小时前
免费,手机可用!一款AI数字人生成工具,200+数字人形象任选,3分钟定制专属数字人!(附教程)
aigc
JarodYv7 小时前
GPT-5 要来了:抢先了解其创新突破
gpt·openai·生成式ai·gpt-4·gpt-5
狼爷11 小时前
Reddit 舞台上的 AI:解码用户生活密码,隐私警钟敲响
安全·aigc
AI极客菌14 小时前
[ComfyUI]Flux:繁荣生态魔盒已开启,6款LORA已来,更有MJ6&写实&动漫&风景&艺术&迪士尼全套
ai作画·stable diffusion·aigc·midjourney·人工智能作画·comfyui·风景
袁庭新18 小时前
安装luasocket模块时提示“sudo: luarocks:找不到命令“问题,该如何解决?
java·人工智能·ai·aigc·lua·luarocks·袁庭新
阿牛牛阿1 天前
多模态大模型(1)--CLIP
算法·机器学习·ai·aigc
想成为高手4991 天前
成功男人背后的女人--解析AIGC幕后的算法原理
算法·aigc
量子位1 天前
百度打通两大国民产品!六边形 AI 创作新物种「自由画布」来了
人工智能·aigc
hunteritself1 天前
Sam Altman:年底将有重磅更新,但不是GPT-5!
人工智能·gpt·深度学习·chatgpt·openai·语音识别
全域观察1 天前
出海攻略,如何一键保存Facebook视频素材
人工智能·新媒体运营·aigc·内容运营·程序员创富