1.0 Agent 在学术界的热度持续攀升
- 人工智能应用的几个阶段
- LLM Agent 的构成要素 语言模型 (LLM) 仅限于它们所训练的知识,并且这些知识很快就会过时。且 LLM 具备以下缺点:
AI Agent 可以利用外部工具来克服这些限制 Agent = LLM(大型语言模型)+ 记忆(Memory)+ 规划技能(Planning skills)+ 工具使用(Tool use) LLM-based Agent 的概念框架,包含三个组成部分:控制端(Brain)、感知端(Perception)和行动端(Action)
控制端
:通常由 LLMs 构成,是智能代理的核心。它不仅可以存储记忆和知识,还承担着信息处理、决策等不可或缺的功能。它可以呈现推理和计划的过程,并很好地应对未知任务,反映出智能代理的泛化性和迁移性。感知端
:将智能代理的感知空间从纯文本拓展到包括文本、视觉和听觉等多模态领域,使代理能够更有效地从周围环境中获取与利用信息。行动端
:除了常规的文本输出,还赋予代理使用工具的能力,使其能够更好地适应环境变化,通过反馈与环境交互。- 会产生幻觉。
- 结果并不总是真实的。
- 对时事的了解有限或一无所知。
- 很难应对复杂的计算。
- 大部分 LLM Agent 的执行逻辑
在日常工作中,我们通常将一项任务拆解成几个步骤:制定计划、执行计划、检查结果,然后将成功的作为标准,未成功的则留待下一次循环解决,这种方法已经被证明是高效完成任务的经验总结,即 PDCA 模型。PDCA 模型可以将一般项目分为四个阶段,即 Plan(计划)——Do(执行)——Check(检查)—— Adjust(调整)。把一件事情做出计划、然后实施计划、检查计划分析哪些出现了问题并提出解决方案、然后成功的纳入标准,不成功的进入下一个循环去解决,循环往复,从而形成一套标准化的流程。
要让 LLM 替代人去做事,我们可以基于 PDCA 模型进行 规划、执行、评估和反思。
1.1 当前热门的开源 Agent 框架
框架名 | Agent 类型 | |
---|---|---|
LangChain | single-agent | 功能最全的 LLM 应用框架,可以基于 LangChain 实现大部分 Agent 框架 |
BabyAGI | single-agent | babyAGI 决策流程:1)根据需求分解任务;2)对任务排列优先级;3)执行任务并整合结果; |
AutoGPT | single-agent | AutoGPT 定位类似个人助理,帮助用户完成指定的任务,如调研某个课题。AutoGPT 比较强调对外部工具的使用,如搜索引擎、页面浏览等。 |
HuggingGPT | single-agent | 执行任务流程:任务规划 -> 模型选择 -> 执行任务 > 响应汇总和反馈HuggingGPT 与 AutoGPT 的不同之处在于,它可以调用 HuggingFace 上不同的模型来完成更复杂的任务,从而提高了每个任务的精确度和准确率。 |
AutoGen | multi-agent | 三种类型的 agent,分别对应处理单一任务、用户输入以及团队合作功能 |
... |
详细参考:19 类 Agent 框架对比
Agents 项目中最典型的就是 LangChain,AutoGPT,BabyAGI,HuggingGPT,AutoGen 等,其中 LangChain 是功能最全的应用框架,AutoGPT,BabyAGI,HuggingGPT 等框架可以认为是 LangChain 的一个衍生品,即用 LangChain 就可以实现。AutoGen 是一个多代理框架,可以在多个代理之间实现自动化聊天,协作完成任务。
LangChain:(Agent 使用的框架)一个 LangChain 应用是通过很多个组件实现的,LangChain 主要支持 6 种组件:
- Models:模型,各种类型的模型和模型集成,比如 GPT-4
- Prompts:提示,包括提示管理、提示优化和提示序列化
- Memory:记忆,用来保存和模型交互时的上下文状态
- Indexes:索引,用来结构化文档,以便和模型交互
- Chains:链,一系列对各种组件的调用
- Agents:代理,决定模型采取哪些行动,执行并且观察流程,直到完成为止
LangChain 提供的部分 Tools
AutoGen:是 Microsoft 开发的一个用于简化 LLM 工作流的编排、优化和自动化的框架。它提供了可定制和可交谈的代理,充分利用了大模型(比如 GPT-4)的能力,并且可以集成人类智慧和工具,在多个代理之间可以实现自动化聊天,后续详细介绍
1.2 经典 Agent 范式
1.2.1 单 Agent 框架
ReAct 范式参考论文:https://arxiv.org/pdf/2210.03629.pdf
ReAct 模板 与其他 prompt 模板的对比:
ReAct 的执行流程:
ReAct 在各评测任务集上领先 Standard、CoT、Act-only 等 prompt 方法:
经过 Finetune 后,ReAct 可以获得最佳的表现经过微调后的 62b 模型,表现甚至比 540b 没有微调的模型好。
ReAct 模板示例:
template = """Answer the following questions as best you can, but speaking as a pirate might speak. You have access to the following tools:
{tools}
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin! Remember to speak as a pirate when giving your final answer.
Question: {input}
{agent_scratchpad}"""
1.2.2 多 Agent 框架
AutoGen参考论文:https://arxiv.org/pdf/2308.08155.pdf
Autogen 是 Microsoft 开发的一个用于简化 LLM 工作流的编排、优化和自动化的框架。它提供了可定制和可交谈的代理,充分利用了大模型(比如 GPT-4)的能力,并且可以集成人类智慧和工具,在多个代理之间可以实现自动化聊天。
AutoGen 多 agent 工作流程示例:
上图阐述了系统内部的过程,通过一系列的流程,按照多个阶段来实现最终的需求
AutoGen 中各角色的定义和协同:
- AutoGen 中包含两种 Agent 一种 Manager,即:UserProxyAgent、AssistantAgent、GroupChatManager。
- AssistantAgent 的主要作用是作为中枢大脑提供理解、分析、决策
- UserProxyAgent 主要作为处理由中枢大脑给出的决策的执行者
- GroupChatManager 则是能够让多个 Agent 进行分组的管理者,类似于实际工作中把一个 Manager 下面的团队分为多个 Team 的情况。
AutoGen 任务执行准确率明显比 ReAct 更高
1.3 LLM Agent 局限性
依赖于 LLM
:Agent 的所有的衍生技术都严重依赖于 LLM 的能力,所以一个 Agents 的好坏,也要看这个 LLM 优化的是否到位。RT & 资源
:一般 Agent 作为一个 Controller,需要多次运行和与外界进行交互,本身 LLM 的模型消耗资源就很大,因此一般 Agents 的系统运行效率都不会太高,输出 Token 数过多的情况,RT 会比较高Token Lengths 长度限制
:另一个通用的问题就是 LLM 的输入会有长度限制,一般是 2048,4096 等等,总之都是有限的,我们在做 Agent 的轮次就不会太长,这会限制 Agents 来解决更复杂问题的能力。不稳定性
:总体上,LLM 的输出还是不可控的,会在有时候不遵循 instruction,然后开始胡说八道的情况,这会导致 Agents 的运行出现异常。
2.1 电商智能助手过去一年在大模型应用的探索
2.1.1 基于大模型的部分
AI 场景包含:BC 会话、商品冷知识、SKU 总结、评价总结、商品属性知识、商品参数、物流、讲价等场景;
在线部分:微调后的通义千问 - 14B 模型服务;离线部分:GPT3.5(冷知识、SKU 总结等相对固定的场景);