前言
LangChain实战课的第一节,感兴趣的小伙伴也可以看看之前的文章~
AI练中学理论上将所有需要的包都配置好了,如果代码不缺少包,就不需要自行配置。如果缺少某些包,用
pip install安装相关即可。
大语言模型
大语言模型是一种人工智能模型,通常使用深度学习技术,比如神经网络,来理解和生成人类语言。
这些模型的“大”在于它们的参数数量非常多,可以达到数十亿甚至更多,这使得它们能够理解和生成高度复杂的语言模式。
LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些API,搭建起来的一些框架、模块和接口,支持Python和JavaScript两个开发版本,我们这个教程中全部使用Python版本进行讲解。
安装LangChain
命令行安装
pip install langchain
安装LangChain大部分依赖项
pip install langchain[llms]
pip install --upgrade langchain
安装完成之后,还需要更新到 LangChain 的最新版本,这样才能使用较新的工具
OpenAI API
注册OpenAI,并获得一个API Key
笔者没有注册OpenAI的需求,所有没有这个Key,想知道获取Key方式的请找其他文章
安装OpenAI库
pip install openai
导入OpenAI API Key
- 方法一:在代码中设置环境变量
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
- 方法二:直接设置OpenAI库的api_key值
import openai
openai.api_key = '你的Open API Key'
注意:把Key直接放在代码里面很不安全,如果不小心共享了代码,就被别人看到了,他就可以使用你的资源,建议用方法三
- 方法三:在操作系统中设置环境变量
export OPENAI_API_KEY='你的Open API Key'
调用Text Model
文本模型:根据一个简单的提示生成一段文本,更简单、更直接。在ChatGPT出来之前,大家都使用这种模型的API来调用GPT-3。
(1)导入OpenAI库,并创建一个Client
(2)指定 gpt-3.5-turbo-instruct(也就是Text模型)并调用completions方法,输入字段为prompt
(3)输出大模型返回的文字
from openai import OpenAI
client = OpenAI()
response = client.completions.create(
model="gpt-3.5-turbo-instruct",
temperature=0.5,
max_tokens=100,
prompt="请给我的花店起个名")
print(response.choices[0].text.strip())
注:由于笔者没有OpenAI的Key,所以调用不了这个模型,并没有跑通这个代码,但理论上应该没问题……
(4)文本生成模型的详细参数
(5)create方法响应对象的主要字段
Chat Model
聊天模型:接受一个消息列表,适合处理对话或者多轮次交互,可以进行对话历史的管理、角色模拟,更像是真实聊天场景。用于产生人类和AI之间的对话,代表模型是gpt-3.5-turbo(也就是ChatGPT)和GPT-4。
(1)导入OpenAI库,并创建一个Client
(2)指定 gpt-4(也就是Chat模型)并调用chat.completions方法,输入字段为messages
messages就是传入模型的提示,是一个列表,包含了多个消息。
每个消息都有一个role(角色)和content(内容)
三种角色 :
- system:系统消息主要用于设定对话的背景或上下文。
- user:用户消息是从用户或人类角色发出的。
- assistant:助手消息是模型的回复。
(3)输出大模型返回的文字
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a creative AI."},
{"role": "user", "content": "请给我的花店起个名"},
],
temperature=0.8,
max_tokens=60
)
print(response.choices[0].message.content.strip())
注:由于笔者没有OpenAI的Key,所以调用不了这个模型,并没有跑通这个代码,但理论上应该没问题……
(4)response对象的详细参数
通过 LangChain 调用 Text 和 Chat 模型
调用Text模型
(1)导入LangChain的OpenAI类
(2)创建一个LLM(大语言模型)对象,指定使用的模型和一些生成参数(笔者用的豆包AI模型,详细配置见第一篇笔记)
(3)使用LLM对象生成结果并输出
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model=os.environ.get("LLM_MODELEND"),
temperature=0.8,
max_tokens=600,
)
response = llm.predict("请给我的花店起个名")
print(response)
(4)运行结果
调用Chat模型
(1)导入LangChain的ChatOpenAI类,导入LangChain的SystemMessage和HumanMessage类
(2)创建一个Chat模型对象,指定使用的模型和一些生成参数
(3)创建一个消息列表,设置SystemMessage和HumanMessage
(4)使用创建的chat对象和消息列表生成结果并输出
import os
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage
chat = ChatOpenAI(
model=os.environ.get("LLM_MODELEND"),
temperature=0.8,
max_tokens=600)
messages = [
SystemMessage(content="你是一个很棒的智能助手"),
HumanMessage(content="请给我的花店起个名"),
]
response = chat(messages)
print(response)
(5)运行结果
总结
①成功安装LangChain和大部分依赖项
②了解了OpenAI有Text和Chat两种模型,Text模型适合单轮文本生成、Chat模型更像真实对话。并学到了这两种API的基本调用方式。
③学到会了使用LangChain框架调用Text和Chat两种模型
④目前已经有很多流行的大语言模型,可以试试大模型开源社群HuggingFace官方网站的很多开源模型
思考题(一些个人看法,欢迎大家讨论交流)
(1)使用LangChain并不比直接调用OpenAI API来得省事?而且也仍然需要OpenAI API才能调用GPT家族模型。那么LangChain的核心价值在哪里?
LangChain为复杂对话系统和智能问答系统提供了一个可扩展的框架。适合需要多轮对话、上下文管理、多数据源集成的场景,而不仅仅是一次性调用GPT模型的场景
(2)试一试HuggingFace开源社区中的其它模型
笔者目前还没尝试,以后再补充~
(3)大语言模型除了文本生成式模型,还有哪些类别的模型?
-
- 文本生成模型:生成连贯的文本。
常用于对话系统、文章生成等。
通常基于自回归架构(autoregressive),在生成过程中逐步预测每一个单词,生成自然的句子。
如:GPT系列(如GPT-3、GPT-4)、T5
-
- 文本理解模型:理解和提取文本中的信息,而非生成新内容。
用于分类、情感分析、命名实体识别(NER)、问答等任务。
BERT(Bidirectional Encoder Representations from Transformers)是一个典型的文本理解模型,采用“编码器”结构,通过双向Transformer来捕捉句子的前后文信息。
-
- 嵌入表示模型:将文本映射到一个低维向量空间,以便进行文本相似度计算、搜索和推荐等。
通常不直接生成文本,而是关注如何把文本中的语义信息转化为向量。
如Word2Vec、GloVe、以及Sentence-BERT,在信息检索、聚类和相似度计算中应用广泛。
-
- 检索增强模型:结合了生成模型和信息检索的能力,通过从数据库或知识库中检索相关信息来改进生成效果。
常用于大规模知识库问答、搜索引擎等场景。
如RAG(Retrieval-Augmented Generation)和REALM(Retrieval-Augmented Language Model) ,在回答问题时会检索并参考相关文档或文本片段来生成答案,从而提高生成的准确性。
-
- 多模态模型:处理多种输入类型(如文本、图像、音频等),生成与之相关的输出
用于图像描述生成、图文匹配、视频字幕生成等任务。
如CLIP可以同时处理图像和文本,通过将二者嵌入到同一语义空间,支持跨模态的搜索和匹配;DALL-E系列能基于文本提示生成图像。
-
- 结构化文本生成模型:从结构化数据(如表格、数据库等)生成自然语言文本
常用于数据报告生成、新闻自动化生成等场景。
T5可以被用于结构化数据的生成任务,通过在结构化输入的基础上训练,可以将数据表内容转化为自然语言描述。