Chapter One Of Learn LangChain 快速入门
安装依赖
1 | pip install langchain |
环境设置
使用LangChain
通常需要与一个或多个模型提供者、数据存储、API等集成。在下面的示例中,我们将使用OpenAI
的模型 API。
安装 openapi 依赖包
1 | pip install openai |
设置环境
通过接口访问OpenAI
需要一个密钥,你可以通过创建一个账户然后绑定支持的信用卡(需要美国信用卡)就可以生成自己的密钥了, 点击进入 OpenAI API Keys 管理,参见下图:
1 | import os |
如果你不想设置环境变量,可以在初始化OpenAI
的LLM
时,直接通过名为openai_api_key
的参数传递秘钥
1 | from langchain.llms import OpenAI |
构建应用程序
LangChain
提供了许多可用于构建语言模型应用程序的模块,模块可以在简单的应用程序中独立使用,也可以组合起来用于更复杂的用例。
LangChain
应用程序的核心构建模块是LLMChain
,这包括了三个重要的东西:
- LLM
- 语言模型是这里的核心推理引擎,为了使用
LangChain
,我们需要了解不同类型的语言模型以及如何使用它们
- 语言模型是这里的核心推理引擎,为了使用
- Prompt Templates
- 它为语言模型提供指令,这控制了语言模型的输出,因此了解如何构建提示,和不同的提示策略是至关重要的
- Out Parsers
- 将原始响应从
LLM
转换为更可行的格式,使其易于使用上下游的输出
- 将原始响应从
LLMS
语言模型有两种类型,在LangChain
中称为
- LLMS
- 这种语言模型将字符串作为输入并返回字符串
- ChatModels
- 这种语言模型将消息列表作为输入并返回消息
ChatModels
LLMS
的输入/输出简单易懂都是一个字符串,但ChatModels
输入是个ChatMessage
列表,输出是单个ChatMessage
,ChatMessage
有两个必要组件:
- content
- 这是消息内容
- role
- 这是
ChatMessage
来源的实体角色
- 这是
LangChain 提功了几个对象来方便区分不用的角色:
- HumanMessage
- 来自人类/用户的聊天消息
- AIMessage
- 来自AI/助手的聊天消息
- SystemMessage
- 来自系统的聊天消息
- FunctionMessage
- 来自函数调用的 ChatMessage
LangChain
为LLMS
和ChatModels
提供了标准接口,暴露的标准接口的两个方法:
- predict
- 接受一个字符串,返回一个字符串
- predict_messages
- 接受消息列表,返回消息
1 | # 举栗 |
Prompt templates
大多数 LLM 应用不会将用户输入直接传递到 LLM,它们会将用户输入添加到被称为提示模版的较大文本中,该文本提供有关当前特定任务的附加上下文。
PromptTemplates
正是帮助解决这个问题,它将从用户输入到格式化的提示符的所有逻辑捆绑在一起,举栗:
1 | from langchain.prompts import PromptTemplate |
与原始字符串格式相比,使用这些格式有几个优点。你可以“部分”去掉变量——例如你一次只能格式化一些变量。您可以将它们组合在一起,轻松地将不同的模板组合到单个提示符中
Output Parsers
Output Parsers
是将LLM
的原始输出转换为可在下游使用的格式,主要有以下类型:
- 将
LLM
文本转换为结构化数据(比如 JSON) - 将
ChatMessage
转换为字符串 - 将调用返回的信息之外的信息(如 OpenAI 函数调用)转换为字符串
在本入门指南中,我们将编写自己的输出解析器,将逗号分隔列表转换为列表的解析器。
1 | from langchain.schema import BaseOutputParser |
LLMChain
下面我们将以上各部分组合成一条Chain
,该Chain
将获取输入变量,将这些变量传递给提示模板以创建提示,然后将提示传递给LLM
,然后通过(可选)的输出解析器输出,这是一种将模块逻辑绑定在一起的方便的方法。
1 | import os |