一、介绍
LangChain是一个用于开发由语言模型驱动的应用程序的框架
官网
https://www.langchain.com/
中文官网
https://www.langchain.com.cn/
python langchain
https://python.langchain.com.cn/docs/get_started/introduction
https://python.langchain.com/docs/get_started/introduction
二、模块
langchain中有六大核心模块,分别是
- 模型输入输出 ( Model I/O ):与语言模型进行接口
对于模型,LangChain中可以使用如下三种的不同类型的模型
LLMs
大型语言模型(LLMs)是将文本字符串作为输入,并返回文本字符串作为输出。
聊天模型
聊天模型将聊天消息列表作为输入,并返回聊天消息。
文本嵌入模型
文本嵌入将文本作为输入,并返回一个浮点数列表。
- 检索:与特定于应用程序的数据进行接口
- 管道:构建调用序列
- 代理:让管道根据高级指令选择使用哪些工具
- 内存:在管道运行期间保持应用程序状态
- 回调:记录和流式传输任何管道的中间步骤
三、安装
1、永久设置pip源为国内源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
2、安装langchain 如果不想永久设置国内源,可以指定临时源
pip install langchain -i https://mirrors.aliyun.com/pypi/simple
四、基于LLM模型实现简单的程序
1、什么是大型语言模型(LLM)
大语言模型(LLM)是指使用大量文本数据训练的深度学习模型,可以生成自然语言文本或理解语言文本的含义。大语言模型可以处理多种自然语言任务,如文本分类、问答、对话等,是通向人工智能的一条重要途径。
简单理解:
2、目前大型语言模型(LLM)实例
- GPT3/3.5/4(MoE),openAI公司
- LLaMA (Meta数据泄漏,开源社区狂欢)
- chatGLM (中文语料),清华大学开源
3、目前大型语言模型发展历程
GPT3 June 11,2020 发布
2022年11月,OpenAI发布GPT3.5 API的新模型(text-davinci-003)
2022 12月,互联网热度爆发
2022 12月,Langchain第一版发布
4、对于大语言模型的使用会遇到的几个问题
于是LangChain出现了
5、简单的LLM模型的应用程序
现在我们已经安装了 LangChain 并设置了我们的环境,我们可以开始构建我们的语言模型LLM应用程序了。
我们可以在自己的本地运行一个开源的LLM模型,但是性能好点的LLM模型需要庞大的GPU资源,家里一般电脑无法支撑,当然你如果有一个a100的显卡那可以
既然我们无法本地搭建,那就可找第三方已经搭建好的模型,有提供好的API供我们使用,比如
- 百度的 文心ERNIE
- 阿里 的通义千问
- Openai
- Replicate
这些公司都有API,通过这些API调用他们自己搭建好的模型
这里使用国外openai的API调用模型,所以我们首先需要安装他们的 SDK:
pip install openai -i https://mirrors.aliyun.com/pypi/simple
openai api key 获取参考
https://zhuanlan.zhihu.com/p/626463325
我们需要在终端设置环境变量。
export OPENAI_API_KEY="xxxx"
或者,你可以在 Jupiter 教程(或 Python 脚本)内部完成:
import os
os.environ["OPENAI_API_KEY"] = "xxxx"
比如我们要构建一个基于公司产品生成公司名称的服务。首先需要导入 LLM 包装器。
from langchain.llms import OpenAI
然后可以用任何参数初始化包装器。在这个例子中,我们可能希望输出更加随机,所以我们将以温度(temperature)初始化它。
llm = OpenAI(temperature=0.9)
如果你不想设置环境变量,你可以在初始化OpenAI LLM类时直接通过openai_api_key
命名参数传递密钥:
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")
然后根据输入调用LLM
text = "What would be a good company name for a company that makes colorful socks?"
print(llm(text)) # Feetful of Fun
完整代码
import os
from langchain.llms import OpenAI
os.environ["OPENAI_API_KEY"] = "xxxx"
llm = OpenAI(temperature=0.9)
text = "What would be a good company name for a company that makes colorful socks?"
print(llm(text))
上面案例演示了LLM最基本的功能:根据输入的文本生成新的文本
实际llm模块中的predict方法专门用于根据输入文本生成对应文本
所以上面的代码也可以如下实现
import os
from langchain.llms import OpenAI
os.environ["OPENAI_API_KEY"] = "xxxx"
llm = OpenAI()
llm.predict("What would be a good company name for a company that makes colorful socks?",temperature=0.9)