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级别的海量数据集。这个定…

注册中心 Service Discovery --- Intro

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

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

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

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

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

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…

李宏毅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<…

网络攻防之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协议介绍 在以…

maven 打包命令

Maven是基于项目对象模型(POM project object model)&#xff0c;可以通过一小段描述信息&#xff08;配置&#xff09;来管理项目的构建&#xff0c;报告和文档的软件项目管理工具。 Maven的核心功能便是合理叙述项目间的依赖关系&#xff0c;通俗点讲&#xff0c;就是通过po…

代码随想录刷题笔记-Day22

1. 修剪二叉搜索树 669. 修剪二叉搜索树https://leetcode.cn/problems/trim-a-binary-search-tree/ 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留…

opengles 顶点坐标变换常用的矩阵(九)

文章目录 前言一、opengles 常用的模型矩阵1. 单位矩阵2. 缩放矩阵3. 位移矩阵4. 旋转矩阵二、第三方矩阵数学库1. glm1.1 ubuntu 上安装 glm 库1.2 glm 使用实例1.2.1 生成一个沿Y轴旋转45度的4x4旋转矩阵, 代码实例如下1.2.2 生成一个将物体移到到Z轴正方向坐标为5处的4x4 vi…

万界星空科技商业开源MES

一、万界星空科技商业开源MES系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理&#xff0c;车间基础数据管理&#xff0c;计…

深度学习500问——Chapter01:数学基础

文章目录 前言 1.1 向量和矩阵 1.1.1 标量、向量、矩阵、张量之间的联系 1.1.2 张量与矩阵的区别 1.1.3 矩阵和向量相乘结果 1.1.4 向量和矩阵的范数归纳 1.1.5 如何判断一个矩阵为正定 1.2 导数和偏导数 1.2.1 导数偏导计算 1.2.2 导数和偏导数有什么区别 1.3 特征值和特征向量…

什么是边缘案例测试?如何查找并确定优先级

何为边缘情况&#xff1f; 在极端条件下发生的情况被称为边缘情况&#xff0c;有时候也叫边界情况&#xff0c;在功能、回归、单元和性能测试中都会应用。如果质量保证团队知道某项功能的最大和最小负载&#xff0c;他们就能防止这些情况发生。当用户不按照程序的预期工作流程…

gma 2.0.6 (2024.02.21) 更新日志

安装 gma 2.0.6 pip install gma2.0.6网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码&#xff1a;1pc8 注意&#xff1a;此版本没有Linux版&#xff01; 编译gma的Linux虚拟机没有时间修复&#xff0c;本期Linux版继…

Spring Cloud Gateway官方文档学习

文章目录 推荐写在前面一、熟悉Gateway基本概念与原理1、三大概念2、工作流程 二、基本使用路由断言的两种写法 三、路由断言工厂1、After路由断言工厂2、Before路由断言工厂3、Between路由断言工厂4、Cookie路由断言工厂5、Header路由断言工厂6、Host路由断言工厂7、Method路由…

静态时序分析:SDC约束命令set_drive详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 目录 指定电阻值 指定端口列表 简单使用 指定上升、下降沿 指定最大最小、条件 写在最后 本章将讨论使用set_drive命令&#xff0c;它用于对输入端口的驱动能力建模。首先需要说明的…