1.伴学笔记《LangChain系统安装和快速入门》

144 阅读4分钟

今天从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的超参数选择有哪些呢

image.png 最常用的有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。它的作用是做一些编码类的任务,可以对文本进行编码来进行下游任务例如命名实体识别、文本分类等