AI Agent深入浅出——以ERNIE SDK和多工具智能编排为例

在过去一年里,通用大语言模型(LLM)的飞速发展引起了全球的关注。百度等科技巨头推出了各自的大模型,不断提高语言模型性能的上限。然而,业界对LLM所设定的目标不再局限于基本的问答功能,而是寻求利用大模型来执行更复杂、多样的任务。这就是Agent(智能体)概念的诞生背景。

Agent,可以理解为一个能够自主规划决策、综合运用多种工具以完成复杂任务的系统。在这个系统中,大语言模型充当着“核心调度器”的角色。该调度器负责解读用户的自然语言输入,规划出一连串可执行的动作,并依托记忆模块等其他组件和外部工具,逐步完成这些任务。

2024年,人工智能行业的焦点从通用大模型转向AI原生应用。这一技术变革,离不开AI Agent的深度参与。AI Agent的核心价值在于适应多变的环境和需求,以及做出有效决策及可靠操作,这预示着我们正在步入AGI(人工通用智能)时代。正如比尔·盖茨预言:“在未来五年内,这一切都将彻底改变。你无需针对不同任务切换应用,只需用日常语言与你的设备沟通,软件便能根据你分享的信息提供个性化反馈,因为它对你的生活有了更深入的了解。”

ERNIE SDK

ERNIE SDK近日新增了一项强大的功能——Agent开发,标志着LLM开发进入了新的阶段。基于强大的文心大模型及其Function Calling(函数调用)功能,它为LLM应用开发提供了一个全新的视角。这一框架不仅解决了LLM应用开发中面临的核心挑战,而且通过文心大模型4.0展示了其卓越性能。ERNIE SDK针对几个关键问题提供了有效的解决方案:

1.Token输入数量限制: 传统的大模型分析总结大型文档时会受限于token输入数量的限制,ERNIE SDK提供了本地知识库检索的方式,使得处理大型文档问答任务更加方便。

2.业务API工具的融合: ERNIE SDK使集成现有业务API工具成为可能,拓宽了LLM应用的功能性和适应性。

3.数据源连接: ERNIE SDK能够通过定制工具查询如SQL数据库,连接多种数据源,为大模型提供更多的信息。其作为一个高效的开发框架,大幅提升了开发者的工作效率。依托飞桨星河社区的丰富预制组件,开发者可以直接利用现有资源,或者根据特定业务需求进行定制,为LLM应用的整个开发生命周期提供全面支持。

基于ERNIE SDK的Agent架构分析

Agent

在一些复杂的场景下,我们需要根据用户输入灵活调用LLM及一系列所需工具,Agent为这样应用程序的实现提供了可能性。ERNIE SDK提供基于文心大模型的Function Calling能力驱动的Agent开发,开发者可以直接使用预置Agent,通过Chat Model、Tool和Memory进行实例化,也可以通过继承erniebot_agent.agents.Agent基类定制自己的Agent。

Chat Model(Agent的大脑)

ERNIE SDK中的Chat Model模块是进行思考决策的核心调度器,也就是百度研发的知识增强大语言模型:文心大模型。

Message(Agent输入输出信息封装)

开发者通过封装后的Message与Chat Model进行交互,能够让大语言模型理解输入的信息来源。

此模块使得用户输入与文心大模型的消息回馈更加规范,以便在后续的Memory模块中进行存储。

Memory(Agent的记忆)

大语言模型本身是没有记忆的,所以构建大模型应用很重要的一点就是给予Agent记忆功能。ERNIE SDK提供快速的记忆功能,能够将多轮对话当中的信息存入到一个List当中,然后传输到Chat Model的上下文窗口当中。不过,这种记忆模式也受限于文心大模型的输入Token。同时,ERNIE SDK也允许开发者构建更复杂的记忆模块,可参考的处理方法有:

  1. Vector store-backed memory;每一轮对话的Message将会在embedding处理后存储至向量数据库当中,在后续的对话环境,根据用户输入的自然语言输入,进行语义向量近似检索找出最符合输入语义的记忆片段。这样的方式能够实现长期记忆,不再受限于文心大模型的上下文窗口限制。

  2. Conversation summary memory;这种处理方法是在每轮对话后将对话信息调用Chat Model进行一次总结,并存储总结后的简短内容,从而减轻存储内容的压力。

  3. LangChain/LlamaIndex;实现自定义记忆模块ERNIE SDK允许开发者自由集成LlamaIndex等框架,可以实现更复杂的记忆模块,利用LlamaIndex优秀的文档检索能力,能够做到更长期的记忆。

Tools(Agent的工具)

让Agent自主组合并使用复杂的外部工具来解决更复杂的问题,是未来AI应用大规模普及的关键;ERNIE SDK允许开发者使用飞桨星河社区已上线的30余个工具,快速构建复杂应用,也能够根据自己的业务需求定制本地工具。

Retrieval(Agent的知识库)

虽然通用大模型在训练过程中吸收了广泛的知识,但它们对特定领域或用户专有的业务知识了解有限。使用特定领域数据对大模型进行微调的成本过高,因此引入RAG(Retrieval Augmented Generation)技术,这一技术的核心是能迅速将外部知识库整合到大模型中,从而深入理解特定领域的专业知识。Retrieval模块的关键功能包括:

  • 数据源加载,覆盖多种数据类型:

    结构化数据,如SQL和Excel

    非结构化数据,如PDF和PPT文档

    半结构化数据,如Notion文档

  • 数据的分块转化。

  • 数据的向量化embedding处理。

  • 将处理后的数据存储到向量数据库中。

  • 通过近似向量检索,快速定位相关信息。ERNIE SDK的Retrieval模块不仅支持百度的文心百中搜索,还与LangChain和LlamaIndex的Retrieval组件兼容,大幅提升了数据处理的效率和准确性。

基于ERNIE SDK的Agent快速开发体验

现在,让我们一起快速了解如何开发一个Agent——文稿审核助手。这个Agent的主要功能是帮助我们审核各大平台上发布的文稿是否符合规范。

第一步,登录飞桨星河社区,并创建一个新的个人项目。使用社区提供的免费算力配置就足够了。

第二步,登录飞桨星河社区后,点击本人的头像,在控制台中获取自己的访问令牌,飞桨为每个新注册的用户提供100万额度的免费Token。

为了安全管理您的敏感令牌信息,我们建议使用Dotenv。先安装Dotenv,随后将您的令牌保存在一个新建的.env文件中。注意,此文件默认在文件目录下是不可见的,若需查看,需要更改设置。

示例.env文件内容:

第三步,验证您的访问令牌是否可以正常使用:

如果一切正常,它会打印出您的访问令牌。新建一个文本文件文稿.txt,其中需包含自己要进行合规审核的文本内容。

第四步,构建基础的Agent(使用飞桨星河社区工具中心提供的预制工具)。

运行这段代码,您将看到Agent使用了[text-moderation/v1.2/text_moderation]工具来审核文稿内容,并输出审核结果。这样一来,一个简单的文稿审核助手的Agent开发就完成了。我们一同体验了基于ERNIE SDK的Agent的快速开发流程及其实用性。

多工具智能编排

继深度探索ERNIE SDK后,我们再来看看飞桨星河社区的多工具智能编排功能。飞桨星河社区不仅提供了细粒度的SDK,以支持技术开发者的详细需求,还引入了多工具智能编排功能。这意味着开发者可以基于强大的文心大模型,轻松整合各种外部工具,打造个性化的AI应用。相比起单纯使用ERNIE SDK,这种方法更快速、便捷,大大简化了开发过程。我们将使用多工具智能编排复现文稿审核助手。

首先,使用低代码开发创建应用后,选择智能编排。

其次,在侧边栏工具挂载中点击挂载“文本审核工具”,这是飞桨星河社区工具中心提供的30多个预制工具之一,你也可以创建自己的工具。

随后,在基础设定中对文稿助手进行角色身份设定。接着点击应用所有设置,就可以在侧边栏进行体验了。

值得一提的是,飞桨星河社区多工具智能编排对于非技术背景的团队成员极为友好。即使没有深入的编程知识,团队成员也能快速上手,轻松构建自己的AI应用。如上述文稿助手的创建只需要几分钟,这不仅加快了产品的迭代速度,还促进了团队内部的协作和创新。

目前,百度飞桨已经开放申请,访问飞桨星河社区邀测报名了解更多详情和申请使用。

随着通用大语言模型的发展和智能Agent技术的兴起,我们正迎来AI应用开发的新时代。从ERNIE SDK的深入探索,到飞桨星河社区多工具智能编排的应用,我们看到像百度飞桨ERNIE SDK这样的AI技术框架如何突破传统边界,为开发者提供了前所未有的便利和巨大的发展可能性。无论是有深厚技术背景的开发者还是非技术人员,都能在这个新时代中找到属于自己的空间,共同推动AI技术的进步及AI应用的普及。AI的未来,充满无限潜力。AI应用的广阔天地,等着我们去探索和创造。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是MapReduce

1.1 MapReduce到底是什么 Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。这个定…

【链表算法题记录】两两交换链表中的节点

题目链接 我自己第一遍做的时候没有想到用虚拟头节点,就是直接进行操作: 设置要交换的两个节点p1和p2,还有交换需要用到的临时节点temp。进行交换后还要注意p1换到后面去之后它的指向,它实际上是指向后面一组交换节点交换后位于…

注册中心 Service Discovery --- Intro

注册中心 Service Discovery --- Intro 为什么需要注册中心注册中心的原理常用的注册中心注册中心的高可用 为什么需要注册中心 在微服务架构中,系统被拆分成了若干个独立的服务,因此服务之间需要进行通信和协作。为了实现服务的发现和调用,需…

C#,动态规划(DP)模拟退火(Simulated Annealing)算法与源代码

1 模拟退火 *问题:**给定一个成本函数f:r^n–>r*,找到一个 n 元组,该元组最小化 f 的值。请注意,最小化函数值在算法上等同于最大化(因为我们可以将成本函数重新定义为 1-f)。 很多有微积分/分析背景的人可能都熟悉单变量函数的简单优化。…

11.openEuler文件和文件系统(二)

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 2.管理linux文件系统 查看分区使用情况: df命令查看文件系统的磁盘空间占用情况,主要参数: -h:以容易理…

Llama2模型的优化版本:Llama-2-Onnx

Llama2模型的优化版本:Llama-2-Onnx。 Llama-2-Onnx是Llama2模型的优化版本。Llama2模型由一堆解码器层组成。每个解码器层(或变换器块)由一个自注意层和一个前馈多层感知器构成。与经典的变换器相比,Llama模型在前馈层中使用了不…

轮转数组

189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步:…

【信息系统项目管理师】--【信息化发展】--【章节练习】

文章目录 一、选择题二、思考题三、参考答案3.1 选择题答案3.2 思考题答案 一、选择题 (1)下列说法正确的是 A.信息只存在家庭中 B.信息只存在图书馆中 C.信息只存在校园里 D.信息无处不在 (2)信息的基础是 A.数据 B.知识 C.事实 D.概念 (3)工业互联网的体系不包括 A.网络 B.平…

YOLOv5算法进阶改进(16)— 更换Neck网络之GFPN(源自DAMO-YOLO)

前言:Hello大家好,我是小哥谈。GFPN(Global Feature Pyramid Network)是一种用于目标检测的神经网络架构,它是在Faster R-CNN的基础上进行改进的,旨在提高目标检测的性能和效果。其核心思想是引入全局特征金字塔,通过多尺度的特征融合来提取更丰富的语义信息。具体来说,…

用Python实现创建十二星座数据分析图表

下面小编提供的代码中,您已经将pie.render()注释掉,并使用了pie.render_to_file(十二星座.svg)来将饼状图渲染到一个名为十二星座.svg的文件中。这是一个正确的做法,如果您想在文件中保存图表而不是在浏览器中显示它。 成功创建图表&#xf…

贪心算法---前端问题

1、贪心算法—只关注于当前阶段的局部最优解,希望通过一系列的局部最优解来推出全局最优----但是有的时候每个阶段的局部最优之和并不是全局最优 例如假设你需要找给客户 n 元钱的零钱,而你手上只有若干种面额的硬币,如 1 元、5 元、10 元、50 元和 100…

P2895 [USACO08FEB] Meteor Shower S题解

题目 贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星摧毁的地方)。 如果将牧场放入一个直角坐标系中&…

李宏毅2023机器学习作业1--homework1——python语法

# 定义list del_col del_col [0, 38, 39, 46, 51, 56, 57, 64, 69, 74, 75, 82, 87] # 删除raw_x_train中del_col的列,axis为1代表删除列 raw_x_train np.delete(raw_x_train, del_col, axis1) # numpy数组增删查改方法 # 定义列表get_col get_col [35, 36, 37,…

vector 用法

C++数组是继承C语言的,C++标准库中的vector封装了动态数组,是一个模板类(vector<int>,<>里面可以是各种类型。 定义方式: vector<元素类型> 对象名(长度); (注:vector还有个好处就是,数组定义时长度那里不能包含变量,但是vector定义时长度那里可…

2.23 Qt day4 事件机制+定时器事件+键盘事件+鼠标事件

思维导图&#xff1a; 做一个闹钟&#xff0c;在行编辑器里输入定闹钟的时间&#xff0c;时间到了就语音播报文本里的内容&#xff0c;播报五次 widget.h&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QDebug>//输出类 #include<…

B3623枚举排列

题目描述 今有 n 名学生&#xff0c;要从中选出 k 人排成一列拍照。 请按字典序输出所有可能的排列方式。 输入格式 仅一行&#xff0c;两个正整数 n,k。 输出格式 若干行&#xff0c;每行 k 个正整数&#xff0c;表示一种可能的队伍顺序。 输入输出样例 输入 #1复制 …

聚美优品根据ID取商品详情 API(jumei.item_get)

聚美优品&#xff08;Jumei&#xff09;是一个在线购物平台&#xff0c;提供化妆品、护肤品、服装、食品等多种商品。聚美优品可能有自己的API接口供开发者使用&#xff0c;以便实现与平台的数据交互。不过&#xff0c;请注意&#xff0c;聚美优品的API可能会随着时间的变化而更…

通过 NVIDIA-SMI 统计GPU使用情况

通过 NVIDIA-SMI 统计GPU使用情况 罗列本机显卡 nvidia-smi -L | --list-gpus本示例的输出如下&#xff0c;也就是本机的显卡环境&#xff1a; [namegpu4 code]$ nvidia-smi -L GPU 0: A40 (UUID: GPU-b0f3bdaa-e0e1-aff7-3cc7-9c067db6aea1)nvidia-smi -f | --filename : 将…

网络攻防之ARP欺骗和DNS劫持实验

目录 ARP单向欺骗 ARP双向欺骗 DNS劫持 实验环境&#xff1a; 攻击主机&#xff1a;kali2023虚拟机&#xff0c;IP地址为192.168.133.141 靶机&#xff1a;Windows10虚拟机&#xff0c;IP地址为192.168.133.129 网关地址&#xff1a;192.168.133.2 (1)ARP协议介绍 在以…

java多线程——线程安全同步机制同步代码块、同步机制

用多线程实现电影院三个窗口买票机制 ①同步代码块方式实现 public class MyThread extends Thread{static int sum0;//static Object objectnew Object();Overridepublic void run() {while(true){//同步代码块synchronized (MyThread.class){if(sum<100){try {Thread.sl…