青训营X豆包MarsCode 技术训练营 走近LangChain导入课

104 阅读4分钟

一、大语言模型

大语言模型是一种使用深度学习技术,比如神经网络,来理解和生成人类语言的人工智能模型。通俗来讲,大语言模型就是一个巨大的 “预测机器”,它的任务就是预测下一个词是什么。但它生成语言不靠理解,而是靠数学函数学习到的语言模式,生成一个概率模型来做预测。

二、LangChain简介

LangChain是一种应用开发工具,使得处理语言模型变得极其简便。通俗来讲,LangChain就是一个 “大语言模型的开发工具箱” ,它帮我们更方便地使用和开发基于大模型的应用。下面是LangChain官网中的开发界面:

image.png

LangChain支持Python和JavaScript,我们可以使用 pip install langchain 来安装LangChain,并安装依赖(如OpenAI的API、向量数据库等)以提高功能兼容性。

三、OpenAI API

OpenAI比较重要的两种模型:

  • Chat Model 聊天模型 :支持多轮对话,能提供更完整的上下文交互。
  • Text Model 文本模型 :适用于单轮对话或简单文本生成。适用于简单的单轮文本生成任务。
调用Text模型:

1. 注册好API Key。

2. 用 pip install openai 命令来安装OpenAI库。

3. 导入 OpenAI API Key。 导入代码如下:

    import os
    os.environ["OPENAI_API_KEY"] = '你的Open API Key'

OpenAI库就会查看名为OPENAI_API_KEY的环境变量,并使用它的值作为API密钥。所以注册完API key后,还需要在环境变量中添加注册好的API key,这样做可以防止密钥直接在代码中暴露。

4. 导入OpenAI库,并创建一个Client。

Client负责连接API服务、发送请求、接收响应。比如你想调用OpenAI的API生成一段文字,Client就是负责发送请求到OpenAI的服务器,并把服务器返回的响应拿回来。创建Client代码如下:

from openai import OpenAI
client = OpenAI()

其中client = OpenAI()创建了一个OpenAI的客户端实例,用来与OpenAI的大语言模型(GPT-3或GPT-4等)进行交互。OpenAI()是一个封装好的类,它提供了方便的接口来访问OpenAI API。通过这个client对象,我们可以调用OpenAI的大语言模型来生成文本或执行其他任务。在这行代码后面,可以通过client实例来调用模型。例如,通过client.predict("Hello!"),让大模型生成对“Hello!”的回复。

5. 指定 gpt-3.5-turbo-instruct(也就是 Text 模型)并调用 completions 方法,返回结果。 例如:

response = client.completions.create(
  model="gpt-3.5-turbo-instruct",    # 指定要使用的模型,即 gpt-3.5-turbo-instruct
  temperature=0.5,                   # 控制生成文本的创意性或随机性,值越高输出越随机
  max_tokens=100,                    # 限制生成回答的最大字符数(100个 token)  
  prompt="请给我的花店起个名"          # 提示语,指定想要生成的内容主题
)

控制输出的内容和样式的常见参数:

image.png

6. 打印输出大模型返回的文字。

print(response.choices[0].text.strip())

当调用OpenAI的completions.create方法时,它会返回一个响应对象,这个响应对象是一个字典结构,包含了多个字段。例如在使用Text模型(如text-davinci-003)的情况下,响应对象的主要字段包括:

调用chat模型

整体流程上,Chat模型和Text模型的调用是类似的,只是前面加了一个chat,然后输入(prompt)和输出(response)的数据格式有所不同。

示例代码如下:

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
)

这里有有两个专属于Chat模型的概念,一个是消息,一个是角色。

消息:传入模型的提示。此处的messages参数是一个列表,包含了多个消息。每个消息都有一个role(可以是system、user或assistant)和content(消息的内容)。系统消息设定了对话的背景,用户消息提出了具体请求。模型的任务是基于这些消息来生成回复。

角色:在OpenAI的Chat模型中,system、user和assistant都是消息的角色。每一种角色都有不同的含义和作用。

  • system:系统消息主要用于设定对话的背景或上下文。
  • user:用户消息是从用户或人类角色发出的,就是用户希望模型响应的内容。
  • assistant:助手消息是模型的回复。

通过LangChain,我们可以简化调用OpenAI模型的过程。使得原来冗长的代码简化为了几行。

通过这次导入课的学习,我了解到了通过LangChain我们能够很便捷地使用大模型,而不必深入了解底层的API调用。这对于刚开始接触大语言模型的我非常友好,可以通过简单的配置和参数设置就能实现很多复杂的功能。同时我也了解到了这个领域的发展之快,因此我要保持学习基础知识,持续关注新兴技术。