独家| 复合人工智能系统的设计模式(对话式人工智能、CoPilots 和 RAG)-下篇...

61c5dae3da6b462b9316ce585958ab4b.png

作者:Raunak Jain 2024年3月18日
翻译:陈之炎校对:zrx
本文约3500字,建议阅读10分钟如何使用开源工具搭建流程可配置的复合人工智能系统。

在上文中,我们介绍了何为复合人工智能系统,系统组件以及它们如何相互交互以构建复杂系统,基于LLM的自主智能体 —— 复合人工智能系统中的关键模块,以及复合人工智能系统的设计模式中关于定义的澄清和选择模式之前的考量。

在下文中,我们将介绍复合人工智能系统的三种部署模式。

部署模式1 — RAG / 对话式RAG     

下图显示了RAG / 对话式RAG系统中各模块的主要职责,这传统上属于IR领域,首先通过神经搜索、知识图谱改进,然后是使用LLM的生成方法环。从另一个视角来看,这是一个对话式IR系统,当IR和对话系统合并,将查询视为转换上下文的对象。

对于RAG系统的成功,关键在于理解用户的查询并将其映射为底层知识(结构化或非结构化),并将其与适当的指令一起提供给生成器/对话管理器,这些动作可以使用一个明确定义的工作流,或者使用智能体模块,模块的动作决定执行哪些步骤(在下一节中将更详细地阐述)。

3d2c49eb54ba2185d3cbb678cab36f7a.png

RAG流程,转交给对话管理器 — 如果对话管理器是一个智能体,RAG则成为一个工具

来看看一些中间模块/工具,它们允许智能体在复杂的RAG世界中导航。

查询理解与重构     

查询扩展 / 多查询

3b068ceff1b18b7884172479be512868.png

使用LLM来扩展查询可以改进使用稀疏和统计检索器时的搜索结果。

查询重写 / 自我查询

自我查询检索器,顾名思义,具有自我查询的能力。具体来说,给定任何自然语言查询,检索器使用查询构建LLM链来编写结构化查询,然后将其应用于底层的VectorStore。检索器不仅可以使用用户输入的查询与文档的内容进行语义相似性比较,还可以从用户查询中提取出文档元数据上的过滤器,并执行这些过滤器。

  • 实体识别

  •  查询增强

  •  知识或意图检索

  • 多文档搜索

  • 对话管理

  • 响应生成

智能体式RAG   

智能体式RAG是一种设计模式,其中一个模块由LLM驱动,根据其可用工具集推理和规划如何回答问题。在高级场景中,可能还会连接多个智能体以创造性地解决RAG问题,智能体不仅能检索,还能验证、总结等。有关更多信息,请参见多智能体部分。

需要细化的关键步骤和组件:

1.基于推理,子任务制定和系统化安排的计划。

2.基于自我一致性的自我纠正,由于生成多条路径和推理,基于规划的RAG方法(ReWoo和Plan+)比仅基于推理的(ReAct)效果会更好。

3.对执行的适应能力,更多元化的智能体范例。

通常,使用以下模式执行:

基于推理的智能体式RAG

ReAct    

5d2a733ef6d57093eea579b5dd34947e.png

使用搜索工具进行推理和动作

基于规划的智能体式RAG

 https://blog.langchain.dev/planning-agents/

ReWoo    

b9c9dd4e37c50833bf185ecc8c6f780f.png

ReWoo — 比ReAct生成更少的标记

PlanRAG

它由两个组件组成:首先,制定一个计划,将整个任务划分为更小的子任务,然后根据计划执行子任务。

1a968fb5a2185b5a23d03e850cf9841c.png

部署模式2 — 对话式人工智能     

传统意义上,对话流程一直是高度脚本化的,是“机器人说” -> “人类说” -> “机器人说”...的交互,表示不同假设的真实世界场景,对于Rasa开发人员来说也称为“故事”。每个用户的意图可以基于用户的状态和交互表达为数百个“故事”,机器人采取动作执行已定义好的故事并予以回应响应。例如,如果用户想要订阅新闻稿,可能有两个路径:

1.用户已经订阅。

2.用户尚未订阅。

2115710e5e721b33e6cd398ce368780c.png

来源

如果用户说“如何订阅新闻稿”触发了意图,机器人需要检查该用户是否已经订阅,然后采取适当的下一步。这个“下一步该做什么”的决策是一个手动硬编码的路径。如果偏离了路径,机器人会说,“对不起,我还在学习,我可以帮助你做xyz..”。

构建和维护机器人的真实成本来自这些故事,之所以要搭建上述乏味的模式,是为了使机器人能够在多样化的真实世界场景中导航,并且可以以有组织的方式添加新路径。路径编写者往往总是有一些“条件需要检查”,“动作需要执行”和“对话的最终目标”来构建一个有目标的执行脚本。   

有了LLM,可以尝试使用LLM的“推理”和“规划”能力来自动化脚本编写或路径规划。

想象一下,你是一个客户服务智能体,一名用户带着不同的需求来到你这里,该如何订阅你的服务?你将如何定义应该采取的下一步?它可以完全开放吗?很可能不是,从管理成本的角度来看,它也不能高度脚本化。如果我告诉你以下内容:

条件 — 如果存在电子邮件,那么用户可以订阅

工具 — check_subscription, add_subscription

作为有自尊的人类,你将能够在脑海中编织出如下故事:

1.用户想要订阅,基于声明 — “我如何订阅?”

2.向用户询问电子邮箱 — “你的电子邮箱是什么?”

3.如果他提供了一个有效的电子邮箱,触发工具 — check_subscription

4.如果用户尚未订阅,触发add_subscription

5.回应成功或失败。

这就是我们希望LLM做的,产生它可以参考的“计划”,并在运行时据此采取动作。

回到模块模板,看看规划者的模样:   

2520125df51759559a328461d6c72425.png

上述规划者使用工具和条件构建出计划或故事,来看看研究中的一个真实示例:   

a67f83ba48bf96a98a56cea2196b8def.png

KnowAgent: 基于知识的LLM智能体增强规划

有哪些工具可以帮助规划者根据可靠的推理决定路径?

1.由先前类似声明触发的路径。

2.企业动作图和动作之间的依赖性。帮助规划者确定某个动作是否会得出正确的结果,然后进行下一个动作,依此类推,直到递归地解决问题。

3.用户/对话的当前状态。

部署模式3 — 多智能体   

在多智能体设置中,目标是为LLM支持的生成器定义角色和责任,配备精准的工具,可以协同工作,生成智能答案/解决方案。

得益于明确定义的角色和底层模型,智能体将子目标或“计划”的一部分委派给“专家”,然后根据输出来决定下一步该做什么。

e4511d6f9432fe280fc4f6a91475a919.png

使用下述通信模式控制下一步的权限。

5f7c2e2cd8b416789aca87f7695f3914.png    

智能体/模块如何通信以构建现实世界的CoPilots — https://arxiv.org/pdf/2402.01680v1.pdf

多智能体设计的优势:

  • 关注点分离:每个智能体可以有自己的指令和少样本示例,由单独微调的语言模型支持,并由各种工具支持。将任务分配给不同的智能体可以得出更好的结果。每个智能体专注于特定任务,而不是从众多工具中作出选择。

  • 模块化:多智能体设计允许将复杂问题分解为可管理的工作单元,由专门的智能体和语言模型执行。多智能体设计允许对各智能体独立评估和改进,无需破坏整个应用程序。将工具和责任分组带来更好的结果,当专注于特定任务时,智能体更有可能成功。

  • 多样性:引入强大的智能体团队,带来不同的观点,完善输出,避免幻觉和偏见。(像典型的人类团队一样)。

  • 可重用性:一旦构建了智能体,就有机会将这些智能体应用于不同的用例,实现一个智能体生态系统,它们聚集在一起解决问题,具有适当的编排/协调框架(如AutoGen、Crew.ai等)。

部署模式4 — CoPilot

在CoPilot系统中看到的唯一区别是它能够从用户互动和测试功能中获得学习。

更多内容敬请期待...

框架与实现    

区分构建CoPilots的框架和实际的CoPilots实现(如GPT Pilot和aider)非常重要。在大多数情况下,没有开源CoPilots是在已有框架上开发的,所有实现都是从头开始开发的。

回顾流行的实现:OpenDevin、GPT Pilot

回顾流行的研究论文:AutoDev、AgentCoder

流行的框架 — Fabric、LangGraph、DSPy、Crew AI、AutoGen、Meta GPT、Super AGI 等‍

全文尽可能坚持以下定义:基于LLM的多智能体。

深入研究 — APPS

GPT Pilot

GPT Pilot项目是一个创造性提示工程和LLM响应链式“分层”流程的杰出例子,以执行看似复杂的任务。

有几个配置文件以分层通信方式工作,请参阅下面的绿色框:

6405d86c808d763d236a9f10708e5629.png

https://www.reddit.com/r/MachineLearning/comments/165gqam/p_i_created_gpt_pilot_a_research_project_for_a/

各个智能体以分层方式交互,从一个节点触发到下一个节点,图中没有列出决策智能体。   

d98ccb57d87d05819e48746c1bd353c0.png

根据一些漂亮的原则进行了产品部署,使其运作良好:

1.将任务分解为LLM可生成代码的小模块。

2.测试驱动开发,收集好的人工用例,以便能够准确验证和迭代。

3.上下文回滚和代码总结。

尽管包含上述复杂的提示工程和流程设计,但对每个智能体进行微调的好处却显而易见,不但可以降低成本而且可以提高准确性。   

作者简介:

10a947e18c9760896ee48eed0346b529.png

Raunak Jain 拉纳克·贾恩。寻找模式并构建抽象。

原文标题:

Design Patterns for Compound AI Systems (Conversational AI, CoPilots & RAG)

原文链接:

https://medium.com/@raunak-jain/design-patterns-for-compound-ai-systems-copilot-rag-fa911c7a62e0

编辑:王菁

译者简介

054bd30eea6a42dc4be205c1436a1d9d.jpeg

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。

f4c8601c3f86da9671204709de9f9b52.png

新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

点击“阅读原文”拥抱组织

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值