Agent介绍

发展脉络

Prompt 工程

通过描述角色技能、任务关键词、任务目标及任务背景,告知大模型需要输出的格式,并调用大模型进行输出。如角色扮演(如摘要助手、翻译官等)少样本提示零样本提示。

你现在是一个智能的文本摘要助手,在充分理解文本的情况下,根据文本关键信息对文本进行摘要。你需要遵循以下步骤:首先,整体理解文本的内容并分析出重要内容;其次,根据文本生成摘要,内容需准确、语法结构需连贯顺畅、语言表达需简洁明了;最后,将摘要结果输出,只输出摘要的结果。
你是一名翻译官,将以下语句从中文翻译成英文。你需要遵循以下步骤:首先,整体理解句子的涵义,注意可能包含特殊标记符,翻译时原封不动保留。
你现在是一个排版助手,使用Markdown格式对文本进行排版。你需要遵循以下步骤:首先,理解整体文本的意思;其次,保持文本的内容排版后完全不变。

Prompt 外挂

仅凭 Prompt 工程无法满足大模型需要,比如大模型本身的诸多缺陷,如不能及时更新知识,上下文有限等。所以引入插件方式,比如引入向量数据库,通过额外数据的补充,再提交给大模型做 Prompt 工程。

后续又引入了外挂模式,让大模型调用函数和使用工具。比如:当人们发现大模型的推理能力很差时,调用通用规划器来解决问题规划。

LLM-As-Planner:直接使用LLM,输出结论。
LLM-As-Planner(In-context Learning):上下文学习,提供了一对用自然语言和PDDL描述的问题,作为LLM的上下文。
LLM+P(In-context Learning):

  • 大模型输出合适的问题描述(Problem PDDL)作为通用规划器的输入。
  • 使用通用规划器解决问题。
  • 将规划器的输出转化为自然语言。

思维链

大模型能否像人类一样,一步一步得思考问题?毕竟,人类在解决问题时,也是逐渐构建解决方案,而并非立即给出答案。因此,开始出现了一系列的尝试解法,比如思维链、多思维链、思维树等。

  1. CoT(Chain of thought)

通过 Prompt 要求 LLM 有将困难任务逐步分解成更小更简单的步骤,赋予了LLM 规划能力;相比直接输出方法,可以显著提升语言模型在数学难题通用推理任务上的性能。

问题1:罗杰有5个网球,又买了两盒,每盒有3个网球,他现在一共有多少网球?回答:11

问题2:食堂有23个苹果,吃掉20个又买了6个,一共还有多少个?回答:27

实现方式:

  • 少样本输入:一种是示例说明,即通过给定问题和答案的同时,提供思考过程。这样,当询问模型时,模型会模仿此过程,逐渐思考并给出答案。

  • 零样本输入:一种是具体说明,即要求模型详细地、一步步地思考。

  1. CoT-SC

CoT的集成方案,考虑到CoT有时可能出现错误,所以通过多次采样的方式获得多个CoT的结果,最终返回预测最多次的答案。

问题:每天有16个蛋,每天自己吃3个,朋友用4个,一个蛋买2块,每天可以赚多少钱?CoT回答:14

  1. ToT****(Tree of Thoughts)

在CoT-SC方案中也有局限性,例如24点问题就不能很好解决。使用ToT方案如下:将问题进行垂直分解,分成三步来做,每一步分解成多个子问题,类似于动态规划的做法,就好像把一个大任务拆解成了三个小的子任务,然后再一步一步地去实现它。

输入:4 9 10 13

输出:使用这四位数进行加减乘除,能否得到24点。

步骤:建立 thought 树,需要一个 thought 生成器和 thought 评估器。

总结:每个步骤都分解为多步,因而得到树形的任务链。通过BFS(广度优先搜索)或 DFS(深度优先搜索)来执行,在节点通过prompt分类器或者投票进行评估决策。

反馈

思维链的功能主要在于任务拆分和组合,缺点在于不能与外界进行互动,所以需要反馈机制

  1. ReAct:Synergizing Reasoning and Acting in Language Models

思路:将大任务分解为多个actions组合(与外部工具进行交互,如联网搜索)+思维链。

  • Action(动作):就是要采取的外部工具。
  • Thought(思考):就是LLM对用户question的思考,文字描述,遇到了什么问题,应该执行什么。
  • Observation(观察):Action执行的结果。

比如,询问一个关于科罗拉多造山带的相关问题,它就会去通过搜索工具进行搜索,如果搜索结果没有提到东部地区,它会继续搜索东部地区的数据,然后继续一步一步地思考,根据结果反复思考,直到完成这一项任务。

  1. Reflexion: Language Agents with Verbal Reinforcement Learning

在ReAct的基础上,希望大模型在完成一次任务后,能够积累经验,所以产生了借鉴强化学习思路的反射机制,能够让大模型记住每次任务的完成情况,无论效果好坏,以供未来参考。

背景:论文提出了一种强化学习方法。传统的调优主要是通过训练调整网络参数,而文中提出的方法则是“分析”错误,形成反思的“文字”并保存,在之后的决策中,将其作为上下文以帮助决策。Reflexion 将环境中的反馈转化为文本摘要,然后将其作为附加上下文添加到下一轮的 LLM 代理中,从以前的错误中学习,以在未来任务中表现更好。

Reflexion 框架流程:

  • Actor:首先,LLM基于Query生成文本和动作,这步探索了各种 Actor 模型,包括 COT 和 ReAct,从而丰富了探索空间。
  • 评估:用于评估 Actor 输出的质量。将生成的轨迹作为输入,计算在给定任务上下文中的奖励分数。
  • Heuristic:计算一个启发函数h,决定是否重启env,开启新实验(当前决策路径无效、冗余等)。
  • Self-reflection:自我反思,使用 LLM 实现,用于生成基于语言的反思。将生成轨迹和评估分数生成摘要,作为上下文添加到下一轮。

Agent

Agent = 大语言模型/多模态模型 + 记忆 + 规划 + 工具使用

理论基础

为什么引入Agent? 直接使用LLM有什么限制?

  • LLM 知识有限且更新不及时,可以使用Agent获取更新的信息;
  • LLM 上下文有限,Agent是LLM context未达到无限之前的有效外置途径;
  • LLM 无法同时担任多个角色,在需要协作的任务中无法发挥更好的能力;

论文:Unleashing Cognitive Synergy in Large Language Models: A Task-Solving Agent through Multi-Persona Self-Collaboration

大语言模型中发挥认知协同作用:通过多人格自我协作成为任务解决代理 概述:人类智能依赖于认知协同的概念,在不同认知过程之间进行合作和信息整合,相比单独的认知过程,能够产生更优越的结果。尽管大型语言模型(LLMs)在作为通用任务解决代理方面表现出有希望的性能,但它们仍然在需要大量领域知识和复杂推理的任务中遇到困难。在这项工作中,我们提出了“Solo Performance Prompting”(SPP)的概念,它通过与多个人物进行多轮自我协作,将单个LLM转变为认知协同者。认知协同者指的是一种智能代理,它与多个思维合作,结合他们的个体优势和知识,以增强复杂任务中的问题解决和整体性能。通过根据任务输入动态地识别和模拟不同的人物,SPP释放了LLMs中认知协同的潜力。我们发现,在LLMs中分配多个细粒度的人物角色,相比于使用单个或固定数量的人物角色,能够激发更好的问题解决能力。我们在三个具有挑战性的任务上评估了SPP:创意性问答、Codenames协作和逻辑格子谜题,涵盖了知识密集型和推理密集型两种类型。与之前仅增强LLMs推理能力的作品(如Chain-of-Thought)不同,SPP有效地激发了内部知识获取能力,减少了幻觉,并保持了强大的推理能力。

系统组成

一个基于LLM的自主Agent系统的几个关键组成部分:

  • Planning(规划)

    • 任务分解:(思维链)代理可以将大型任务分解为更小、更易管理的子目标,从而有效地处理复杂任务。
    • 反馈:(反馈机制)代理可以对过去的行为进行自我批评和自我反思,从错误中学习并改进未来的步骤,从而提高最终结果的质量。
  • Memory(记忆)

  • Tool use(工具使用)

    • 通过输出指令,来调用额外的API,弥补 LLM确实的信息和能力。当前信息、代码执行能力、对专有信息源的访问等。

Agent案例

1. 演示平台

智谱清言:https://chatglm.cn/main/gdetail/65d2f07bb2c10188f885bd89 (PPT助手)
百度飞浆:https://aistudio.baidu.com/application/center
字节Coze:https://www.coze.com/store/bot
Dify:https://dify.ai/

2. 文案创作助手

使用百度平台:https://ernie-bot-agent.readthedocs.io/zh-cn/latest/

任务:

核心的使用案例代码,包含记忆、大模型和工具的使用

# 记忆
memory = SlidingWindowMemory(max_round=10) # 滑动窗口,最近10轮
# 大模型调用
llm_final = ERNIEBot(model="ernie-4.0", api_type="aistudio", enable_multi_step_tool_call=True)
image_path  = '1.jpg'
# 工具使用:获取图片信息工具、文案创作工具
response = await FunctionAgent(llm=llm_final, tools=[GetInformation(llm, image_path),
     plan_tool], memory=memory, max_steps=10).run("为1.jpg生成朋友圈文案")

工具代码如下:

class GetPlanInputView(ToolParameterView):
    recommendation: str = Field(description="图像信息筛选结果")

class GetPlanOutputView(ToolParameterView):
    response: str = Field(description="营销文案生成")

class CatchInformation(Tool):
    description: str = "CatchInformation是一款专业且贴心的营销文案生成的工具"
    input_type: Type[ToolParameterView] = GetPlanInputView
    ouptut_type: Type[ToolParameterView] = GetPlanOutputView

    def __init__(self, llm: ERNIEBot):
        self.llm = llm

    async def __call__(self, recommendation: str) -> Dict[str, str]:
        prompt = f"请根据图像信息筛选结果:\n{recommendation}\n输出符合图像信息的营销文案,请一步一步思考后输出结果。"
        response = await self.llm.chat([HumanMessage(prompt)])
        return {"response": response.content}

SYSTEM_MESSAGE = "你是一个营销文案写作助手,你的任务是根据图像信息筛选结果输出符合图像信息的营销文案。请注意,你只需要输出符合图像信息的营销文案,不要输出多余的解释。"
llm = ERNIEBot(model="ernie-4.0", system=SYSTEM_MESSAGE)
# 将这个工具实例化,等待调用
plan_tool = CatchInformation(llm)

3. Appagent(操作APP)

代码:https://github.com/mnotgod96/AppAgent?tab=readme-ov-file
介绍:通过自主学习和模仿人类的点击和滑动手势,在手机上执行各种任务。如下方发邮件、设置闹钟等。

LLM:使用 gpt-4-vision-preview 或者 qwen-vl-max 多模态大模型。
Action:使用 adb 命令进行截图、当前界面的xml文件;点击、长按、滑动、输入文字等。
Memory:主要是在训练阶段,将训练过程中的任务和执行过程用txt记录下来。
用户输入:打开短信,发送XXX内容给Lihua。

整体流程:

  1. 图片理解:通过adb获取当前页面截图和xml布局文件,输入给LLM获取截图操作位置的编号。
  2. 操作指令:通过LLM理解用户输入,并通过 observation--Thought--Action--summary 完成一轮操作。
  3. 重复上述两步,直到完成用户目标。

4. (Multi Agent)Generative Agents Simulation:生成式Agent

Generative Agents 是一个超级有趣的实验,其中 25 个虚拟角色,每个角色都由 LLM 支持的代理控制,在沙盒环境中生活和交互,其灵感来自《模拟人生》。生成代理为交互式应用程序创建可信的人类行为模拟,可以根据自己的经历、兴趣和目标来规划自己的行为,例如起床、做早餐、去工作、画画、写作、交流、回忆和反思等。

  • 为每个AI创建人设

为每个虚拟人物编写人物介绍和社会关系。如药店店员、喜欢帮助别人,家人、邻居和朋友关系等。

  • 创建可互动的小镇

智能体将会在这个被称为 SmallVille的小镇里生活。研究人员为小镇配置了很多可以互动的组件,有居民区,Cafe,酒吧,大学,商店,公园。智能体与场景是可以互动的:例如在图书馆看书,在酒吧喝酒。智能体之间也可以互动:例如在Cafe吃饭的时候聊天,在公园相遇的时候一起运动。

  • 为每个AI创建记忆流管理系统

记忆(在图中用双层框标注):

  1. 长期记忆 Memory Stream:把感知到的大量信息存入记忆流
  2. 瞬时记忆 Retrieved Memories:检索出相关的少量记忆用于做出当前想到的事情,让大语言模型决定接下来要做出的行动

操作(圆角矩形):每一个操作

  1. 感知 Perceive:智能体获取当前的状态,例如:when, where, who, what
  2. 检索 Retrieve:根据当下感知到的内容,开始回想相关的记忆
  3. 行动 Action:根据当前想到的事情,让大语言模型决定接下来的行动
  4. 环路1:反思 Reflect:对检索出的记忆进行高层次的提炼,处理后再加回 记忆流
  5. 环路2:计划 Planning:在固定的时刻内制定未来的计划,可以随时修改

参考文献

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容

  • LangChain 介绍 随着各种开源大模型的发布,越来越多的人开始尝试接触和使用大模型。在感叹大模型带来的惊人表...
    雨田君的记事本阅读 7,853评论 0 3
  • 场景分类()关键问题解决方案论文连接洞察人该任务旨在根据自然语言要求生成整个代码仓库* 面临的挑战:1. 自然语言...
    有花落蝶阅读 67评论 0 0
  • 智能体 智能体AI Agents指能够感知环境、做出决策并采取行动以实现特定目标的智能系统。自动驾驶汽车就是一种典...
    杰森斯坦sen阅读 126评论 0 0
  • 前言 ChatGPT的出现鼓舞了NLP的科研人员和工作者,大模型的涌现让AI在即将退潮时又掀起了层层巨浪。大家似乎...
    眼镜猫头鹰阅读 1,022评论 0 0
  • Chamelon LLM: NEW Revolutionary Framework for Integrated ...
    周群力阅读 334评论 0 0