查看原文
其他

AutoGen零代码构建⾃⼰的智能助理

ruby ruby的数据漫谈
2024-09-27

摘要:AutoGen官网上这张图非常有意思,让多个ChatGPTs协作完成复杂任务。大语言模型兴起的时候,大家都很兴奋,感觉AI很快就能在实际工作起到巨大的作用。但实际把类似ChatGPT这样的工具,嵌入到业务流程中时,才发现至少有两点不满意,“这不满意,那也不满意”。特有的应用场景,通用化工具是很满足的,AI Agent更大的灵活性和自动化能力,使之成为未来重要的研究方向。


  • Autogen的基本概念

  • AutoGen能做什么

  • AutoGen的优势

  • AutoGen的应用场景

  • AutoGen的问题


01

Autogen的基本概念


AutoGen是微软推出的一个框架,它通过多个能够相互对话以解决任务的代理(agents),实现了LLM(Large Language Model)应用程序的开发。AutoGen代理具有可定制性、可对话性,并且能够无缝地允许人类参与。它们可以在采用LLM、人类输入和工具的各种模式下运行。

  • 12月31日:AutoGen:通过多代理对话框架实现下一代LLM应用程序被TheSequence选为2023年我最喜欢的五篇AI论文之一。

  • 11月8日:AutoGen在分拆后的35天内被选入Open100:前100个开源成就。

  • 11月6日:Satya Nadella在大约13:20左右的一次炉边聊天中提到了AutoGen。

  • 11月1日:AutoGen是GitHub在2023年10月的最热门仓库。

  • 10月03日:AutoGen从FLAML中分拆并在GitHub上有了重大的论文更新(首次版本于8月16日发布)。

短短几个月在Github上已经获得了20多K的星星,可见大家对AutoGen的兴趣还是非常高的。


02

AutoGen能做什么


AutoGen使得基于多代理对话的下一代LLM(大型语言模型)应用程序能够以最小的工作量进行构建。它简化了复杂LLM工作流的编排、自动化和优化。它最大程度地提高了LLM模型的性能,并克服了它们的弱点。它支持复杂工作流的多样化对话模式。借助可定制和可对话的代理,开发人员可以使用AutoGen构建涉及对话自治、代理数量和代理对话拓扑的各种对话模式。它提供了一系列具有不同复杂性的工作系统。这些系统涵盖了各种领域和复杂性的广泛应用。这展示了AutoGen如何轻松支持多样化的对话模式。AutoGen提供了增强的LLM推理。它提供了API统一和缓存等实用工具,以及错误处理、多配置推理、上下文编程等高级使用模式。

 

AutoGen提供了两类Agent,AssistantAgent和UserProxyAgent,都继承了父类ConversableAgent。AssistantAgent配置了默认的系统消息。默认系统消息旨在使用LLM解决任务,包括建议Python代码块和进行调试。UserProxyAgent用户的代理,可以执行代码并向其他代理提供反馈。默认情况下,每次接收到消息时,代理都会提示用户输入。代码执行默认启用。默认情况下禁用基于LLM的自动回复。可以修改配置信息,自定义方法。GroupChat是一个比较有意思的方式,可以把多个Agent放到一个组里,让它们协同工作再对外输出,有点像公司组织架构的部门。


AutoGen Studio创建智能助理

AutoGen Studio是AutoGen的一个操作界面 ,通过可视化配置的方式 ,就可以创建自 己的代理 ,非常简单方便。

在准备好的python环境中安装 ,要求3.10或以上版本 ,然后启动 ,访问

http://127.0.0.1:8081/


启动速度还是相当快的 ,界面如下:

一级菜单有三个Build、 Playground、Gallery。Gallery是一个已发布的应用集合 ,不做 介绍。先看看Build

Skills是提供能给Agent调用的python代码 ,可以在创建Agent时配置 ,通过合适的 prompt由Agent决定是否调用;

Models配置大语言模型的信息 ,比较简单 ,按提示配置就好;

Agents配置代理信息;

Workflows有two agents和group chat两种 ,这里我选择了Demo的旅行计划 ,如果之 前有修改Model的配置信息 ,注意要把包含的Agents对应的Model修改一致;

到这里配置就完成了 ,接下来切换到Playground。


通过日志输出可以看到 ,primary_assistant扮演了一个私人助理的角色。

local_assistant相当于是一个当地导游的角色 ,开始给出计划。

language_assistant是语言助理 ,可能这个流程设置的时候就是为全球旅行吧。

primary_assistant开始结合上面local_assistant 和 language_assistant的输出总结计 划。

接下来好几轮都是都是primary_assistant在输出 ,但最终内容没有什么变化 ,这个过 程中始终没有看到group_chat_manager的输出。历时10分钟 ,最终输出计划。


这种AI的交互方式非常有意思 ,进一步降低了创建应用的门槛 ,使得越来越多的人不 需要编程的技能就能发布自己的应用。

还存在一些问题 ,输出一篇旅游计划要10分钟 ,这个效率大大低于直接用ChatGPT; 我这里是设置了不用等用户输入 human_input_mode=NEVER ,所以整个过程就是等就行了 ,过程是动态的 ,试了几次 ,每次流程都不一样 ,输出也不一样。所以要达到  生产要求 ,还有很多事情要做。

这个问题输入到普通的chatgpt里面,出来的结果差别不大。

其实这个案例相对简单,并没有发挥多智能代理的能力,我这边再举一个具体的例子来说明,可能会比较详细一点,例如你直接问比亚迪股票2023下半年最近的价格趋势是?能用图形化展示吗?股票趋势受哪些因素的影响?当问这个问题的时候,目前的chatgpt是回答不出来的,因为它没有相关的知识,那么如果要回答这个问题,

第一、它能够知道去哪里获取比亚迪股票的数据?即上网检索数据,爬取数据,即上网检索数据和写代码获取数据的能力。‍‍‍‍

第二步将获取的数据写python 代码,图形化展示。写代码展示数据的能力。

第三步上网检索影响股票因素的新闻,并抽取新闻内容。即上网检索数据的能力,和抽取新闻,总结内容的能力。

如果将这三步的上网检索内容、检索数据、写代码的能力、以及抽取新闻、总结新闻的能力配置到它的skill里面,类似是低代码的方式,它的s kell就是AIGC所拥有的基本能力,通过多个能力的排列组合完成一个复杂的任务,即通过配置基本的skill能力和语言问题完成复杂的功能。这个和我们常见的低代码是否类似,不过这种低代码不是图形化的,而是语言类型的低代码。

说一个相对比较容易理解的方式,就是这个工具提供的一个配置基本能力的框架,以及组合流水线的方式,当你设计好一款产品例如汽车,也设计好安装的基本流程(各种基本能力执行的顺序),那么按照顺序执行(顺序组装零件)、就可以生产一辆汽车了(就可以得到你想要的结果了),这样比如是不是好理解一些了,大家可以尝试一下。‍




03

AutoGen的优势


对比LangChain中Chain和单个Agent的概念,AutoGen能简单实现自然语言的对话驱动控制,允许代理拓扑根据不同输入问题实例下的实际会话流程而改变,这在复杂的无法预测的业务场景非常有用。如果我希望做一个旅行计划,具体的时间可能会受航班或者交通情况等影响,Agent可以帮我先查询具体的信息后再做决定。

AutoGen的优势可以从其在自动化、代码生成与执行、面向任务三个方面的应用能力来概括:

1.自动化:

·任务代理:AutoGen允许用户通过代理颁布任务,它能理解任务需要并将其分解成合理的步骤。

·参数设置:用户可以通过精细的参数设置来指导AutoGen如何执行任务,实现高度定制化的自动化流程。

·全程自动化:通过设定参数后,AutoGen能够执行全自动化流程,用户无需参与其中的任何步骤,实现“一键式”操作。

·代理助手:生成的代理助手和用户代理可以协同工作,分步骤地完成复杂任务,提高了任务的执行效率。

2.代码生成与执行:

·快速原型创建:AutoGen能够基于用户需求快速生成代码,这对于需要迅速构建原型的开发者极为有用。

·功能具体实现:不仅仅是原型,AutoGen还能针对具体的功能和需求生成可执行的代码。

内置Python解释器:因为AutoGen内置了Python解释器,它可以直接执行生成的Python代码,省去了在其他环境中部署代码的需要。


3.面向任务:

·任务专注:AutoGen的设计初衷是为了高效地完成特定任务,这使得它在执行任务时比通用的编程方式更加高效。

·用例特化性能:由于AutoGen对特定任务有更深入的专注,它能够在这些用例中提供更优化和更合适的性能表现

AutoGen能够提供从代码生成到任务执行的全方位自动化解决方案,尤其是在需要快速迭代和应对复杂任务的环境中表现出色。它的自动化、代码即时执行和面向任务的设计,让它成为现代软件开发中富有价值的工具,使得开发工作变得更加高效、精确和可控。


04

AutoGen的应用场景


AutoGen的能力可以被应用于非常广泛的领域,不仅限于传统的软件和数据科学类项目,还可以扩展到工业自动化、教育、游戏开发、健康医疗等多个行业。下面是一些具体应用领域的介绍:

软件工程:

在软件开发方面,AutoGen可以自动生成和执行代码,加快开发过程,减少bug率。它也可以用于自动化测试,快速找出现有代码的缺陷,并提供解决方案。

数据分析与数据科学:

AutoGen可以用于构建数据分析管道,包括数据预处理、模型训练和结果分析。自动选择最佳算法和参数调整,增强模型性能,并缩短项目周期。

机器学习与人工智能:

在机器学习领域,AutoGen能够自动化构建和调优机器学习模型,这对于非专业人士来说非常有价值,因为它降低了进入门槛。

供应链管理:

AutoGen可以应用于供应链优化问题,自动分析和优化库存管理、物流规划和需求预测等关键流程。

游戏开发:

对于游戏行业,AutoGen能够帮助开发者自动化生成游戏代码、协助设计AI行为,并能够自动进行游戏测试。

教育:

在教育领域,AutoGen可以自动生成教学材料、习题和测验,以及利用智能代理来进行个性化教学,改善学习体验。

健康医疗:

AutoGen能够帮助研究人员和临床医生分析医疗数据,自动生成诊断报告、治疗建议,甚至辅助药物发现和基因组分析。

多行业协作:

在设计和规划领域,AutoGen可以协助多个代理协同工作,如在建筑和城市规划中,代理可以帮助自动解决复杂的规划难题。

互联网技术:

AutoGen还可以融入Web技术中,用于自动化网页内容创建,进行信息的自动化检索和分析,并结合社交媒体数据进行市场分析。

客户支持与服务:

在客户服务领域,AutoGen能够生成自动响应机器人,基于用户输入提供定制化的帮助和支持。

通过这些领域的应用,AutoGen不仅仅是简化了各行各业的操作流程,更是以其自适应和高效能力赋予了这些行业发展和创新的新动力。


05

AutoGen的问题


1.针对特定场景设计的框架,跟LangChain对比,显得应用范围比较窄,框架没有支持的能力,用起来就比较费劲了。

2.依赖用户输入,完全自动化可能效果不可控,用户输入很重要,但是给出好的提示词也不是一件简单的事。

3.Agent的底层也是大模型的推理,会跟大模型频繁交互,而且AutoGen默认还是用GPT4,费用是个比较头疼的问题。


欢迎加入【数据行业交流群】社群,长按以下二维码加入专业微信群,商务合作加微信备注商务合作




往期历史热门文章:

基于DataOps的数据开发治理:实现数据流程的自动化和规范化

数据平台:湖仓一体、流批一体、存算分离的核心问题及原因解析

数据治理体系该怎么建设?

实时数仓&流批一体技术发展趋势

数据仓库、数据中台、大数据平台的关系?

数字化转型如何促进业务的发展

数据中台中的核心概念解析

数据治理中的数据标准的作用?

全面数字化转型:打造全新营销模式



修改于
继续滑动看下一个
ruby的数据漫谈
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存