AIGC-Agent介绍

背景

现在的LLM本身只能处理文本相关的东西,无法处理非文本的需求。

比如我有一个csv格式的数据,要求它帮我做数据分析,并且我希望它以图表的方式给出结果,如果没有agent,我必须得手动把它其中的内容提取出来,然后以文本的方式发给LLM,然后LLM以文本的格式给出结果,最后,我根据结果来画图,得到我想要的答案

而如果有agent,我只需要直接把csv上传就行了,agent会自动帮我们去提取数据,并且发送给LLM获取答案,拿到答案之后,再自动帮我们画图,并输出

原理

ReAct框架 + 脚本

ReAct

ReAct是Reasoning and Acting缩写,意思是LLM可以根据逻辑推理(Reason),构建完整系列行动(Act),从而达成期望目标。

ReAct方式的作用就是协调LLM模型和外部的信息获取,与其他功能交互。如果说LLM模型是大脑,那ReAct框架就是这个大脑的手脚和五官。同时具备帮助LLM模型获取信息、输出内容与执行决策的能力。对于一个指定的任务目标,ReAct框架会自动补齐LLM应该具备的知识和相关信息,然后再让LLM模型做出决策,并执行LLM的决策。

一个ReAct流程里,关键是三个概念:

Thought:由LLM模型生成,是LLM产生行为和依据。可以根据LLM的思考,来衡量他要采取的行为是否合理。这是一个可用来判断本次决策是否合理的关键依据。相较于人类,thought的存在可以让LLM的决策变得更加有可解释性和可信度。

Act:Act是指LLM判断本次需要执行的具体行为。Act一般由两部分组成:行为和对象。用编程的说法就是API名称和对应的入参。LLM模型最大的优势是,可以根据Thought的判断,选择需要使用的API并生成需要填入API的参数。从而保证了ReAct框架在执行层面的可行性。

Obs:LLM框架对于外界输入的获取。它就像LLM的五官,将外界的反馈信息同步给LLM模型,协助LLM模型进一步的做分析或者决策。

一个完整的ReAct的行为,包涵以下几个流程:

1.输入目标:任务的起点。可以是用户的手动输入,也可以是依靠触发器(比如系统故障报警)。

2.LOOP:LLM模型开始分析问题需要的步骤(Thought),按步骤执行Act,根据观察到的信息(Obs),循环执行这个过程。直到判断任务目标达成。

3.Finish:任务最终执行成功,返回最终结果。

不足
成本

成本是目前使用LLM模型无法绕过的问题。每一个经常使用LLM模型的开发者,都会觉得自己仿佛回到了20年前开发单片机一样,提交给LLM的内容里每一个字节都需要思考。按照输入和输出token数量收费方式,让开发者必须斟酌内容和内容带来的价值能否cover住成本。

而采用ReAct方式,开发者是无法控制输入内容的。因为在任务提交给LLM后,LLM对任务的拆解、循环次数是不可控的。因此存在一个可能性,过于复杂的任务导致Token过量消耗。一个复杂任务一晚上跑掉一栋别墅的钱也不是玩笑话。

响应时间

比起大部分API接口毫秒级的响应,LLM响应时间是秒级以上。以ChatGPT的API为例,普通一次Completion接口,响应时间都要10秒以上。如果是复杂的任务,达到20秒以上也是可能的。当然,这里不确定是不是OpenAI本身工程能力有限导致的,还是LLM本身就需要这么长的时间。

在ReAct模式下,这个时间变得更加不可控。因为无法确定需要拆分多少步骤,需要访问多少次LLM模型。因此在在秒级接口响应的背景下,做成同步接口显然是不合适的,需要采用异步的方式。而异步方式,又会影响用户体验,对应用场景的选择又造成了限制。

Interpreter代码解释器

即脚本的解释器,当大模型需要执行某些非文本相关的操作时,调用代码解释器来执行,比如当我们需要获取系统当前的环境变量时,可以让大模型给出执行脚本的类型和脚本的代码,然后调用脚本语言来获取当前环境变量并返回

已有的相关Agent开源项目

最早的auto-gpt

后来gpt4里面也支持agent相关功能(不过现在貌似关了)

还有一周前刚刚出的open-interpreter

Agent案例-股票分析

在电脑桌面放一个股票交易数据.csv,让agent帮我们做分析

agent会用ReAct的框架来执行任务,在react的过程中,agent会借助脚本来实现它对应的功能

想法1:我需要获取.csv文件的完整路径。

动作1:ls | grep stock.csv,pwd

结果1:得到文件路径为Desktop/stock.csv

想法2:拿到文件路径后,我需要读取csv文件

动作2:检查当前python环境是否有pandas数据分析的工具包,pip show pandas

结果2:没有pandas工具包

想法3:我需要安装pandas工具包

动作3:pip instanll pandas

结果3:安装完成

想法4:我需要用csv工具读取csv文件

动作4:读取csv文件,read_csv

结果4:读取成功

想法5:我需要分析股票交易价格和成交量的中位数,平均值,标准差

动作5:求中位数,平均值,标准差等

# 计算所有列的平均值

avg = df.mean()

# 计算特定列的平均值

avg_column = df['column_name'].mean()

# 计算所有列的中位数

median = df.median()

# 计算特定列的中位数

median_column = df['column_name'].median()

std_deviation = df.std()  # 计算标准差

min_value = df.min()      # 计算最小值

max_value = df.max()      # 计算最大值

结果5:计算成功

想法6:我需要将上面计算出的数据输出

动作6:使用print打印到控制台

结果6:打印成功

想法7:我需要分析画出股票交易价格和成交量的趋势图

动作7:检查当前python环境是否有echarts的工具包

结果7:没有charts工具包

想法8:我需要安装charts工具包

动作8:pip instanll pyecharts

结果8:安装完成

想法9:我需要构建charts

动作9:编写构建charts的脚本

结果9:编写完成

想法10:我需要运行脚本生成charts

动作10:运行构建charts的脚本

结果10:完成任务,得到charts

参考文章&视频

数字黑魔法的个人空间_哔哩哔哩_bilibili

ReAct论文解读:LLM ReAct范式,在大语言模型中结合推理和动作 - 知乎 (zhihu.com)

从Langchain到ReAct,在大模型时代下全新的应用开发核心-阿里云开发者社区 (aliyun.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值