LLM的一些缺点
1.会产生幻觉。
2.结果并不总是真实的。
3.对时事的了解有限或一无所知。
4.很难应对复杂的计算。
解决方式:加上外部工具
?Google搜索:获取最新信息
?Python REPL:执行代码
?Wolfram:进行复杂的计算
?外部API:获取特定信息
大模型 + 插件 + 执行流程 = Agent
LLM-based Agent 框架包含三个组成部分:控制端(Brain)、感知端(Perception)和行动端 (Action)。
自然语言交互:高质量文本生成 和 言外之意的理解(chatgpt,chatglm ,llama)
知识:基于大批量语料训练的 LLMs,拥有了存储海量知识(Knowledge)的能力。除了语言知识以外, 常识知识和专业技能知识都是 LLM-based Agents 的重要组成部分。(Langchain)
记忆力:长期记忆vs短期记忆。
推理 & 规划:将复杂任务分解为更易于管理的子任务。在制定计划后,可以进行反思并评估其优劣。
迁移性 & 泛化性:
文本输入
视觉输入:图片->文本 图片->编码
听觉输入
其他输入
文本输出:LLMs 最基础的能力
计算微积分,计算泛函,
工具使用:尽管 LLMs 拥有出色的知识储备和专业能力,但在面对具体问题时,也可能会出现鲁棒 性问题、幻觉等一系列挑战。与此同时,工具作为使用者能力的扩展,可以在专业性、事实性、可 解释性等方面提供帮助。例如,可以通过使用计算器来计算数学问题、使用搜索引擎来搜寻实时信 息。
其他模型:调用语音生成、图像生成等专家模型,来获得多模态的行动方式。
人设+激励+问题拆解+行动能力
用大模型理解任务,然后调用专业工具解决
大模型:语言理解力强,缺点:模型出现幻觉,需要精心设计prompt,需要依赖外界工具 Agent
大模型+各式各样的工具辅助
外界专业工具
常用在垂直领域搭建大模型
两种工具类型
通过外挂使大模型具备实时性和解决复杂问题的能力
核心仍然是大模型的理解能力,不同模型有对应不同的提示词
(1)AutoGPT
Prompt提示词包括:
(2)BabyAGI
我想泡茶,应该怎么操作?
任务太复杂时,可以用这种方式解决,核心难点是设计这个流程。
任务:生成一个小女孩读书的图片,她的体态和上述图片一 样。
解决过程:
过程分析:
缺点:链路过长,如果某一个环节出现了问题,后续都会出问题。
辅助模型的记忆能力
(1)one-shot:例子(问题+答案)+ 类似的问题让LLM回答
只告诉了答案,没有讲怎么算的答案,因此,难以泛化到复杂问题。
(2)COT:例子(问题+计算过程和答案)+ 类似的问题让LLM回答
给LLM拆解计算过程,引导它一步步计算。
(3)COT-SC:LLM输出具备随机性,选出现结果最多的作为答案,是一种投票机制。
可以一个模型问多次,输出出现次数最多的结果。
也可以问不同的模型多次,输出出现次数最多的结果。
(4)TOT:具备搜索、评估、回溯的能力。
24点游戏:让大模型对树进行递归和剪枝运算。
1、给大模型加外挂
(1)外挂辅助输入(今天北京的天气如何) 外部调用日历:2023-10-17
(2)外挂输出:日期:2023-10-17,目标:天气,调用工具:气象接口
2、思维链条
把复杂的问题进行拆解,不指望大模型一次回答出来,多调用几次大模型,解决复杂问题。
3、prompt 设计模式
CoT+prompt:给出指令,同时也给出执行任务过程的拆解或者样例。
(1)“自我审视”,提醒模型在产出结果之前,先自我审视一下,看看是否有更好的方案。也可以拿到结果后再调用一下模型强制审视一下。比如 AutoGPT 里的 “Constructively self-criticize your big-picture behavior constantly”。
(2)分而治之,越是具体的context 和目标,模型往往完成得越好。所以把任务拆细再来应用模型,往往比让它一次性把整个任务做完效果要好。
(3)先计划,后执行。BabyAGI,HuggingGPT 和 Generative Agents 都应用了这个模式。也可以扩展这个模式,例如在计划阶段让模型主动来提出问题,澄清目标,或者给出一些可能的方案,再由人工 review 来进行确认或者给出反馈,减少目标偏离的可能。
(4)记忆系统,包括短期记忆和长期记忆的存储、加工和提取等。这个模式同样在几乎所有的 agent 项目里都有应用,也是目前能体现一些模型的实时学习能力的方案。
如果说大模型是电池,那么agent就是一辆电动车。
大模型是核心能力,Agent就是最终交付的产品。
最终产品 Agent的缺点:
(1)依赖大模型的核心能力,大模型本身够强才行。
(2)链路过长,某一环节出错,前功尽弃。(用多次调用选出现最多的结果规避风险)
(3)多次调用模型,效率不高。
(4)迁移能力弱,换模型需要重新写提示词。
(5)能力强弱,取决于写提示词的水平。
大模型能力是有上限的
端到端虽然理想,但是复杂问题很难解决
Agent这种拆解形式,会更加流行