LangChain是什么

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。

简单来说,可以理解LangChain相当于开源版的LLM插件,它提供了丰富的大语言模型工具,支持在开源模型的基础上快速增强模型的能力。LangChain可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。

LangChain有哪些模块

LangChain为以下模块提供标准的、可扩展的接口和外部集成。

Model I/O

任何语言模型应用程序的核心都是模型,LangChain提供了与任何语言模型交互的构建模块。

  • Prompt
    • 模板化、动态选择和管理模型输入
  • Language models
    • 通过通用接口调用语言模型
  • Output parsers
    • 从模型输出中提取信息

model-io流程图

Data connection

许多LLM需要访问用户特殊数据,但这部分数据不属于集群训练的一部分,LangChain提供了通过加载,转换,存储和数据查询的构建模块。

  • Document loaders
    • 从许多不同来源加载文档
  • Document transformers
    • 拆分文档、将文档转换为问答格式、删除冗余文档等
  • Text embedding models
    • 将非结构化文本转换为浮点数列表
  • Vector stores
    • 存储和搜索嵌入的数据
  • Retrievers
    • 查询数据

Data connection

Chains

单独使用LLM对于一个简单的应用来说是很好的,但是面对更复杂的应用程序需要链接(彼此链接或者于其他组件链接)LLMS
LangChain为此类链式应用提供了Chain Interface,我们一般将一个Chain定义为对组件的调用序列。
将组件组合在一个Chain上的想法简单但功能强大,它极大的简化了复杂应用程序的实现,并使其更加模块化,这反过来又使调试、维护和改进应用程序变得更加容易。

Agents

Agent的核心思想是使用LLM开选择要采取的一系列操作,在Chains中,一系列操作被 hardcoded 在代码中。在Agents中,语言模型被用作推理引擎来确定要采取哪些操作以及按什么顺序。

下面是几个关键组件:

  • Agent
    • 由语言模型和提示词提供的负责决定下一步采取什么步骤的类(class),可以理解为它可以动态的帮我们选择和调用chain或者已有的工具
  • Tools
    • Agent 调用的函数,包括下面两点
      • 让 Agent 可以正确运行的工具
      • 让 Agent 可以清楚理解的该工具的描述
  • Toolkits
    • 通常,Agent 可以使用工具集要比使用单个工具更重要,为此,LangChain 提供了工具包的概念(完成特定目标所需的工具组)
  • AgentExecutor
    • AgentExecutor 是 Agent 的运行时。

agent

Memory

默认情况下,ChainsAgents是无状态的,这意味着它们独立处理每个传入查询(就像底层 LLM 和聊天模型本身一样),在某些应用程序中,例如聊天机器人,必须记住以前的短期和长期的交互/会话,Memory class便是做这件事的。
LangChain提供两种形式的内存组件。首先,LangChain提供了帮助帮助工具来管理和操作以前的聊天信息,这些都是模块化的,其次LangChain提供了将这些实用程序合并到链中的简单的方法。

Callbacks

LangChain提供了一个回调系统,允许你HookLLM应用程序的各个阶段,这对于日志记录、监控、流出库以及其他任务是非常有用的。


以上便是最最基础的关于LangChain和其主要模块的简单介绍,下一篇会使用LangChain+ChatGPT构建一系列简单应用以熟悉LangChain的各个核心模块加理解。