AI | 基于 LangChain 的 AI Agent 智能体概述

admin 2024年4月22日12:31:44评论7 views字数 5240阅读17分28秒阅读模式

1.人机协同三种模式

生成式AI的智能演化至今,人机协同呈现了三种模式:

  • 嵌入(embedding)模式。用户通过与AI进行语言交流,使用提示词来设定目标,然后AI协助用户完成这些目标,比如普通用户向生成式AI输入提示词创作小说、音乐作品、3D内容等。在这种模式下,AI的作用相当于执行命令的工具,而人类担任决策者和指挥者的角色。

  • 副驾驶(Copilot)模式。2021年微软在GitHub首次引入了Copilot(副驾驶)的概念。GitHub Copilot是一个辅助开发人员编写代码的AI服务。2023年5月,微软在大模型的加持下,Copilot迎来全面升级,推出Dynamics 365 Copilot、Microsoft 365 Copilot和Power Platform Copilot等,并提出“Copilot是一种全新的工作方式”的理念。在这种模式下,人类和AI更像是合作伙伴,共同参与到工作流程中,各自发挥作用。AI介入到工作流程中,从提供建议到协助完成流程的各个阶段。例如,在软件开发中,AI可以为程序员编写代码、检测错误或优化性能提供帮助。人类和AI在这个过程中共同工作,互补彼此的能力。AI更像是一个知识丰富的合作伙伴,而非单纯的工具。

  • 智能体(Agent)模式。人类设定目标和提供必要的资源(例如计算能力),AI独立地承担大部分工作,最后人类监督进程以及评估最终结果。这种模式下,AI充分体现了智能体的互动性、自主性和适应性特征,接近于独立的行动者,而人类则更多地扮演监督者和评估者的角色。

人机协同三种模式示意图:

AI | 基于 LangChain 的 AI Agent 智能体概述

2. AI Agent基本框架

OpenAI内部工程师Weng Lilian 在《LLM Powered Autonomous Agents》文章中将AI Agent定义为,以大语言模型为大脑驱动,具有自主理解感知、规划、记忆和使用工具的能力,能自动化执行完成复杂任务的系统。

基于LLM驱动的Agent基本框架:

AI | 基于 LangChain 的 AI Agent 智能体概述

它具有记忆、规划、行动和使用工具四个主要模块:

  • 记忆(Memory)。记忆模块负责存储信息,包括过去的交互、学习到的知识,甚至是临时的任务信息。有效的记忆机制能够保障智能体在面对新的或复杂的情况时,调用以往的经验和知识。例如,记忆功能的聊天机器人可以记住用户的偏好或先前的对话内容,提供更个性化和连贯的交流体验。它分为短期记忆和长期记忆:a.短期记忆,用于上下文学习;b.长期记忆,提供长时间保留和回忆信息的能力,通常通过外部向量数据库和快速检索实现。长期记忆积累了大量行业领域的数据和知识,使智能体更强大、更具行业深度、个性化和专业化能力。

  • 规划(Planning)。规划模块包括事前规划和事后反思两个阶段。在事前规划阶段,智能体通过预测和决策制定来规划未来行动。例如,在执行复杂任务时,智能体将大目标分解为可管理的子目标,以高效地规划一系列步骤或行动,以达到预期结果。在事后反思阶段,智能体能够检查和改进制定计划中存在的不足之处。它会反思错误和不足,并吸取经验教训进行改进。这些经验将被纳入长期记忆中,帮助智能体避免错误,并更新其对世界的认知。

  • 工具使用(Tool use)。工具使用模块指的是智能体能够利用外部资源或工具来执行任务。如学习调用外部API来获取模型权重中缺失的额外信息,包括当前信息、代码执行能力、对专有信息源的访问等,以此来补足LLM自身不足。例如LLM的训练数据不是实时更新的,这时可以使用工具访问互联网来获取最新信息。智能体使用工具比人类更为高效,通过调用不同的API或工具,完成复杂任务和输出高质量结果,这种使用工具的方式也代表了智能体的一个重要特点和优势。

  • 行动(Action)。行动模块是智能体实际执行决定或响应的部分。面对不同的任务,智能体系统有一个完整的行动策略集,在决策时可以选择需要执行的行动,比如记忆检索、推理、学习、编程等。

这四个模块相互配合使智能体能够在更广泛的情境中采取行动和作出决策,以更智能、更高效的方式执行复杂任务。

基于大模型的Agent不仅可以让每个人都有增强能力的专属智能助理,还将改变人机协同的模式,带来更为广泛的人机融合。

2.1 垂直领域AI Agent 实现路径

实现AI Agent关键点在于,LLM模型需要具备思维链(Chain of Thought,CoT)与工具调用(Function Call)的能力,需要一个应用框架与环境、数据进行交互。

垂直领域 AI Agent 整体架构示意图:

AI | 基于 LangChain 的 AI Agent 智能体概述

用户输入的文档或问题,首先经过文本分割模块,将长句子分割为文本块,输入到Embedding模型,实现向量化进行文本相似性计算,最后将相似的k个文本与问题,输入到LLM模型中,LLM模型通过理解感知、规划、记忆和使用工具完成对问题的回答。

AI Agent 整体流程示意图:

AI | 基于 LangChain 的 AI Agent 智能体概述

2.2 LangChain概述

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。主要作用为允许与 LLM 模型进行交互,使用 LLM 模型与外部数据源进行连接。

LangChain功能

实现例如:

LLM 调用

  • 支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI ...

  • Fake LLM,用于测试

  • 缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL

  • 用量记录

  • 支持流模式

Prompt管理,支持各种自定义模板

  • 拥有大量的文档加载器,比如 Email、Markdown、PDF、Youtube ...

对索引的支持

  • 文档分割器

  • 向量化

  • 对接向量存储与搜索,比如 Chroma、Pinecone、Qdrand

Chains

  • LLMChain

  • 各种工具Chain

  • LangChainHub

LangChain组件

      Loader 加载器

从指定源进行加载数据的。比如:文件夹 DirectoryLoader、Azure 存储 AzureBlobStorageContainerLoader、CSV文件 CSVLoader、印象笔记 EverNoteLoader、Google网盘 GoogleDriveLoader、任意的网页 UnstructuredHTMLLoader、PDF PyPDFLoader、S3 S3DirectoryLoader/S3FileLoader、 YoutubeLoader 等,官方提供许多加载器可使用。

Document 文档

当使用Loader加载器读取到数据源后,数据源需要转换成 Document 对象后,后续才能进行使用。

Text Spltters 文本分割

为什么需要分割文本?因为不管是把文本当作 prompt 发给 openai api ,还是使用 openai api embedding 功能都是有字符限制的,需要使用文本分割器去分割加载的 Document。

Vectorstores 向量数据库

数据相关性搜索其实是向量运算。所以,不管我们是使用 openai api embedding 功能还是直接通过向量数据库直接查询,都需要将我们的加载进来的数据 Document 进行向量化,才能进行向量运算搜索。

Chain 链

Chain 理解为任务。一个 Chain 就是一个任务,多个任务组成一个Chain链。

Agent 代理

Agent可以动态的选择和调用Chain链或者已有的工具。

Embedding

用于计算文本的相关性。这个也是 OpenAI API 能实现构建自己知识库的关键所在。

2.3 思维链(Chain of Thought)

2021年,提示学习(prompt learning)浪潮兴起,而早在2020年,OpenAI 在《Language Models are Few-Shot Learners》论文中提出了如何使用 prompt learning 提升大模型的推理能力。

论文中提出了 Zero-shot、One-shot、Few-shot 三种不同的 prompt 方法

  • Few-Shot(FS)是指模型在推理时给予少量样本,但不允许进行权重更新。对于一个典型数据集,Few-shot 有上下文和样例。Few-shot 的工作方式是提供 K 个样本,然后期望模型生成对应的结果。通常将 K 设置在 10 到 100 的范围内,因为这是可以适应模型上下文窗口的示例数量(nctx = 2048)。Few-shot 的主要优点是大幅度降低了对特定任务数据的需求,并减少了从微调数据集中学习过度狭窄分布。主要缺点是该方法的结果迄今为止远不如最先进的微调模型,仍需要一小部分特定任务的数据。

  • One-Shot(1S)与 Few-Shot 类似,只允许一个样本(除了任务的自然语言描述外)。将 One-Shot 与 Few-Shot、Zero-Shot 区分开的原因是它最接近某些任务与人类沟通的方式。相比之下,如果没有示例,有时很难传达任务的内容或格式。

  • Zero-Shot(0S)和 One-shot 类似,但不允许提供样本,只给出描述任务的自然语言指令。在某些情况下,即使是人类,在没有例子的情况下,也可能难以理解任务的格式。例如,如果要求某人“制作一张关于200米冲刺世界纪录的表格”,这个请求可能是模棱两可的,因为可能不清楚表格应该具有什么格式或包含什么内容。然而,Zero-shot 是最接近人类执行任务的方法。

即使是 Few-Shot,还是存在较大的缺陷的。如果你的问题相对简单,不需要什么逻辑推理,可能靠大模型背答案就能做得不错,但是对于一些需要推理的问题,一些简单的算术应用题,大模型就大概率不行。

于是,思维链(Chain-of-Thought,CoT)很自然地被提出了。

2022 年,在 Google 发布的论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中首次提出,通过让大模型逐步参与将一个复杂问题分解为一步一步的子问题并依次进行求解的过程可以显著提升大模型的性能。而这一系列推理的中间步骤就被称为思维链(Chain of Thought)

AI | 基于 LangChain 的 AI Agent 智能体概述

当人类指令输入 Agent 主体后,Agent 主体通过一系列计划、决策与控制,使用工具与外部环境互动。

Agent 主体的大模型是模拟人类智能决策流程的核心,在许多 Agent 需要处理的任务中,Agent 的“先天知识”并不包含解决任务的直接答案,因此 Agent 需要在一系列与外部环境的交互循环中,制定计划,做出决策,执行行动,收到反馈等,在整个计划、决策与控制的循环中,大模型需要具备“感知CoT”,“记忆CoT”与“推理CoT”的能力,如下图所示, 思维链CoT可以从这三个方面来“赋能” Agent。

AI | 基于 LangChain 的 AI Agent 智能体概述

2.4 工具调用(Function Call)

LLM模型(Function Call)的本质就是让大模型通过微调学会根据prompt中的函数的定义学会下一步应该调用哪个函数,然后我们解析大模型预测的文本结果去执行对应的函数,最后再把执行的结果拼接到prompt中,让大模型继续预测后续的步骤。

主要的步骤有6步:

  1. 定义工具

  2. 用户提出问题

  3. LLM模型根据工具和用户问题预测是否需要使用工具,如果需要就预测出要调用哪个工具以及输入参数

  4. 系统发现大模型预测要使用工具,就调用对应的函数

  5. 系统将调用结果拼接到prompt中

  6. 大模型根据函数调用结果回答用户问题

AI | 基于 LangChain 的 AI Agent 智能体概述

3. AI Agent面临的挑战

  • AI Agent 在未知领域中的泛化能力

  • AI Agent 的过度交互问题

  • 如何实现个性化 Agent

  • 如何建立多智能体社会

  • AI Agent 的安全问题

  • 如何建立 AI Agent 能力评估

reference
  • LangChain-Chinese-Getting-Started-Guide: https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide

  • langchain Introduction: https://python.langchain.com/en/latest/

  • LangChain-Chatchat: https://zhipu-ai.feishu.cn/wiki/QiLtwks1YioOSEkCxFIcAEWNnzb

  • LLM Powered Autonomous Agents: http://lilianweng.github.io/posts/2023-06-23-agent/

  • Language Models are Few-Shot Learners: https://arxiv.org/pdf/2005.14165.pdf

  • Chain-of-Thought Prompting Elicits Reasoning in Large Language Models: https://arxiv.org/abs/2201.11903

  • ChatGLM3 的工具调用FunctionCalling实现原理: https://zhuanlan.zhihu.com/p/664233831

原文始发于微信公众号(TahirSec):AI | 基于 LangChain 的 AI Agent 智能体概述

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月22日12:31:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   AI | 基于 LangChain 的 AI Agent 智能体概述http://cn-sec.com/archives/2682110.html

发表评论

匿名网友 填写信息