一文详细拆解Agent工作原理

一、写在前面

Agent,中文译为“代理”或“智能体”,是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。它们具备自主性、反应性、社交性和适应性等特点,能够根据环境的变化调整自己的行为,以达到预设的目标。

本文通过详细拆解Agent从提示词接收、LLM大模型理解识别、知识库匹配、任务规划到行动执行等五个关键步骤,从而深入剖析Agent的工作原理,另外也将目前市面上Agent产品的能力项汇总,希望给大家带来一些启示。

二、典型Agent智能体的工作过程

典型Agent智能体的工作过程示例

(一)关键步骤一:

Prompt提示词【圈定角色范围、阐述任务背景、习惯特色】

提示词是Agent接收到的初始输入,它描述了Agent需要完成的任务或解决的问题。提示词可以是文本、图像、语音等多种形式。Agent需要对提示词进行解析和理解,以便为后续的任务规划和行动执行提供指导。

智能体的提示词要统一:对话涉及到发展平台的生态供应方,包括行业规范、背景知识和智能体的提示词。提示词包括上下文和指令,需要注意清晰表达需求、统一称谓代词和避免行业黑话。

(1) 通用指令构成

① Context 上下文:说明想让大模型执行任务的背景

② Instruction 指令:说明你想让模型执行什么任务

③ Input Data 输入数据:说明用户要输入什么内容

④ Outpt Indicator 输出提示:规定输出结果内容(说清想要+不想要)

(2) Tips

① 要减少模糊表达,明确提出你的需求。

② 指令中的称谓代词要统一,不要反复切换,可能会造成 AI 大模型理解混乱。

③ 指令中尽可能不要体现行业黑话,可能会造成 AI 大模型理解障碍。

总结:提示词写得好不好直接影响处理结果

最简单的指令公式: 你想让智能体扮演的角色+希望TA根据用户什么样输入信息来生成什么样的结果+对助手所生成的内容的详细要求。

示例

你是一名资深导游。我的目的地以及预计游玩时间是xxxx,你需要根据我提供目的地和预计游玩时间,给我提参观建议,为我制定旅行计划。你所制定的旅行计划必须具有可行性,不能行程太过紧凑,要考虑通行时间。
(可将用户输入内容,带入通配符位置,形成完整的一段命令,发送给模型请求结果)

释义备注-Token:在计算机科学中,Token通常指的是一段文本的最小独立部分。在大模型中,Token可以是一个单词,一个字符,或者一个子词。(1Token ≈ 4个字符/字母 ≈ 1.8个中文字 ≈ 0.75个单词)

(二)关键步骤二:

LLM大模型【理解、提取、识别、选择】

LLM大模型(Large Language Model)是Agent进行任务规划和知识推理的重要工具。它通过对大量文本数据的学习,具备了强大的语言处理能力和知识推理能力。Agent可以利用LLM大模型对提示词进行深入分析,生成可能的解决方案,并进行选择和优化。

(三)关键步骤三:

Memory知识库【调用、匹配、当前输入内容、上下文内容、向量数据库】

分类简述
感觉记忆当前用户输入内容,包括文本、图像或其他形式,短暂保留感觉印象
短期记忆上下文内容(包括写在Prompt中的信息),处理复杂任务的临时存储空间,受有限的上下文本长度限制
长期记忆(字)外部向量存储的知识库,Anget使用时可快速检索,具备存储量大。文本字段内容形式存在
长期记忆(文)外部向量存储的知识库文件,Anget使用时可快速检索,具备存储量大。如docx、xlxs、csv、pdf、ppt、jpg、txt等
长期记忆(网)填写网页URL,自动检索网页信息,并将网页信息作为知识库

释义备注-

向量数据库:向量数据库通过将数据转化为向量存储,解决大模型海量知识的存储、检索、匹配问题。向量数据库利用人工智能中的Embedding方法,将图像、音视频等非结构化数据抽象、转换为多维向量,由此可以结构化地在向量数据库中进行管理,从而实现快速、高效的数据存储和检索过程。

Embedding:技术是一种将图像、音视频等非结构化数据转化为计算机能够识别的语言的方法。

MIPS:最大内积搜索,文本数据转化为向量后,就可以通过数学方法来计算两个向量之间的相似度,即可实现对文本的比较。向量数据库强大的检索功能就是基于向量相似度计算而达成的,是一种模糊匹配的检索,没有标准的准确答案,进而更高效地支撑更广泛的应用场景。

(四)关键步骤四:

Planning任务规划【分析方式、分析思考、推理痕迹】

任务规划是Agent根据提示词、LLM大模型以及知识库进行决策和规划的过程。它涉及对任务的分解、目标的设定、路径的规划等多个方面。Agent需要综合考虑各种因素,制定出最合适的任务执行方案。

方式技术简述
Prompt提示词任务的分解的环节可以由三种方式完成:
1)在大模型输入简单的提示,比如“XYZ的步骤”,或者“实现XYZ的子目标是什么?”;2)使用特定任务的指令,比如在需要写小说的时候要求大模型“写一个故事大纲”;3)通过人工提供信息,网站地图/RPA流程最佳实践
CoT思维链已成为一种标准的提示技术,用于提高模型在复杂任务中的表现。模型被要求“一步一步地思考”,将艰巨的任务分解为更小更简单的步骤。思维链将大任务转化为多个可管理的任务,并帮助人们理解模型的思维过程。
ToT思维树通过在任务的每一步探索多种推理可能性来扩展思维链。它首先将问题分解为多个思考步骤,并在每个步骤中生成多个想法,从而创建一个树状结构。搜索过程可以是BFS(广度优先搜索)或DFS(深度优先搜索)。

React:将任务中单独的行为和语言空间组合在一起,从而使大模型的推理和行动融为一体。该模式帮助大模型与环境互动(例如使用维基百科搜索API),并以自然语言留下推理的痕迹。

关键步骤五:

Action工具使用【执行、返回、执行】

行动执行是Agent根据任务规划结果执行具体操作的过程。它可能涉及与环境的交互、数据的收集和处理、决策的调整等多个环节。Agent需要准确地执行每一步操作,以确保任务能够顺利完成。

方式技术简述
内置工具大模型内置工具,可直接使用,包括有:日历、计算器、代码解释器、搜索等
Plug插件用于扩展Agent功能的插件,可以通过Agent插件来实现一些特定的功能或者对Agent进行定制化的配置。Agent插件通常包括以下几个部分:
1. 插件配置文件:用于配置插件的参数和属性,通常是一个XML或者JSON格式的文件。
2. 插件类库:包含插件的代码和依赖库,通常是一个JAR或者DLL文件。
3. 插件接口:定义了插件与Agent之间的交互接口,包括插件的初始化、启动、停止等操作。
API接口应用程序编程接口(Application Programming Interface,API接口),是应用程序重要的组成部分,就是应用程序对外提供了一个操作数据的入口,这个入口可以是一个函数或类方法,也可以是一个url地址或者一个网络地址。
RPA桌面自动化是一种机器人流程自动化技术,它允许通过配置自动化软件模拟和人类在软件系统中交互的动作来执行业务流程,RPA软件机器人在应用程序界面上识别数据并像人类一样操纵应用程序。

JSON:OpenAI也在2023年6月为GPT-4和GPT-3.5更新了函数调用的功能,开发者现在可以向这两个大模型描述函数,并让模型智能地选择输出包含调用这些函数的参数的JSON对象。这是一种更可靠地将GPT的功能与外部工具和API相连的新方法,允许开发者更可靠地从模型中获得结构化的数据,为AI开发者提供了方便。

二、当前市面上Agent主要呈现

目前智能体的呈现主要有以下几个形式:

Copilot场景助理→ChatGPTs对话式→Flow工作流→Agent自主智能体→Agents多智能体协同

智能体的呈现主要形式

四、总结与展望

本文详细拆解了当下Agent的工作的关键步骤,汇集了当下Agent产品在市面上的呈现形式。然而,随着技术的不断发展,Agent的工作原理也将不断演进和完善。未来,我们可以期待Agent在更多领域发挥更大的作用,为人类的生活带来更多便利和惊喜。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

搜维尔科技:第九届元宇宙数字人大赛,参赛小组报名确认公告

各位参赛选手大家好,近期已收到新增报名信息如下表,请各位参赛选手确认,如果信息有误或信息不完整请电话联系赛务组工作人员进行更正 随着元宇宙时代的来临,数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划…

热闹元宵进行中,如何利用VR全景展示民宿品牌形象?

错峰出游闹元宵,元宵节恰逢周末,而且还是春节假期返工之后的首个休息日,不少人都想通过短途度假来缓解“节后综合征”。两位数的特价机票、打折的各种酒店让你实现“旅行自由”,那么如何知道特价酒店服务好不好呢?先别…

动静态库的理解

其实我们平常写一些C或C的代码的时候,在链接过程都会用到动静态库,因为一些基础的代码我们是不用写的(比如输入输出函数),我们只需要包个头文件,这些库和我们的编译好的代码一起链接后才会形成可执行程序 那…

进程概念与进程状态

目录 一、进程理解和进程控制块 进程理解 Linux中的进程 查看进程 1.ps ajx 查看所有的进程信息 2. /proc/目录查看 系统调用接口 getpid() 获取进程的pid ​编辑 getppid() 获取进程的父进程的pid fork创建进程 fork用法: fork原理理解: 二、进程状态 进程状态…

TensorFlow训练大模型做AI绘图,需要多少的GPU算力支撑

TensorFlow训练大模型做AI绘图,需要多少的GPU算力支撑!这个问题就涉及到了资金投资的额度了。众所周知,现在京东里面一个英伟达的显卡,按照RTX3090(24G显存-涡轮风扇)版本报价是7000-7500之间。如果你买一张这样的单卡…

十一、Qt自定义Widget组件、静态库与动态库

一、自定义Widget组件 1、自定义Widget组件 使用步骤采用提升法(promotion)重新定义paintEvent事件 2、实现程序 (1)创建项目,基于QWidget (2)添加类,为Widget组件提升类 #inclu…

day44 ● 完全背包● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。 首先再回顾一下01背包的核心代码 for(int i 0; i < weight.size(); i) { // 遍历物品for(int j bagWeight; j > weight[i]; j--) { // 遍历背包容量dp[j] max(dp[j], dp[j - weight[i]] val…

(二十)devops持续集成开发——使用jenkins的docker插件完成docker项目的流水线发布

前言 本节内容主要介绍jenkins如何集成docker插件&#xff0c;完成docker项目的流水线发布&#xff0c;在前面的章节中我们也介绍过docker项目的发布&#xff0c;可直接通过shell命令调用本地的docker服务完成docker项目的发布&#xff0c;本节内容我们使用docker插件来完成do…

Open CASCADE学习|视图

目录 Mainwin.h Mainwin.cpp Mainwin.h ​#pragma once#include <QtWidgets/QMainWindow>#include "Displaywin.h"#include "OCC.h"class Mainwin : public QMainWindow{ Q_OBJECTpublic: Mainwin(QWidget* parent nullptr); ~Mainwin();​pri…

Stable Diffusion 绘画入门教程(webui)-ControlNet(Shuffle)

Shuffle(随机洗牌)&#xff0c;这个预处理器会把参考图的颜色打乱搅拌到一起&#xff0c;然后重新组合的方式重新生成一张图&#xff0c;可以想象出来这是一个整体风格控制的处理器。 那么问题来了&#xff0c;官方为啥会设计个这样的处理器呢&#xff0c;主要是给懒人用的&am…

idea生成WebServices接口

文章目录 idea生成WebServices接口1.创建接口2.生成wsdl文件3.在soapUI中&#xff0c;生成6个文件4.将生成的文件拷贝到工程中5.在service-config中注册服务 idea生成WebServices接口 1.创建接口 新建一个webServices工程&#xff0c;按照接口规范生成接口、请求类、响应类。…

低代码与大语言模型的探索实践

低代码系列文章&#xff1a; 可视化拖拽组件库一些技术要点原理分析可视化拖拽组件库一些技术要点原理分析&#xff08;二&#xff09;可视化拖拽组件库一些技术要点原理分析&#xff08;三&#xff09;可视化拖拽组件库一些技术要点原理分析&#xff08;四&#xff09;低代码…

《TCP/IP详解 卷一》第8章 ICMPv4和ICMPv6

目录 8.1 引言 8.1.1 在IPv4和IPv6中的封装 8.2 ICMP 报文 8.2.1 ICMPv4 报文 8.2.2 ICMPv6 报文 8.2.3 处理ICMP报文 8.3 ICMP差错报文 8.3.1 扩展的ICMP和多部报文 8.3.2 目的不可达和数据包太大 8.3.3 重定向 8.3.4 ICMP 超时 8.3.5 参数问题 8.4 ICMP查询/信息…

Mysql主从GTID与binlog

GTID与binlog **MySQL GTID&#xff08;Global Transaction Identifier&#xff09;和binlog&#xff08;二进制日志&#xff09;是用于搭建主从复制的两种不同的机制。** **GTID是MySQL 5.6版本引入的一种全局事务标识符&#xff0c;用于跟踪和标识复制过程中的事务。每个事务…

【玩转pandas系列】pandas数据结构—DataFrame

文章目录 前言一、DataFrame创建1.1 字典创建1.2 NumPy二维数组创建 二、DataFrame切片2.1 行切片2.2 列切片2.3 行列切片 三、DataFrame运算3.1 DataFrame和标量的运算3.2 DataFrame之间的运算3.3 Series和DataFrame之间的运算 四、DataFrame多层次索引4.1 多层次索引构造1.隐…

解决“设备未经过play保护认证”问题

第一步&#xff1a;获取GSF id 可以通过apkPure安装device id&#xff0c;复制GSF id&#xff0c;如下图 第二步&#xff1a;注册 打开网址&#xff1a;&#xff08;https://www.google.com/android/uncertified/?pli1 &#xff09;等待注册&#xff0c;很快就能完成, 第三步…

js 实战小案例

实战 时间 js 格式化时间 <script type"text/javascript">function formatDate(date) { let year date.getFullYear(); let month String(date.getMonth() 1).padStart(2, 0); // getMonth() 返回的月份是从0开始的&#xff0c;所以要加1&#xff0c;并…

如何快速起盘 七人拼团模式帮您解决 企业家可以过来看看!

七人团购模式&#xff0c;又称即拼模式&#xff0c;是一种创新的商业模式&#xff0c;通过结合拼团与二二复制的玩法&#xff0c;实现了快速的裂变和引流。该模式不仅具有完善的奖励激励制度&#xff0c;能够激发会员的推广积极性&#xff0c;还能显著提高平台产品的销量&#…

JavaWeb个人学习01

1:RequestParam(defaultValue "默认的值") 这个可以在一个参数的前面写上 要是前端不传值进来的话 这个形参就是你定义的默认值 2: slf4j 对应的是日志的输出 log.info("参数是 {}", detail); 3: 分页插件 PageHelper 用法: 准备工作: 引入依赖 …

mybatis 集成neo4j功能实现

文章目录 前言一、引入jar包依赖二、配置 application.properties三、Mybatis Neo4j分页插件四、Mybatis Neo4j自定义转换器handler五、MybatisNeo4j代码示例总结 前言 MyBatis是一个基于Java语言的持久层框架&#xff0c;它通过XML描述符或注解将对象与存储过程或SQL语句进行…