虽然利用提示词工程,我们已经能较好地使用LLM,但即使开发一个很简单的LLM应用,依然需要编写大量复杂代码(调用LLM只是最简单的一步)。

LangChain的目标就是让开发LLM应用变的简单,但LangChain更新极快,导致我们的学习成本较高。

因此,我们准备做两件事,帮助大家提升学习LangChain的效率:

  • 翻译LangChain官方文档
    • 翻译链接:https://jherculesqz.gitbook.io/langchain-guan-fang-wen-dang
  • 解读LangChain官方文档
    • 在本技术专栏中,将详细地逐一解读LangChain官方文档中的各个重要特性。

本篇我们就来解读LangChain官方文档的《Quickstart》章节(https://python.langchain.com/docs/get_started/quickstart),帮助大家快速上手LangChain。

LangChain

1.LangChain概览

(1)什么是LangChain

LangChain 是一个开源框架,支持由LLM驱动的应用程序的开发。它使应用程序能够:

  • 具有上下文感知能力:连接大语言模型和上下文的数据源 (如:提示词、few-shot、聊天历史记录等)

  • 推理:依靠语言模型进行推理 (如:根据给出的上下文回答问题,或者决定下一步动作)

LangChain 的价值点主要有两个:

  • 模块化组件:专注于组合和模块化,提供了基于LLM的各种组件。这些组件可以单独使用,也可以组合使用。
  • 直接可用的链:将各种组件组合成可完成特定任务的"链”。

(2)LangChain整体架构

LangChain为以下模块提供标准的、可扩展的接口和外部集成,从简单到复杂排序如下:

  • Model I/O:与大语言模型的接口。

  • 检索 (Retrieval):与应用程序特定数据的接口。

  • 链 (Chains):构建调用序列。

  • 代理 (Agents):让模型根据高级指令选择使用哪些工具。

  • Memory:在链运行期间保持应用程序状态。

  • Callbacks:记录并传送链的中间步骤。

(3)如何构建LLM应用程序

LangChain提供了许多用来构建LLM应用程序的模块,其中最常用且最重要的模块是LLMChain

LLMChain包含三个主要组件:

  • LLM:LLM是你要构建的应用程序的核心推理引擎。GPT、GLM等大模型LangChain都已适配支持。
  • 提示模板:它为LLM提供指令,从而控制LLM的输出。所以大家要好好学习提示词工程。
  • 输出解析器:把LLM的原始响应转化为程序更易处理的格式,方便后续使用。

接下来我们就基于LLMChain来体验LangChain的便捷吧。

2.快速上手LangChain

下面,我们演示如何用LangChain来做文本总结:

  • 环境准备
  • 构造LLM
  • 构造提示词模板
  • 创建Chain,执行指定任务

STEP1.环境准备

  • 安装LangChain。因为LangChain版本更新很快,安装时优先用”-U"升级模式安装。
  • 安装openai(需申请OpenAPI的Token)。

image-20231123190055109

STEP2.构造LLM

  • 使用langchain 中的 OpenAI 函数来初始化一个大语言模型llm
    • 本例用的是"text-davinci-003”,当然你可以根据需求用gpt或其它模型。

image-20231123174527077

STEP3.构造提示词模板

应用程序不会把用户的输入直接传给LLM,通常的做法是把用户输入传给提示词模板。

提示词模板的好处是:

  • 格式化的提示词结构,包括指令、上下文、输入、输出要求等,为给LLM提供更详细的语境。
  • 支持设置变量,这可以让好用的提示词最大化被复用。
  • 使用langchain的提示词模板函数初始化一个提示词模板prompt_template
    • 提示词指令是总结文本内容
    • 要处理的文本内容设成变量,本次任务是处理一段新闻,后面也可以随意处理其它文本内容

image-20231123202743359

STEP4.创建Chain

现在,我们将以上组件组合成一个链,就可以执行任务了。

  • 使用LLMChain构建我们自己的链chain,传入上面的两个组件llmprompt_template
  • 运行chain,参数只需传入变量text(要处理的文本内容),可以看到如下运行过程:
    • 链开始,
    • 读取text变量,格式化提示词,传给LLM
    • 得到结果,链结束

image-20231123203230173

从上面的示例可以看到,只需一个命令就实现了提示词构建和LLM调用,我们利用Langchain很好的完成了任务。

3.小结

本文解读了LangChain官方文档的《QuickStart》章节,并给出了基于LangChain构建LLM应用的实例代码。QuickStart章节关键要点如下:

  • LangChain简介

    • LangChain 是一个开源框架,支持由LLM驱动的应用程序的开发。

    • LangChain 的主要价值点:提供了各种模块化组件和好用的链

    • LLMChain是LangChain最常见且最重要的一个链,它包含3个主要组件:

      • LLM:应用程序的核心推理引擎。
      • 提示模板:它为LLM提供指令,从而控制LLM的输出。
      • 输出解析器:把LLM的原始响应转化为程序更易处理的格式。
  • 实例演示

    • 基于LangChain构建具备总结功能的LLM应用
      • 环境准备
      • 构造LLM
      • 构造提示词模板
      • 创建Chain,执行指定任务