2023年大语言模型神器 - LangChain

发布时间 2023-07-12 10:48:27作者: 程序员字典

前言

今天介绍一下 LangChain 框架,LangChain 是一个帮助在应用程序中使用大型语言模型(LLM)的编程框架。它可以将大型语言模型与其他计算或知识来源相结合,从而实现功能更加强大的应用。

最初 LangChain 是一个开源项目,在 GitHub 上获得大量关注之后迅速转变为一家初创公司。随着大模型的热度不断攀升,LangChain也获得了越来越多的开发人员亲睐。

什么是 LangChain

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

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

LangChain 核心概念及原理

1. Components and Chains

在 LangChain 中,Component 是模块化的构建块,可以组合起来创建强大的应用程序。Chain 是组合在一起以完成特定任务的一系列 Components(或其他 Chain)。例如,一个 Chain 可能包括一个 Prompt 模板、一个语言模型和一个输出解析器,它们一起工作以处理用户输入、生成响应并处理输出。

2. Prompt Templates and Values

语言模型提示词模板PromptTemplates,提示模板可以让我们重复的生成提示,复用我们的提示。它包含一个文本字符串(“模板”),从用户那里获取一组参数并生成提示。
PromptValues 是具有方法的类,这些方法可以转换为每个模型类型期望的确切输入类型(如文本或聊天消息)。

3. Memory

默认情况下Agent和Chain都是无状态的,所以用完之后不知道上次的对话内容是什么。ChatMessageHistory 类负责记住所有以前的聊天交互数据,然后可以将这些交互数据传递回模型、汇总或以其他方式组合。这有助于维护上下文并提高模型对对话的理解。

4. Indexes and Retrievers

Index 是一种组织文档的方式,使语言模型更容易与它们交互。检索器是用于获取相关文档并将它们与语言模型组合的接口。LangChain 提供了用于处理不同类型的索引和检索器的工具和功能,例如矢量数据库和文本拆分器。

5. Agents and Toolkits

Agent 是在 LangChain 中推动决策制定的实体。他们可以访问一套工具,并可以根据用户输入决定调用哪个工具。Tookits 是一组工具,当它们一起使用时,可以完成特定的任务。代理执行器负责使用适当的工具运行代理。

6. Output Parsers

输出解析器,负责将语言模型响应构建为更有用的格式,可以让LLM输出更加结构化的信息。它们实现了两种主要方法:一种用于提供格式化指令,另一种用于将语言模型的响应解析为结构化格式。这使得在您的应用程序中处理输出数据变得更加容易。

7. Example Selectors

示例选择器,他们接受用户输入并返回一个示例列表以在提示中使用,如果有多个案例的时候,使用ExampleSelectors选择一个案例让提示词使用:

  • 自定义的案例选择器
  • 相关性选择器,选择一个和输入最相关的案例
  • 基于长度的案例选择器,输入长的时候按理会少一点,输入多的时候,案例会多一些

理解了上面的这些核心概念之后,你就可以利用 LangChain 的强大功能来构建适应性强、高效且能够处理复杂用例的高级语言模型应用程序。

应用案例实战

如何使用LangChain做一款聊天机器人?

由于 LangChian 有相应的开源工具帮我们把各种组件做了可视化,所以直接拖拽即可,我们使用LangFlow:

pip install langflow

然后运行命令:

langfow

如果和本地的LangChain有冲突,我们可以使用Docker运行langfow:

FROM python:3.10-slim

RUN apt-get update && apt-get install gcc g++ git make -y
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH

WORKDIR $HOME/app
COPY --chown=user . $HOME/app
RUN pip install langflow>==0.0.71 -U --user
CMD ["langflow", "--host", "0.0.0.0", "--port", "7860"]

在界面上配置LangChain的三个组件:在最右下角是对应的聊天窗口,输入下openai的key

开始聊天验证下我们的配置:

整个过程基本上没怎么写代码,只要了解LangChain的组件的功能,基本上就可以搭建出一款简单的聊天机器人。

总结

本文介绍了LangChain框架,它通过提供模块化和灵活的方法简化了构建高级语言模型应用程序的过程。通过了解组件、链、提示模板、输出解析器、索引、检索器、聊天消息历史记录和代理等核心概念,我们可以创建适合特定需求的自定义解决方案。

相信在不远的未来,LangChain有望在各个领域发挥出巨大作用,促进工作效率的变革,让我们一起期待吧!