AI大模型开发架构设计(1)——LLM大模型Agent剖析和应用案例实战

文章目录

    • LLM大模型Agent剖析和应用案例实战
      • 1 从 LLM 大模型到智能体演进技术
        • 语言模型是什么?
        • 大语音模型是什么?
        • 大语言模型日新月异
        • LLM大模型存在局限性
        • LLM Agent来势凶凶
        • LLM Agent增长迅猛
        • LLM Agent是什么?
      • 2 LLM Agent 架构深度剖析
        • 规划能力是什么?
        • 记忆能力是什么?
        • 工具使用能力是什么?
      • 3 LLM Agent 应用案例实战
        • Auto-GPT
        • 基于 LangChain 实现一个 Code Interpreter

LLM大模型Agent剖析和应用案例实战

1 从 LLM 大模型到智能体演进技术

语言模型是什么?
  • 语言模型:给定一些字或者词(称为 token),预测下一个字或者词的模型

image.png

大语音模型是什么?
  • 大语言模型(Large Language Model, LLM)是一类基于深度学习的语言模型,它们在大量的文本数据上进行训练,可以完成各种任务,包括代码编写、总结、翻译等。LLM 的特点是规模庞大,包含数十亿的参数,帮助它们语言数据中的复杂模式。

image.png

大语言模型日新月异

image.png

LLM大模型存在局限性
  • 简单的推理也会犯错?
  • 多聊几句就忘记历史信息了?
  • 写了代码能不能运行验证下?

image.png

LLM Agent来势凶凶

image.png

  • Agent = LLM(大语言模型,就好比人的大脑) + Plan(规划能力)+Memory(记忆能力)+Tools(工具使用能力)
LLM Agent增长迅猛

image.png

LLM Agent是什么?
  • LLM Agent 可以理解为一个以 LLM 为大脑的智能体(类比人),集成了规划、记忆、工具使用等能力。
    • 规划能力
      • 既然 LLM 难以直接处理复杂任务,一个直接的思想就是将任务进行拆解,通过实现几个小目标从而实现一个目标。此外,LLM Agent 可以对过去的行为自我批判和反思,从错误中吸取教训,并对未来的行为进行改进,从而提升最终的效果。
    • 记忆能力
      • 既然 LLM 的上下文有限,扩展其记忆能力肯定不可或缺。
    • 工具使用能力
      • 如果能够让 LLM 既能帮你写代码,还能帮你跑代码,那这样一个智能体的发挥空间就取决于你的想象力了。

LLM Agent 可以理解为一个以 LLM 为大脑的智能体(类比人),集成了规划、记忆、工具使用等能力。

image.png

2 LLM Agent 架构深度剖析

规划能力是什么?
  • 规划能力,本质上希望激发 LLM 的最大潜能,“引导”或者“提示” LLM 更好地回答问题,因为规划能力很大一部分还在 Prompt Engineering 上。

【方式一】任务拆解

  • 就是把任务分成一步一步来执行,一步一步像一条链吗?——CoT 思维链

image.png

CoT任务拆解的缺陷是什么?

  • 链式任务拆解方式可能忽略一些潜在情况,因为一步之后只能选择往下一步,没有多种选择余地。

image.png

任务拆解三种方式

  • 让 LLM 自己来拆解,比如前面的 ToT Prompt,还有常见的拆解 Prompt,“Step for XYZ”等
  • 任务相关的引导,比如写小说,可以让 LLM 写一个小说的大纲 “Write a story outline.”
  • 用户自己分解任务,类似 CoT,自己写出满意的步骤再让 LLM 来模仿

LLM和传统规划方式结合

image.png

【方式二】自我反思

  • 当我做事情时,做对或者做错都会让我们思考怎么做得更好
  • 从 Agent 的角度出发,接收一个观测(Observation),给出一个动作(Action)(强化学习的感觉)

image.png

  • 告诉 LLM 应该按照“思考-行动-观测”的方式来获得最终的回答
    • few-shot Learning + 提供 thought

举个🌰

image.png

记忆能力是什么?

LLM的记忆是什么?

  • 训练数据 -> 模型参数(fixed) —— 长期记忆
  • 上下文提示(Context),我们喂给 LLM 信息的地方—— 短期记忆
    • 记忆容量(上下文长度)有限,“按需投喂”:先存后取

LLM + 向量数据库

  • -> 向量数据库的核心思想是将文本转换成向量(Embedding),然后将向量存储在数据库中。
  • -> 讲用户输入的问题转成向量,然后在数据库中国检索最相似的向量,以及向量对应的文本(记
    忆),返回给 LLM,生成回答。

image.png

举个🌰

image.png

当“记忆”非常多时,如何在大量“记忆”力快速找到最相关的那些“记忆”?

  • 近似最近邻(Approximate Nearest Neighbor)
    • 牺牲了精度,换取了速度
    • ANN 多种实现:局部敏感哈希、乘积量化等
    • 核心思想通过某种方式,将数据的特征压缩或分组,在搜索时,只需在部分数据中寻找最近邻
      在这里插入图片描述
工具使用能力是什么?

工具使用能力

  • 巧妇难为无米之炊,仅靠 LLM 自身能做的事情还是比较有限,比如:LLM 可以帮忙写代码,但是无法执行代码,因此要让 LLM 能做更多事情,就需要借它点工具。

image.png

工具使用能力-function calling

  • 开发者定义一个第三方函数(自定义工具)
  • 调用 OpenAPI 时,把第三方函数作为参数传给 LLM
  • LLM 判断何时需要调用第三方函数(注意:LLM 只是判断,然后由开发者来执行)
  • 开发者调用第三方函数后,要把返回值传给模型(再次调用 OpenAI API)
  • 此时 LLM 的返回值则是最终的回答

image.png

工具使用能力-HuggingGPT

  • 理解用户自然语言指令,并计划分配任务
  • 根据 Hugging Face 上的模型描述,选择合适的工具(AI 模型)
  • 调用 AI 模型执行子任务
  • 整合结果并返回结果

image.png

3 LLM Agent 应用案例实战

Auto-GPT
  • Auto-GPT 是一个开源的实验性项目,它算是 LLM Agent 的一个标准雏形了,包括前面提前的各种能力(规划、记忆、使用工具),可以根据用户的目标让 GPT-4 实现完全自主运行。

image.png

  • Auto-GPT 的效果很大程度上归功于它复杂的 Prompt 工程,主要包含几个部分:

    • 需要设定交给 Auto-GPT 完成的目标
    • 调用 API 花费的预算
    • 一些 LLM 需要遵守的规则(约束)
    • 可以调用的工具(API)
    • 返回需要格式

image.png

Auto-GPT 的输出

image.png

  • 可以看出,这里既有任务拆解,也有反思,同时还具有调用外部工具的能力,而记忆能力(向量数据库)虽然这里不能直接体现出来,但是 Auto-GPT 也是具备的。

Auto-GPT 的主要框架设计

image.png

  • 可以看出,创建一个初始的计划,然后进入主循环。系统会让模型判断在当前计划下该进行何种行动,接着会执行行动。执行完毕后,结果会写入下一次循环中。如此,每次决策都会基于之前的结果、记忆和计划,从而制定出新的行动方案。
基于 LangChain 实现一个 Code Interpreter
  • LLM Agent 技术架构设计和应用实现——对于 IT人来说是一项非常重要的技能,它可以让您的 LLM 业务研发更高效和创新。

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1.10马原,总复习PART2

马克思主义鲜明特征 革命性,科学性,实践性 人民性,发展性 革命性、科学性,实践性,人民性,发展性 革命性,科学性,实践性,人 革命性,发展性&#xff0c…

架构篇05-复杂度来源:高可用

文章目录 计算高可用存储高可用高可用状态决策小结 今天,我们聊聊复杂度的第二个来源高可用。 参考维基百科,先来看看高可用的定义。 系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。 这个定义…

数学建模实战Matlab绘图

二维曲线、散点图 绘图命令:plot(x,y,’line specifiers’,’PropertyName’,PropertyValue) 例子:绘图表示年收入与年份的关系 ‘--r*’:--设置线型;r:设置颜色为红色;*节点型号 ‘linewidth’:设置线宽&#xff1…

使用cmake进行完成开发实践

根据这个UML图进行cmake的实践 首先按照使用vscode在wsl2中配置clangd环境-CSDN博客的内容先创建出cmake项目。 之后在项目目录中创建include和src目录。 根据UML图,首先要完成Gun类的实现。分别在include,src目录下创建头文件和源文件,写入…

迭代器模式介绍

目录 一、迭代器模式介绍 1.1 迭代器模式定义 1.2 迭代器模式原理 1.2.1 迭代器模式类图 1.2.2 模式角色说明 1.2.3 示例代码 二、迭代模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 抽象迭代类 2.2.2 抽象集合类 2.2.3 主题类 2.2.4 具体迭代类 2.2.5 具体集合类 …

android使用相机 intent.resolveActivity returns null

问题 笔者使用java进行android开发,启动相机时 intent.resolveActivity returns null takePictureIntent.resolveActivity(getPackageManager()) null详细问题 笔者使用如下代码启动相机 // 启动相机SuppressLint("LongLogTag")private void dispatc…

基于华为MRS3.2.0实时Flink消费Kafka落盘至HDFS的Hive外部表的调度方案

文章目录 1 Kafka1.1 Kerberos安全模式的认证与环境准备1.2 创建一个测试主题1.3 消费主题的接收测试 2 Flink1.1 Kerberos安全模式的认证与环境准备1.2 Flink任务的开发 3 HDFS与Hive3.1 Shell脚本的编写思路3.2 脚本测试方法 4 DolphinScheduler 该需求为实时接收对手Topic&a…

yum下载源,vim使用

文章目录 yum本地配置lzrsz命令行互传scp(远程拷贝)vim yum本地配置 [rootiZf8z3j2ckkap6ypn717msZ ~]# pwd /root [rootiZf8z3j2ckkap6ypn717msZ ~]# ls /etc/yum.repos.d CentOS-Base.repo epel.repo //本地配置源yum会根据/etc/yum.repo.d路径下的配置文件来构成自己的下载…

一个简单的ETCD GUI工具

使用ETCD没有好用的GUI工具,随手用c#写了一个, 做得好玩的一个ETCD GUI工具,后面加上CLI 工具,类似于 redis Cli工具一样,简化在 Linux下面的操作,不知道有没有必要, git 地址如下,…

华为OD机试 - 查找一个有向网络的头节点和尾节点(Java JS Python C)

题目描述 给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节点,如 [0, 1] 表示从 0 到 1 的路径。 每个节点用正整数表示。 求这个数据的首节点与尾节点,题目给的用例会是一个首节点,但可能存在多个尾节点。同时图中…

天龙八部资源提取工具(提取+添加+修改+查看+教程)

可以提取,添加,修改,查看天龙八部里面的数据。非常好用。 天龙八部资源提取工具(提取添加修改查看教程) 下载地址: 链接:https://pan.baidu.com/s/1XOMJ1xvsbD-UUQOv3QfHPQ?pwd0kd0 提取码&…

leetcode下一个更大的元素---1暴力---2单调栈

1.题目&#xff1a; nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 给你两个 没有重复元素 的数组 nums1 和 nums2 &#xff0c;下标从 0 开始计数&#xff0c;其中nums1 是 nums2 的子集。 对于每个 0 < i < nums1.l…

苹果眼镜(Vision Pro)的开发者指南(1)

一、用到的底层核心框架&#xff1a; SwiftUI&#xff1a;无论开发者是要创建窗口、体积还是空间体验&#xff0c;SwiftUI 都是构建新的 visionOS 应用程序或将现有 iPadOS 或 iOS 应用程序引入平台的最佳方式。凭借全新的 3D 功能以及对深度、手势、效果和沉浸式场景类型的支…

C++类与对象【多态】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;C从基础到进阶 &#x1f384;1 多态&#x1f355;1.1 多态的基本概念&#x1f355;1.2 多态案例一-计算器类&#x1f355;1.3 纯虚函数和抽象类&#x1f355;1.4 多态案例二-制作饮品&…

【华为GAUSS数据库】IDEA连接GAUSS数据库方法

背景&#xff1a;数据库为华为gauss for opengauss 集中式数据库 IDEA提供了丰富的各类型数据库驱动&#xff0c;但暂未提供Gauss数据库。可以通过以下方法进行连接。 连接后&#xff0c; 可以自动检查xml文件中的sql语句是否准确&#xff0c;表名和字段名是否正确还可以直接在…

数学建模常见算法的通俗理解(2)

目录 6 K-Means&#xff08;K-均值&#xff09;聚类算法&#xff08;无需分割数据即可分类&#xff09; 6.1 粗浅理解 6.2 算法过程 6.2.1 选定质心 6.2.2 分配点 6.2.3 评价 7 KNN算法&#xff08;K近邻算法&#xff09;&#xff08;K个最近的决定方案&#xff09; 7.…

第 122 场 LeetCode 双周赛题解

A 将数组分成最小总代价的子数组 I 枚举&#xff1a;枚举后两个子数组的起始下标 class Solution { public:int minimumCost(vector<int> &nums) {int n nums.size();int res INT32_MAX;for (int i 1; i < n; i)for (int j i 1; j < n; j)res min(res, n…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)

地址簿相关功能 1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码实现1.2.1 Mapper层1.2.2 Service层1.2.3 Controller层 1.1 需求分析和设计 1.1.1 产品原型 地址簿&#xff0c;指的是消费者用户的地址信息&#xff0c;用户登录成功后可以维护自己的地…

C#调用C动态链接库

前言 已经没写过博客好久了&#xff0c;上一篇还是1年半前写的LTE Gold序列学习笔记&#xff0c;因为工作是做通信协议的&#xff0c;然后因为大学时没好好学习专业课&#xff0c;现在理论还不扎实&#xff0c;不敢瞎写&#xff1b; 因为工作原因&#xff0c;经常需要分析一些字…

如何使用xlwings库为Excel表格的单元格创建超链接----关于Python里xlwings库对Excel表格的操作(三十九)

这篇小笔记主要记录【如何使用xlwings库为Excel表格的单元格创建超链接】。前面的小笔记已整理成目录&#xff0c;可点链接去目录寻找所需更方便。【目录部分内容如下】【点击此处可进入目录】 &#xff08;1&#xff09;如何安装导入xlwings库&#xff1b; &#xff08;2&…