虽然利用提示词工程,我们已经能较好地使用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。
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)。
STEP2.构造LLM
- 使用langchain 中的 OpenAI 函数来初始化一个大语言模型
llm
。- 本例用的是"text-davinci-003”,当然你可以根据需求用gpt或其它模型。
STEP3.构造提示词模板
应用程序不会把用户的输入直接传给LLM,通常的做法是把用户输入传给提示词模板。
提示词模板的好处是:
- 格式化的提示词结构,包括指令、上下文、输入、输出要求等,为给LLM提供更详细的语境。
- 支持设置变量,这可以让好用的提示词最大化被复用。
- 使用langchain的提示词模板函数初始化一个提示词模板
prompt_template
- 提示词指令是总结文本内容
- 要处理的文本内容设成变量,本次任务是处理一段新闻,后面也可以随意处理其它文本内容
STEP4.创建Chain
现在,我们将以上组件组合成一个链,就可以执行任务了。
- 使用LLMChain构建我们自己的链
chain
,传入上面的两个组件llm
、prompt_template
。 - 运行
chain
,参数只需传入变量text(要处理的文本内容),可以看到如下运行过程:- 链开始,
- 读取text变量,格式化提示词,传给LLM
- 得到结果,链结束
从上面的示例可以看到,只需一个命令就实现了提示词构建和LLM调用,我们利用Langchain很好的完成了任务。
3.小结
本文解读了LangChain官方文档的《QuickStart》章节,并给出了基于LangChain构建LLM应用的实例代码。QuickStart章节关键要点如下:
LangChain简介
LangChain 是一个开源框架,支持由LLM驱动的应用程序的开发。
LangChain 的主要价值点:提供了各种模块化组件和好用的链
LLMChain是LangChain最常见且最重要的一个链,它包含3个主要组件:
- LLM:应用程序的核心推理引擎。
- 提示模板:它为LLM提供指令,从而控制LLM的输出。
- 输出解析器:把LLM的原始响应转化为程序更易处理的格式。
实例演示
- 基于LangChain构建具备总结功能的LLM应用
- 环境准备
- 构造LLM
- 构造提示词模板
- 创建Chain,执行指定任务
- 基于LangChain构建具备总结功能的LLM应用