LangChain框架「 LangChain 详细介绍」

一、LangChain官方解释六大模块

  • 模型(models) : LangChain 支持的各种模型类型和模型集成。

  • 提示(prompts) : 包括提示管理、提示优化和提示序列化。

  • 内存(memory) : 内存是在链/代理调用之间保持状态的概念。LangChain 提供了一个标准的内存接口、一组内存实现及使用内存的链/代理示例。

  • 索引(indexes) : 与您自己的文本数据结合使用时,语言模型往往更加强大——此模块涵盖了执行此操作的最佳实践。

  • 链(chains) : 链不仅仅是单个 LLM 调用,还包括一系列调用(无论是调用 LLM 还是不同的实用工具)。LangChain 提供了一种标准的链接口、许多与其他工具的集成。LangChain 提供了用于常见应用程序的端到端的链调用。

  • 代理(agents) : 代理涉及 LLM 做出行动决策、执行该行动、查看一个观察结果,并重复该过程直到完成。LangChain 提供了一个标准的代理接口,一系列可供选择的代理,以及端到端代理的示例。

      核心架构图

二、基础层

包括:Models、LLM、Index三层:

1.Models层:

可以看出各家大模型的演进历史,其中Google、OpenAI、Meta、DeepMind领先优势非常大,国内大厂唯独腾讯缺席。有几个点:

  • 目前最主要的几个大模型为: Google的LaMDA、Meta的LLaMa、OpenAI的GPT-4、DeepMind的:Chinchilla
  • 另外目前投入应用的智能终端基本都是基于模型的Fine-Tuning或者RLHF技术,并且需要大量的相关行业训练集,典型比如code领域、财经领域BloombergGPT、学术论文编写等,其中在作者最关注的Code细分领域,目前的模型有:
    • DeepMind的AlphaCode
    • ​OpenAI的Codex
    • Saleforce的CodeGen

Models层的输出包括:

  • 文本自动生成
  • embeding向量化输出
  • 多模态输出​

2.LLMS层:

这一层主要强调对models层能力的封装以及服务化输出能力,主要有:

  • 各类LLM模型管理平台:强调的模型的种类丰富度以及易用性
  • 一体化服务能力产品:强调开箱即用
  • 差异化能力:比如聚焦于Promp管理、基于共享资源的模型运行模式等等

3.Index层:

对用户私域文本、图片、PDF等各类文档进行存储和检索,这里有两个方案:

  • Vector方案:即对文件先切分为Chunks,在按Chunks分别编码存储并检索
  • KG方案:这部分利用LLM抽取文件中的三元组,将其存储为KG供后续检索

二、能力层

如果基础层提供了最核心的能力,能力层则给这些能力安装上手、脚、脑,让其具有记忆和触发万物的能力,包括:Chains、Memory、Tool三部分

1.Chains层:

按照不同的需求抽象并定制化不同的执行逻辑,Chain可以相互嵌套并串行执行,通过这一层,让LLM的能力链接到各行各业比如面向私域数据的load_qa_with_sources_chain; 比如面向SQL数据源的SQLDatabaseChain;再比如能自动生成代码并执行的LLMMathChain等等,这里面比较让人眼前一亮的点有:

  • ConstitutionalChain:对最终结果进行偏见、合规问题处理的逻辑,保证最终的结果符合价值观
  • LLMCheckerChain:能让LLM自动检测自己的输出是否有没有问题的逻辑

2.Memory层:

这层主要有两个核心点:

  • 对Chains的执行过程中的输入、输出进行记忆并结构化存储,为下一步的交互提供上下文,这部分简单存储在Redis即可
  • 根据交互历史构建知识图谱,根据关联信息给出准确结果

3.Tools层:

其实Chains层可以根据LLM + Prompt执行一些特定的逻辑,但是如果要用Chain实现所有的逻辑不现实,可以通过Tools层也可以实现,Tools层理解为技能比较合理。典型的比如搜索、维基百科、天气预报、chatGPT服务等等。

四、应用层

有了基础层和能力层,我们可以构建各种各样好玩的,有价值的服务,这里就是Agent

1.Agent层:

Agent层可以根据Tool和Chain组合出特定的服务来,最终实现以更自然的文本交互形态完成用户特定需求的目标,比如用自然语言的方式实现sql的操作等等

五、必知概念

1.Chat Models:

聊天模型是语言模型的一个变体,聊天模型以语言模型为基础,其内部使用语言模型,不再以文本字符串为输入和输出,而是将聊天信息列表为输入和输出,他们提供更加结构化的 API。通过聊天模型可以传递一个或多个消息。LangChain 目前支持四类消息类型:分别是 AIMessage、HumanMessage、SystemMessage 和 ChatMessage 。

SystemMessage:系统消息是用来设定模型的一种工具,可以用于指定模型具体所处的环境和背景,如角色扮演等;

HumanMessage:人类消息就是用户信息,由人给出的信息,如提问;使用 Chat Model 模型就得把系统消息和人类消息放在一个列表里,然后作为 Chat Model 模型的输入

AIMessage:就是 AI 输出的消息,可以是针对问题的回答

ChatMessage:Chat 消息可以接受任意角色的参数

2. Loader 加载器

顾名思义,这个就是从指定源进行加载数据的。比如:

  • 文件夹 DirectoryLoader
  • Azure 存储 AzureBlobStorageContainerLoader
  • CSV文件 CSVLoader
  • 印象笔记 EverNoteLoader
  • Google网盘 GoogleDriveLoader
  • 任意的网页 UnstructuredHTMLLoader
  • PDF PyPDFLoader
  • S3 S3DirectoryLoader/S3FileLoader
  • Youtube YoutubeLoader

3.Prompts

        提示(Prompt)指的是模型的输入,这个输入一般很少是硬编码的,而是从使用特定的模板组件构建而成的,这个模板组件就是 PromptTemplate 提示模板,可以提供提示模板作为输入,模板指的是我们希望获得答案的具体格式和蓝图。LangChain 提供了预先设计好的提示模板,可以用于生成不同类型任务的提示。当预设的模板无法满足要求时,也可以使用自定义的提示模板。  

      在 LangChain 中,我们可以根据需要设置提示模板,并将其与主链相连接以进行输出预测。此外,LangChain 还提供了输出解析器的功能,用于进一步精炼结果。输出解析器的作用是指导模型输出的格式化方式,以及将输出解析为所需的格式。

      LangChain 提供了几个类和函数,使构建和处理提示变得容易:

      PromptTemplate 提示模板
       可以生成文本模版,通过变量参数的形式拼接成完整的语句
      FewShotPromptTemplate 选择器
        将提示的示例内容同样拼接到语句中,让模型去理解语义含义进而给出结果。
      ChatPromptTemplate 聊天提示模版
        以聊天消息作为输入生成完整提示模版。


      StructuredOutputParser 输出解析器
         输出解析器是指对模型生成的结果进行解析和处理的组件。它的主要功能是将模型生成的文本进行解析,提取有用的信息并进行后续处理。如对模型生成的文本进行解析、提取有用信息、识别实体、分类和过滤结果,以及对生成文本进行后处理,从而使生成结果更易于理解和使用。它在与大型语言模型交互时起到解析和处理结果的作用,增强了模型的应用和可用性。

        语言模型输出文本。但是很多时候,可能想要获得比文本更结构化的信息。这就是输出解析器的作用。即输出解析器是帮助结构化语言模型响应的类,LangChain 中主要提供的类是 PydanticOutputParser。

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值