前言


你也许尝试过让大模型基于你的工作总结写一份周报,然后你再手动发送周报的邮件给你老板。如果有一个程序可以接收这样的输入,把你的工作总结转化为周报,还能通过电子邮件发送给你的老板,这样的程序就是本章节即将介绍的“Agent”。接下来,我们将带你拆解Agent背后的实现思路,并探索单Agent、多Agent在现实世界的应用。

课程目标


学完本课程后,你将能够:

  • 了解大模型 Agent 是什么,能解决什么问题
  • 了解人机交互的前沿方向,激发创新性思考

1 认识大模型Agent


1.1 大模型Agent是什么

从软件工程的角度来看,大模型Agent是指基于大语言模型的,能使用工具与外部世界进行交互的计算机程序。

在不同的翻译场景中,Agent可以翻译为智能体、代理、智能助手等,本文中提到的“智能体”即是Agent。

如果把Agent类比成人类,那么大模型相当于大脑,而工具就是四肢。Agent能够通过工具实现与外部世界的交互,而工具通常就是之前介绍过的插件。

实际上,现有的大模型Agent通常也具备规划能力和记忆能力,比如一个典型的Agent会是这样:

 

 

假设你有一个智能家庭助理,它可以帮助管理家庭中的各种事务:

  1. 感知(Perception):
    • 家庭助理通过摄像头、麦克风、传感器等设备获取家庭成员的活动信息和环境状态。例如,它可以“看到”房间里的光线情况,听到你和它的对话,感知到家里的温度等。
  1. 思考(Reasoning):
    • 家庭助理根据获取的信息来“思考”下一步应该做什么。如果你说“我有点冷”,它会从数据库中查询当前的温度数据,结合你的偏好(已存储或通过对话学习得来的),决定是否应该调整温度。
    • 如果它检测到今天是垃圾回收日且垃圾桶已满,它会提醒你或自动安排机器人将垃圾桶移到指定位置。
  2. 行动(Action):
  • 家庭助理可以执行一些具体的行动来响应你的需求。例如,它可以调整温度,打开或关闭窗帘,启动车库门,甚至下单购买你常用的家庭用品。

通过这个智能家庭助理的案例,我们可以形象地看到Agent是如何通过感知、思考和行动来帮助完成复杂任务并提高生活便利性的。智能家居中的各种设备与Agent的协作,形成一个协调、智能的家庭环境。 

 

通过前面的学习,我们已经知道大模型是怎样使用工具的,接下来我们将一起学习Agent是如何具备记忆能力和规划能力的。

1.2 让Agent具备记忆能力

记忆可以辅助大模型生成计划、决策、内容,就像人类一样,现代的智能体也具有记忆力。

1.2.1 短期记忆(Short-Term Memory)

想象你在超级市场购物时,暂时记住了一串购物清单,但一旦结账离开后,这些信息会很快就忘记了。这就是短期记忆,它帮助我们处理和暂时存储当前需要的信息。

在大模型Agent中,短期记忆对应着用户与大模型Agent之间的历史对话、提示词、搜索工具反馈的语料块等等,但这些信息仅与当前用户与大模型的对话内容有关。一旦用户关闭应用或离开聊天环境,这类信息就消失了。

我们需要将短期记忆中的内容提供给大模型做参考,因此大模型支持的上下文长度决定了我们可以提供给大模型做参考的信息量。为了确保使用正常,我们会减少传递给大模型的历史记录数量,导致一些人在使用大模型时,会发现大模型只有“很短”的记忆,刚刚沟通过的事情,几句话之后大模型竟然忘了。

但另一方面,如果我们使用支持超长上下文的大模型,我们有可能会遇到另一个问题,对近邻信息敏感度更高的问题(recency问题)。也就是说,虽然我们可以给大模型传递很长的历史记录,但是大模型只对靠近提示词末尾部分的信息更感兴趣,如果你需要检索的信息恰好被编辑到提示词最开始的部分,大模型也有可能无法向你提供正确的答案。

1.2.2 长期记忆(Long-Term Memory)

长期记忆是指我们大脑中长期存储的信息,比如你的童年回忆、学习到的知识和技能。这些信息可以存储非常久,有时甚至是一辈子。

在大模型Agent中,长期记忆对应着系统持久化的信息,如业务历史记录、知识库等,通常存储在外部向量数据库和文档库中,Agent会利用长期记忆来回答用户私有知识或专业领域相关的问题。

1.3 让Agent具备规划能力

想象一下,你要完成一个复杂的任务,比如:组织一场大型生日派对。这个任务涉及很多步骤,从邀请客人、准备食物到布置场地等等。要成功地完成这个任务,最好先将它分解成若干小的、可管理的步骤。例如:

  1. 准备邀请函
  2. 选择菜单
  3. 布置场地
  4. 确认表演节目

通过将大任务拆分成小任务,你可以更有条理地完成整个计划。我们可以让Agent在处理复杂任务时也使用类似的方法。

1.3.1 任务分解

在前面优化提示词的章节中,我们其实已经介绍了任务分解的方式,即思维链、思维树等方式,这里将针对Agent场景进一步探讨。

                                                                                图:几种任务分解方式

 

1.3.1.1 思维链(Chain of Thought,CoT)

把复杂任务分解为链式思维最早是用来解决数学题的。如下图所示,我们想让大模型来求解 (23-20+6=?) 这样的数学题,但是早期的大模型往往搞不清多步数学运算的内在逻辑,算不准。后来,Wei等人(2022)发现了这个CoT的方法,如果我们在提示词里明确写上让大模型“一步一步思考”,那么大模型就会开始拆解计算的步骤,最后得到正确的结果。如下图绿色部分所示。

                                                                            图:链式思维模式的效果对比

 

但如果我们用Agent的方式来做这道数学题,我们的方法就可以不仅仅局限于在提示词中加上“一步一步思考”这句话来解决问题了,我们还可以使用计算器直接计算、使用代码解析器先编程后计算、或者我们用循环迭代的方式,先让大模型拆解步骤,再一步一步推理执行。我们还可以先让大模型判断一下问题的复杂度,从以上三种方式中选择一个合适的方法,然后再继续执行。

对于复杂的应用场景,不管是人为将任务分解成多步执行,还是让大模型自己来分解任务,都会比直接让大模型给出判断要稳妥,也便于系统在大模型的工作流程中进行监控和管理。

1.3.1.2 思维树ToT(Tree of Thought)

思维树(ToT)则进一步扩展了思维链的概念,通过构建一个具有分支和选择的树形结构来处理复杂问题。

例如,我们先问问大模型“做西红柿炒鸡蛋需要几步?把每一步的任务目标列出来”。或者人为把做一道菜的步骤分层。

大模型可能会回答:准备食材、烹饪食材、装盘,三个步骤。也可能是:洗菜、切菜、搅打鸡蛋、炒菜、装盘,五个步骤。

接下来,我们会在每一步询问大模型,有哪些做法?应当如何处理?比如在切菜环节我们可能会问“西红柿怎么切?切丁?还是切块?”,在炒菜环节我们可能会问“先炒鸡蛋还是先炒西红柿?先放盐还是先放糖?”等等,在每个步骤,我们都可以让大模型生成多种方法供选择。

最后,我们需要把这些方案进行汇总,选出一条我们最满意的炒菜方案作为我们的菜谱。这就是在决策树上采用深度搜索或者广度搜索来确定一条最佳路径。

在这一模式中,我们尽可能让大模型生成多条可以探索尝试的路径,我们在应用层面评估每条路径的结果和影响,然后选择最优的解决方案。这种方法特别适用于那些不确定性较高、路径选择众多的问题,例如复杂的决策树分析、多步骤规划,以及需要权衡不同因素的优化问题。

1.3.1.3 扩展阅读:思维图GoT(Graph of Thoughts)及其他

虽然ToT的方法比较接近人类思考问题的方式,但在实际使用中,我们还可以考虑对思维树进行执行上的优化,比如Besta等人(2023)提出了思维图(GoT)。比如在执行中发现了问题可以回溯到上一步;在评估前对执行出了问题的方案做剪枝(在同一层多个相同执行的节点可以进行合并等),所以我们可以把思维图看做是对思维树的工程优化。

实际应用中我们也要考虑树思维做剪枝,比如系统在同一步骤中生成的多个治疗方案有可能是重复的,而有一些疾病的治疗手段非常相似。

之后,Ding等人(2023)提出了XoT(Everything of Thoughts),试图整合各种任务分解的方案,构建一种能平衡性能、效率、灵活性的终极方案。这个框架设计加入预训练强化学习和蒙特卡洛搜索方法,并引入外部领域知识和规划能力。

这一小节为扩展阅读,如果看不明白也没有关系。如果感兴趣,请参考论文代码进一步了解。

1.3.2 推理与反思

大模型经过CoT等方式进行推理后,确实给出了更好的结果,但是这个结果实际上不一定符合我们的规划或需求。

针对这个问题,一个比较有效的办法就是,让大模型进行自我反思,简单来说,就是让大模型先审视自己的结果,然后再输出结果。就像人类写文章一样,如果在文章定稿之前进行反复回读和审视,就可以不断地优化文章的内容,提升最终文章的质量。

ReAct方法

Yao等人(2022)提出了推理(Reasoning)与行动(Acting)相协同的方法,简称ReAct。ReAct就像是厨师在做菜时,不仅在自己思考,还同时在实际操作中不断调整。比如:

  1. 思考(Thought):厨师在准备食材前,会构思菜谱和步骤。
  2. 行动(Action):开始切菜、炒菜,每一步都按照步骤来做。
  3. 观察(Observation):尝一口汤,看看味道如何。
  4. 循环(Loop):根据汤的味道,再思考下一个步骤,进行调整。

ReAct方法让大语言模型不仅能“思考”还可以“行动”和“观察”环境,比如使用维基百科的搜索API来获取信息,并生成自然语言来记录思考过程。

ReAct方法的实现原理是把思考、推理、观察整合到提示词模版中,让大模型在具体工作中既可以基于环境反馈选择使用何种工具来完成工作,又可以基于环境反馈推理是否可以给出任务的答案。

ReAct-Agent的运行逻辑

 

大模型在ReAct提示词的引导下完成推理、行动、再推理、再行动,直至生成最终答案。

  • 当大模型接收到用户请求的时候,大模型先判断能不能解答用户的问题。
  • 当大模型不能解答用户的问题时,大模型会根据可用工具列表的介绍,选择一个合适的工具。
  • 大模型根据工具的使用说明生成调用指令,并在指令中插入需要的参数。
  • Agent主体程序会根据大模型生成的指令来调用对应的工具服务
  • Agent主体程序等待工具执行完成并收集执行结果。
  • 带着用户问题和执行结果,大模型会再次考虑是否已经解决了问题。如果没有解决,就继续选择一个工具来执行。如果解决了,大模型会生成最终答案,并结束任务。

ReAct提示词模版

在LangChain中,ReAct的提示词模版定义如下。

input_variables=['agent_scratchpad', 'input', 'tool_names', 'tools'] 
template='Answer the following questions as best you can. You have access to the following tools:

{tools}

Use the following format:

Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question

Begin!

Question: {input}
Thought:{agent_scratchpad}'

在上述提示词模版中,大模型根据输入的问题{question},构造了一个思维链。在这个思维链中:问题、思考、行为、行动的输入、行动的结果,这五点是Agent工作的核心。在思考中,我们定义了Agent的scratchpad变量,这个scratchpad可以用于记录Agent的思考过程。在行动中,我们定义了Agent可以使用的工具列表{tools},并且大模型需要从工具列表中来选择一个帮助Agent解决问题的工具。这个思考过程可以进行N次直到Agent认为自己已经解决了问题。这时通过Thought: I now know the final answer来结束这个思考过程,然后通过Final Answer来输出最终的答案。

1.4 小结

了解了大模型Agent的能力之后,我们简单总结一下Agent相对于大模型有什么区别。

  1. 它不局限于输出回答,还能通过插件(工具)与外部世界交互,例如发送邮件、发布文章、联网查询、执行代码、下单购物等……理论上只要是计算机程序能做的事情,它都能做到。
  2. 它不再是被动式地接受多轮提问,而是能自主地推理(拆解任务、选择最优路径)、主动纠错、自主完成任务。你可以让它每完成一个或多个步骤就给你同步进展,和你确认下一步的动作,也可以授权它自主地完成所有步骤。
  3. 它不仅可以完成简单的事情,还能完成复杂的任务,比如搭建一个网站、开发一款游戏,因为它能拆解任务、自我纠错、调用外部工具等。
  4. 它可以自我迭代,吸取历史经验,不断成长,因为它不仅能记住这次会话里你对它的指导,还能记住以前的会话里你给它提过的要求。
  5. 它不仅能完成通用的任务,还能完成特定领域的任务,因为它可以接入特定领域的外部知识库和工具。

2 Agent 应用场景


Agent就像一个全能助手,你可以先梳理自己日常工作或学习中需要做的事情,然后看看哪些可以借助它来完成。

可以让它完成一些简单的事情,比如发送邮件、查询天气。

也可以让它完成更复杂更有难度的事情,比如搭建网站、写文章、制定营销策略、开发软件原型等。

举个例子,你可能需要写一篇文章并发布到一个平台,如果让Agent来完成,它可能会:

  1. 调研哪些主题比较受欢迎。
  2. 根据调研结果,为你选择一个有吸引力的文章主题。
  3. 帮助你收集和整理与主题相关的资料和数据。
  4. 生成文章的大纲,确保结构清晰、逻辑合理。
  5. 根据大纲撰写初稿。
  6. 提供语法和风格的改进建议,并进行多次润色和修订。
  7. 找到合适的平台进行发布,并在合适的时间发布文章。
  8. 制作吸引眼球的标题和摘要,以提高点击率。
  9. 进行SEO优化,提高文章在搜索引擎中的排名。
  10. 监测文章流量和读者反馈,为后续改进提供数据支持。

你可以让Agent每完成一步或几步就和你确认,也可以让它自主完成。Agent不仅可以帮你节省大量时间和精力,还能提高工作效率和成果质量。

接下来让我们看一个AutoGPT的Demo。AutoGPT是开源的Agent应用程序。

 

下面是AgentGPT的Demo。AgentGPT用于在网页里可视化地部署Agent。

 

3 体验基于 ModelScope-Agent 框架搭建的 Agent 应用


如果你仔细分析,记忆、工具、行动这三个能力并不是由大模型来提供的,基本都是一些外部能力。因此,技术社区针对如何实现大模型Agent,诞生了很多学术项目,从多个角度、多种技术手段来构造实现Agent。

其中,ModelScope-Agent提供了一个可定制、可扩展的Agent代码框架。

3.1 ModelScope-Agent能力

利用ModelScope-Agent框架开发的Agent,除了可以提供文本创作之外,还能生成图片、视频、语音等内容。单个Agent具有角色扮演、LLM调用、工具使用、规划、记忆等能力。 技术上主要具有以下特点:

  • 简单的Agent实现流程:仅需指定角色描述、大模型名称、工具名列表,即可实现一个Agent应用,框架内部自动实现工具使用、规划、记忆等工作流的编排。
  • 丰富的模型和工具:框架内置丰富的大模型接口,例如Dashscope和Modelscope模型接口,OpenAI模型接口等。内置丰富的工具,例如代码运行、天气查询、文生图、网页解析等,方便定制专属Agent。
  • 统一的接口和高扩展性:框架具有清晰的工具、大模型注册机制,方便用户扩展能力更加丰富的Agent应用。
  • 低耦合性:开发者可以方便地直接使用内置的工具、大模型、记忆等组件,而不需要绑定更上层的Agent。

                                                      图:ModelScope-Agent系统框架(老版本,仅供参考)

3.1.1 完成一个简单任务

通过对话可以让Agent直接生成视频,虽然这个视频很短也比较粗糙,但是给我们展示了通过调用插件来生成视频的能力。如果我们有更好的文本生成视频的服务,我们可以开发Agent调用我们定制的更好的视频生成模型。

3.1.2 完成由多个步骤组成的任务

我们可以在一句话中描述多个不同的任务,大模型会分析用户请求,安排执行顺序,并依次进行不同任务的规划、调度、执行和结果返回。

  • 目前这个在线演示工具的能力比较基础,因此我们可以要求模型只生成20个字以内的广告词。
  • 语音合成的模型能力比较稳定,语音效果较好。

3.1.3 从多轮对话中提取工具参数

ModeScope-Agent默认带有记忆能力,Agent会在对话中参考历史信息来为客户生成内容,这样可以让用户一边思考一边看到效果,让用户体验更连贯。比如下面的例子,用户想让大模型生成一个小故事,然后想让大模型自己来总结出一个标题、或者生成一段配图或一段视频。这个例子比较像市面上的一些面向小朋友的AIGC产品,既能讲故事,又能自己配上内容。在这个过程中,Agent需要从历史对话中提取信息来完成新的任务,这些信息就是当前调用工具需要的参数。

 

3.1.4 基于检索工具的问答

魔搭Agent可以加载知识库插件和搜索工具插件,这里展示的是modelscope_search插件,你也可以使用自己的搜索引擎API替换这个插件。

 

这个模型链接地址打开后可以看到:

3.2 ModelScope-Agent已集成的工具

ModelScope-Agent项目空间中集成了大量工具。

工具 工具地址 API-KEY配置
web_browser 网页浏览  
web_search 网页搜索  
code_interpreter 代码解释器  
amap_weather 高德天气 AMAP_TOKEN 需要在环境变量中进行配置
image_gen Wanx 图像生成 DASHSCOPE_API_KEY 需要在环境变量中进行配置
qwen_vl Qwen-VL 图像识别 DASHSCOPE_API_KEY 需要在环境变量中进行配置
speech-generation 语音生成 MODELSCOPE_API_TOKEN 需要在环境变量中进行配置
video-generation 视频生成 MODELSCOPE_API_TOKEN 需要在环境变量中进行配置
text-address 地理编码 MODELSCOPE_API_TOKEN 需要在环境变量中进行配置
wordart_texture_generation 创意文字 DASHSCOPE_API_KEY 需要在环境变量中进行配置
style_repaint 人像风格重绘 DASHSCOPE_API_KEY 需要在环境变量中进行配置
image_enhancement 追影放大镜 DASHSCOPE_API_KEY 需要在环境变量中进行配置

此外,ModelScope-Agent框架还支持许多第三方工具的接入,如LangchainTool。

3.3 如何体验

你可以直接访问魔搭空间来体验ModelScope-Agent,如果你感兴趣,也可以下载代码在本地运行 ./examples 中的案例。

项目地址:https://github.com/modelscope/modelscope-agent/

4 Multi-Agent


4.1 什么是Multi-Agent

想象一下,你正在筹备一个盛大的生日派对。如果所有的事情——从挑选主题、发送邀请、装饰房间、烹饪美食到拍摄照片——都由一个人来完成,你可能会感到非常吃力,难以同时保证每项工作的质量。

现在,换成请多个朋友来帮忙。一个创意多的,负责想点子和发请柬;一个摄影技术棒的,负责拍照片;一个做饭好吃的,管做菜;还有个细心的,专门检查装饰,让现场美美的。每个人专注于自己最擅长的事情,不仅整体效率高,而且每个环节都做得更好。

在人工智能领域,这就是多智能体系统(Multi-Agent System)的概念。

你可能也发现了,当你让单个AI Agent全程负责写一篇文章,包括调研、撰写、和校对的时候,可能不是非常理想。

如果分成四个Agent,最终输出的文章质量会更好。

  1. 调研专家 (Research Specialist):

"我的工作是确保信息来源多样、准确,并整合成有用的资料库。"

  1. 内容创作者(Content Creator):

"我的使命是把整理好的信息转化成有逻辑、有深度的文章内容。"

  1. 语法检查者(Grammatical Checker):

"我的目标是确保文章的语言和逻辑没有任何错误;如果文章有问题,我会打回给内容创作者。"

  1. 校对专家(Proofreading Specialist):

"我的责任是将文章进行最终审核,确保其达到最高质量标准;如果文章有问题,我会打回给内容创作者。"

通过给每个Agent制定明确且专业的角色名称和职责描述,不仅可以提升它们的专业性,还能帮助它们更好地理解和配合各自的工作。

Agent之间可以互相指派任务,也可以是一个主Agent带着一系列从Agent协同工作。例如,主Agent可以在调研阶段给Research Specialist提供更明确的方向和关键词;在撰写阶段提供反馈,确保Content Creator的工作方向正确;最后经过各个步骤确认无误,主Agent才提交文章。

4.2 Multi-Agent项目示例

4.2.1 MetaGPT项目介绍

只需要一个prompt,你就可以组建一个软件开发团队,团队里每个成员都是一个大模型Agent,它们将自动分工合作,生成你需要的软件和配套文档。

例如,只要用一个非常简单的prompt“写一个2048的游戏”,就能得到这样一个游戏。

同时还能得到由各个Agent产出的项目文件。

 

更多MetaGPT案例:https://www.deepwisdom.ai/usecase

MetaGPT文档:https://docs.deepwisdom.ai/main/en/guide/get_started/introduction.html

4.2.2 Agent协作Demo

MetaGPT官方Demo视频以“write a cli black jack game”为提示词,展示了各个Agent分工协作的过程。

 

下面用一张图片来介绍多个Agent之间的协作。

如图所示,这个多Agent协作的模式我们可以称之为“消息版”模式,接下来我们解释一下这个模式:

  • 在工作环境中,三个智能体Alice、Bob和Charlie相互之间进行互动。
  • 它们能够向环境(消息版)发布消息或它们的行为输出,而这些消息或输出会被其他智能体所观察到。
  • 这里我们展示智能体Charlie的内部运作过程,这个过程同样适用于Alice和Bob。
  • 在内部,智能体Charlie拥有各类组件包括:大规模语言模型(LLM)、观测(Observation)、思考(Thought)、行动(Action),其中思考和行动可以借助LLM得到强化。智能体在行动时可以使用工具。
  • Charlie会观察来自Alice的相关文档以及Bob的需求,回忆起有用的记忆,思考如何编写代码,执行实际的编写动作,并最终公布其成果。
  • Charlie通过向环境报告它的行动结果来告知Bob。Bob观察到后做出称赞。

4.3 使用多智能体开发平台-AgentScope

                                                         图:AgentScope项目插图

 

4.3.1 项目特点

阿里巴巴发布的AgentScope是一个创新的多智能体开发平台,旨在赋予开发人员使用大模型轻松构建多智能体应用的能力。AgentScope专注于多智能体开发,项目提供了丰富的句法工具、内置智能体和服务功能、用于应用演示和效能监控的用户友好界面、零代码编程工作站以及自动提示调优机制,极大地降低了开发和部署的门槛。

为了实现健壮性和灵活性并重的多智能体应用,AgentScope同时提供了内置及可定制的容错机制。此外,它还配备了系统级的支持,用以管理和利用多模态数据、工具及外部知识。AgentScope还设计了一个基于Actor的分布式框架,使得在本地与分布式部署之间轻松转换,并能自动进行并行优化而无需额外工作。凭借这些特性,AgentScope使开发者能够构建完全发挥智能体潜力的应用程序。

支持的本地模型部署AgentScope支持使用以下库快速部署本地模型服务。ollama (CPU inference)Flask + TransformersFlask + ModelScopeFastChatvllm 支持的服务网络搜索数据查询数据检索代码执行文件操作文本处理

在能力上,AgentScope兼容LangChain、ReAct智能体、支持通过对话查询SQL信息、可以使用Llama3大模型、支持与GPT-4o模型对话、支持RAG智能体对话等多种能力扩展。AgentScope演示了狼人杀等多人游戏,以及分布式对话分布式辩论分布式并行搜索分布式大规模仿真等多种分布式智能体系统。

4.3.2 支持的模型API

AgentScope提供了一系列ModelWrapper来支持本地模型服务和第三方模型API详见链接

项目地址:https://github.com/modelscope/agentscope

4.3.3 样例应用

AgentScope可以用比较少的代码量开发出一个让智能体玩狼人杀游戏的应用,完整代码可以参考狼人杀游戏代码。把下面这个demo跑起来只需要几分钟,感兴趣的开发者可以自行尝试。(其他样例请参考项目文档

                                                    图:AgentScope制作狼人杀游戏的对话效果

 

4.4【扩展阅读】其他开源Multi-Agent框架或项目

下面介绍更多的开源Multi-Agent框架或项目,感兴趣的话可以做进一步了解。

4.4.1 Camel AI

最早的多智能体框架,起先在多智能体方面只支持两个智能体一对一交互,目前项目开放了搜索增强RAG能力,可以开发具有角色扮演能力的RAG智能体。项目地址:https://github.com/camel-ai/camel

4.4.2 AutoGen

微软的 AutoGen 是一个强大的工具,它能帮助我们轻松创造新一代的智能对话应用,这些应用基于多个虚拟角色之间的交流,而且不需要太多复杂的操作。它让管理、自动执行和改善这些高级对话程序的过程变得更加简单,同时让这些智能对话的表现更出色,并解决它们可能存在的问题。

想象一下,有了AutoGen,开发者就能像搭建乐高积木一样,设计出各式各样的对话场景。无论对话是自由流动的,还是需要很多不同的“虚拟助手”一起协作,也不管这些助手们是如何相互连接和交谈的,AutoGen都能搞定。

此外,AutoGen还展示了一系列已经做好的例子,这些例子覆盖了各种不同难度和领域的应用,证明了它能够灵活应对各种对话方式的需求。

更进一步,AutoGen还提升了这些智能对话背后的“思考”能力,也就是推理功能。它提供了许多好用的功能,比如让不同的接口协同工作更顺畅、存储信息减少重复计算,以及在遇到问题时能智能应对、根据情况变化选择最佳方案,甚至能让这些虚拟助手更好地理解和记忆之前的对话内容,从而提供更连贯的服务。

项目地址:https://microsoft.github.io/autogen/stable/

4.4.3 AgentVerse

该项目研究智能体和多模态学习开发,项目中提供了两个框架:解决问题和模拟器。该项目主要用于学术场景,可以模拟多种社会实验场景,如:NLP课堂、囚徒困境、软件设计、数据库诊断、Pokeman等等。

项目地址:https://github.com/OpenBMB/AgentVerse

 

4.4.4 斯坦福小镇

斯坦福小镇是一个多智能体社区的研究型项目,开发者探索构建智能体之间能否形成一定的社会关系。项目服务启动后,会首先对每个Agent的当日流程进行分层设计,然后按计划按时间点执行设计的任务。多个智能体之间一般是两两沟通的模式,一段时间内两个Agent之间可以进行多次沟通,每个角色在社区中的关系需要预先定义。斯坦福小镇有3人模式用于代码调试,也有25人模式用于正式的虚拟社区实验。

虚拟小镇的执行过程总体分为启动阶段、每小时规划阶段、事件执行阶段、对话规划阶段等等几个规划步骤。层层递进,Agent自主决策,组成一个完整的虚拟环境。项目用embedding向量存储作为Agent的记忆模块,来记录智能体一天中的经历,并在Agent对话时调用向量检索,召回相关信息。

项目地址:https://github.com/joonspk-research/generative_agents

 

5 不断完善大模型Agent系统


虽然大模型Agent为人们展示了无限的应用前景,但我们仍然可以不断完善Agent系统:

  • 避免向大模型输入巨量信息

大模型仅支持有限长度的上下文,有人认为如果我们使用支持超长文本的大模型,我们就可以在使用时提供更多信息了。但是由于技术发展,我们越来越需要将历史信息、详细指令、API调用上下文、插件和系统响应信息等大量信息同时塞给大模型,这样做除了产生更大的调用成本和带宽消耗之外,还有可能降低有用信息被检索和解读的概率,导致大模型输出结果与用户的问题无关。因此,支持超长文本的大模型并没有给应用市场带来革命性的变化。所以,我们需要考虑优化提示词文字,精简信息内容,甚至压缩历史记忆文字量,从而提升大模型的准确率。

  • 持续优化Agent规划能力

与人类相比,大模型Agent的规划能力还比较初级。大模型是从训练样本中学习事物之间的联系,并学会如何做规划的。在实际应用中,大模型做出的规划很可能需要先经过使用者的调整再做实施。在面对一个复杂任务时,大模型Agent会将任务分解为一系列长链路的步骤,我们可以设计一些方法衡量这些步骤是否还需要进一步拆解。当大模型按照步骤链条执行时,我们也需要设计自动化方案,观察执行链路中会不会出现前一个步骤累积下来的错误,执行过程是否需要终止。当然,我们也可以添加交互手段,让系统的使用者介入Agent的规划和执行,加以修正。

  • 综合使用多种大模型

大模型Agent应用需要反复执行分析、识别、规划、决策、生成内容等任务,但是有些任务是可以使用小参数量的模型来完成的,并不需要把所有任务都交给参数量最大的模型来执行。因此,合理地分配任务,综合使用多种不同规格的大模型,可以降低系统运行的总成本。开发者可以根据任务难度,参考各规格模型的部署成本、计费方式来优化系统架构。例如,你可以参考阿里云百炼的最新计费方案和优惠信息等等。

本节小结


在本小节中,我们了解到Agent能通过工具与外部世界交互,从“教你做”到“帮你做”,而且具备规划能力(任务拆解和自我反思)和记忆能力。我们还可以让多个Agent一起协作完成工作目标。

虽然当下的大模型Agent应用还有很多待完善的地方,但是如果你既懂业务,又懂得用大模型Agent,我们相信你一定可以让业务发生前所未有的变化。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论