什么是langchain?
官方答案: LangChain是一种帮助构建自然语言处理应用的库,它提供了许多组件,支持用户搭建各种类型的语言模型应用,例如自然语言生成(NLG)、词性标注、新词发现等。 我的理解:就是一个帮助你把多个流程串联起来的东西。比如你想要把chatgpt和pdf文档分析器联系在一起,那么使用langchain就能帮助你快速的解决。 其实langchain有自己的官方文档,不过由于是英文,而且机器翻译经常出现一些离谱的答案(比如llm经常翻译成法学硕士,其实是大语言模型large language model),最近我一直在深入这方面的学习,所以结合官网和我的经验,写成这本langchain中文文档手册,其中的大部分示例来源于官网(主要是确实人家例子举得很好,我就不画蛇添足了)。如果有些地方解释的不好或者写错了,还请海涵。
进入正题,正所谓万事开头难,今天我们不涉及复杂的理论,先帮助大家下载安装langchain,然后通过一个简单的小栗子,让大家感受一下它的魅力。
在使用LangChain之前,需要先安装LangChain和OpenAI的SDK。在你的编译器(vscode或者别的什么)通过以下指令安装:
pip install langchain
# 或者
conda install langchain -c conda-forge
同时,也需要设置环境变量.env文件,以便通过API调用OpenAI的模型服务(整个系统最重要的环节就是调用各种api):
export OPENAI_API_KEY="..."
在搭建语言模型应用时,需要使用LLMs模块进行预测。 LLMs是LangChain中基础的组件,用于构建语言模型应用。在一个真实的应用中,通常不会直接将用户输入送到LLMs中进行处理,而是将其格式化为prompt,然后再将其输入LLMs进行处理。 Prompt Templates模块的作用就是管理LLMs的prompt,帮助用户将用户输入格式化为prompt。使用Prompt Templates模块的示例代码如下:
from langchain.prompts import PromptTemplate
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)
# 格式化prompt
print(prompt.format(product="colorful socks"))
接下来,我们可以构建语言模型应用的Chains组件。 Chains通常由Primitives和其他Chains组成。其中LLMChain是最基本的类型之一,它由PromptTemplate和LLM两部分组成。用户只需要将用户输入与PromptTemplate进行格式化,然后再将其传递给LLM,就可以构建一个简单的LLMChain。(我的理解是链式调用,比如你想要先把用户的问题接收,然后处理后交给chatgpt,那么这就是一个链式调用,具体实现看下面的例子) 以下是使用LLMChain构建语言模型应用的示例代码:
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
llm = OpenAI(temperature=0.9)
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)
# 这里的llm 和 prompt 就是上面提到的两步,用chain把两个步骤链在一起
chain = LLMChain(llm=llm, prompt=prompt)
# 运行Chain,输入的colorful socks就是input_variables=["product"]的product
chain.run("colorful socks")
以上就是用LangChain构建端到端自然语言处理应用的最基础的应用,非常的直观对不对,其实逻辑是非常简单的。只要理解了这个,后面的其实就是不断的加入更多的步骤进行处理而已。今天就先到这里了,明天接着连载。