LangChain系统安装和快速入门|豆包MarsCode AI刷题

430 阅读7分钟

前言

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)文本生成模型的详细参数 image.png (5)create方法响应对象的主要字段 image.png

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对象的详细参数 image.png

通过 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)运行结果 image.png

调用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)运行结果 image.png

总结

①成功安装LangChain和大部分依赖项

②了解了OpenAI有TextChat两种模型,Text模型适合单轮文本生成、Chat模型更像真实对话。并学到了这两种API的基本调用方式。

③学到会了使用LangChain框架调用Text和Chat两种模型

④目前已经有很多流行的大语言模型,可以试试大模型开源社群HuggingFace官方网站的很多开源模型

思考题(一些个人看法,欢迎大家讨论交流)

(1)使用LangChain并不比直接调用OpenAI API来得省事?而且也仍然需要OpenAI API才能调用GPT家族模型。那么LangChain的核心价值在哪里?

LangChain为复杂对话系统和智能问答系统提供了一个可扩展的框架。适合需要多轮对话、上下文管理、多数据源集成的场景,而不仅仅是一次性调用GPT模型的场景

(2)试一试HuggingFace开源社区中的其它模型

笔者目前还没尝试,以后再补充~

(3)大语言模型除了文本生成式模型,还有哪些类别的模型?

    1. 文本生成模型:生成连贯的文本。

常用于对话系统、文章生成等。

通常基于自回归架构(autoregressive),在生成过程中逐步预测每一个单词,生成自然的句子。

如:GPT系列(如GPT-3、GPT-4)、T5

    1. 文本理解模型:理解和提取文本中的信息,而非生成新内容。

用于分类、情感分析、命名实体识别(NER)、问答等任务。

BERT(Bidirectional Encoder Representations from Transformers)是一个典型的文本理解模型,采用“编码器”结构,通过双向Transformer来捕捉句子的前后文信息。

    1. 嵌入表示模型:将文本映射到一个低维向量空间,以便进行文本相似度计算、搜索和推荐等。

通常不直接生成文本,而是关注如何把文本中的语义信息转化为向量。

Word2VecGloVe、以及Sentence-BERT,在信息检索、聚类和相似度计算中应用广泛。

    1. 检索增强模型:结合了生成模型和信息检索的能力,通过从数据库或知识库中检索相关信息来改进生成效果。

常用于大规模知识库问答、搜索引擎等场景。

RAG(Retrieval-Augmented Generation)REALM(Retrieval-Augmented Language Model) ,在回答问题时会检索并参考相关文档或文本片段来生成答案,从而提高生成的准确性。

    1. 多模态模型:处理多种输入类型(如文本、图像、音频等),生成与之相关的输出

用于图像描述生成、图文匹配、视频字幕生成等任务。

CLIP可以同时处理图像和文本,通过将二者嵌入到同一语义空间,支持跨模态的搜索和匹配;DALL-E系列能基于文本提示生成图像。

    1. 结构化文本生成模型:从结构化数据(如表格、数据库等)生成自然语言文本

常用于数据报告生成、新闻自动化生成等场景。

T5可以被用于结构化数据的生成任务,通过在结构化输入的基础上训练,可以将数据表内容转化为自然语言描述。