今天从0开始学习langchain系统安装和快速入门的内容
什么是大语言模型
大语言模型本质是一个预测机器,通过前面的文本来生成接下来的每一个词,简单来讲就是猜词。所以大语言模型并不能完全理解语言、意识或者理解能力,而是通过数学函数,通过概率预测来预测每一个单词。
Langchain安装和使用
LangChain 是一个全方位的、基于大语言模型这种预测能力的应用开发工具LangChain 的预构建链功能,就像乐高积木一样,无论你是新手还是经验丰富的开发者,都可以选择适合自己的部分快速构建项目。
Langchain的基本安装
pip install langchain
如果想要更多的开源LLM库需要
pip install langchain[llms]
OpenAI API
调用text模型
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
导入OpenAI库,并创建一个Client
from openai import OpenAI
client = OpenAI()
最后返回响应结果
response = client.completions.create(
model="gpt-3.5-turbo-instruct",
temperature=0.5,
max_tokens=100,
prompt="请给我的花店起个名")
api的超参数选择有哪些呢
最常用的有temperature(数值越低越稳定),max_tokens(限制字数),top_p(表示我考虑的概率最高的前p%的token)
调用chat模型
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
)
这段代码中,除去刚才已经介绍过的temperature、max_tokens等参数之外,有两个专属于Chat模型的概念,一个是消息,一个是角色!
先说消息,消息就是传入模型的提示。此处的messages参数是一个列表,包含了多个消息。每个消息都有一个role(可以是system、user或assistant)和content(消息的内容)。系统消息设定了对话的背景(你是一个很棒的智能助手),然后用户消息提出了具体请求(请给我的花店起个名)。模型的任务是基于这些消息来生成回复。
再说角色,在OpenAI的Chat模型中,system、user和assistant都是消息的角色。每一种角色都有不同的含义和作用。
- system:系统消息主要用于设定对话的背景或上下文。这可以帮助模型理解它在对话中的角色和任务。例如,你可以通过系统消息来设定一个场景,让模型知道它是在扮演一个医生、律师或者一个知识丰富的AI助手。系统消息通常在对话开始时给出。
- user:用户消息是从用户或人类角色发出的。它们通常包含了用户想要模型回答或完成的请求。用户消息可以是一个问题、一段话,或者任何其他用户希望模型响应的内容。
- assistant:助手消息是模型的回复。例如,在你使用API发送多轮对话中新的对话请求时,可以通过助手消息提供先前对话的上下文。然而,请注意在对话的最后一条消息应始终为用户消息,因为模型总是要回应最后这条用户消息。
两者的共同和不同之处
Text模型更简单和直接 Chat模型需要设置系统、用户和助手等角色,方便管理对话和历史
通过LangChain调用Text和Chat模型
调用text模型
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
from langchain.llms import OpenAI
llm = OpenAI(
model="gpt-3.5-turbo-instruct",
temperature=0.8,
max_tokens=60,)
response = llm.predict("请给我的花店起个名")
print(response)
输出
花之缘、芳华花店、花语心意、花风旖旎、芳草世界、芳色年华
调用Chat模型
import os
os.environ["OPENAI_API_KEY"] = '你的Open API Key'
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI(model="gpt-4",
temperature=0.8,
max_tokens=60)
from langchain.schema import (
HumanMessage,
SystemMessage
)
messages = [
SystemMessage(content="你是一个很棒的智能助手"),
HumanMessage(content="请给我的花店起个名")
]
response = chat(messages)
print(response)
HumanMessage表示的是user信息 SystemMessage表示的是system信息
总结时刻
这节课学习了大语言模型的基本概念,text模型和chat模型如何使用和区别在哪里。 最后介绍了LangChain是什么,如何用来调用text模型和chat模型
思考题
1、从今天的两个例子看起来,使用LangChain并不比直接调用OpenAI API来得省事?而且也仍然需要OpenAI API才能调用GPT家族模型。那么LangChain的核心价值在哪里?
在我看来LangChain的核心内容,就是能够模块化的处理任务,方便解决工程性的问题,而且同时适配不同的大语言模型。
2、LangChain支持的可绝不只有OpenAI模型,那么你能否试一试HuggingFace开源社区中的其它模型,看看能不能用。
from langchain import HuggingFaceHub
llm = HuggingFaceHub(model_id="bigscience/bloom-1b7")
3、 上面我提到了生成式模型,那么,大语言模型除了文本生成式模型,还有哪些类别的模型?比如说有名的Bert模型,是不是文本生成式的模型?
还有编码类的encoder模型,例如Bert。它的作用是做一些编码类的任务,可以对文本进行编码来进行下游任务例如命名实体识别、文本分类等