大型语言模型(大语言模型)的兴起带来了技术上的重大转变,使开发人员能够创建以前不敢想的应用程序。LangChain是一个用于prompts的编排工具,它利用大语言模型(LLM)的功能来转换您与数据库通信的方式。使用LangChain,您可以轻松地与数据库对话,并实时获得精确的响应,就像您在与一位亲密的朋友交谈一样。
在本教程中,我们将连接到PostgreSQL数据库,并使用Langchain启动与它的对话,而不需要通过SQL查询数据库。
本文的内容
- LangChain介绍
- 为什么要使用LangChain
- LangChain的架构
- 基于LangChain的应用
- 用LangChain创建一个问答应用
- 使用LangChain创建一个简单的LLM调用功能
- 创建prompt模板
- 使用LangChain与数据库进行交互
LangChain介绍
LangChain是一个开源库,通过建立一种将大语言模型与外部数据源(如个人文档或互联网)链接的机制,为开发人员提供了一套全面的资源,以开发运行在大型语言模型(LLM)上的应用程序。开发人员可以利用LangChain将一系列命令串在一起,以创建复杂的应用程序。简而言之,LangChain作为一个框架,使一系列prompts的执行能够达到特定的结果。
为什么要使用LangChain
对于开发人员来说,LangChain是一个重要的工具,因为它使使用大语言模型构建复杂的应用程序变得更加容易。它允许用户将大语言模型连接到其他数据源。通过将大语言模型连接到其他数据源,应用程序可以处理更广泛的信息。
这使得应用程序更加强大和通用。
Langchain提供的功能特性包括:
- 灵活性:LangChain是一个高度灵活和可扩展的框架,允许轻松的组件交换和链定制,以满足独特的需求。
- 速度:LangChain开发团队正在不断提高库的速度,确保用户能够访问最新的LLM功能。
- 社区:LangChain拥有一个强大的、活跃的社区,用户可以在必要时随时寻求帮助。
LangChain架构
该框架被组织为七个模块,每个模块允许您管理与LLM交互的不同方面。
LLM
LLM是LangChain的基本组成部分。它是大型语言模型的包装器/连接器,可以连接各种模型,做集成工作。
Chain(链)
很多时候,要解决任务,对LLM的单个API调用是不够的。该模块允许集成其他工具。例如,您可能需要从特定的URL获取数据,总结返回的文本,并使用生成的摘要回答问题。该模块允许连接多个工具以解决复杂的任务。
prompts模板
prompts是任何NLP应用程序的核心。它是用户如何与模型交互以尝试从模型中获得输出。知道如何写一个有效的prompt是很重要的。LangChain提供了允许用户格式化输入和其他实用程序的prompt模板。
文件加载器和Utils
LangChain的文档加载器和Utils模块分别方便连接到数据源和计算。utils模块提供了Bash和Python解释器会话。这些适用于用户需要直接与底层系统交互的应用程序,或者需要代码片段来计算特定的数学量或解决问题而不是立即计算答案的应用程序。
Agent(代理)
代理作为一个中枢,会利用LLM的能力做出决定、采取行动、观测完成的步骤,并循环任务,直到整个任务完成。LangChain库提供了可以根据输入而不是硬编码的确定性序列采取操作的代理。
Indexes(索引)
当与特定于应用程序的数据结合使用时,语言模型会变得更加强大——该模块包含用于加载、查询和更新外部数据的接口和集成。
Memory(内存)
该模块使用户能够在模型调用之间创建持久状态,能够使用记住过去所说的内容的模型来改进我们的应用程序(的任务)。
Callbacks(回调)
使您可以记录和流化任何链的中间步骤,从而易于观察、调试和评估应用程序的内部。
LangChain的一些应用场景
以下是LangChain的一些常见应用:
使用自然语言查询数据集
大语言模型可以使用自然语言编写SQL查询。LangChain的文档加载器、索引相关链和输出解析器帮助加载和解析数据以生成结果。另外,向LLM输入数据结构是一种更常见的方法。
与api交互
LangChain的链和代理功能使用户能够将大语言模型与其他API调用一起包含在更长的工作流程中。这对于用例很有用,例如检索库存数据或与云平台交互。
建立一个聊天机器人
生成式人工智能为行为逼真的聊天机器人带来了希望,LangChain的prompt模板可以控制聊天机器人的个性和反应。消息历史记录工具通过为聊天机器人提供比默认情况下大语言模型提供的更长的内存,可以在会话中甚至跨多个会话中实现更大的一致性。
使用LangChain创建一个问答应用程序
在上一节中,我们介绍了对LangChain的基本理解。在下一节中,我们将使用LangChain构建一个问答应用程序。按照下面给出的步骤,使用LangChain构建一个基本的问答应用程序。
安装依赖
- 通过执行以下命令创建并激活虚拟环境。
1 | python -m venv venv |
- 使用pip安装
langchain
,openai
和python-environ
库.
1 | pip install langchain openai python-environ |
设置环境变量
您可以将任何开源模型与langchain一起使用。然而,openai模型给出了比开源模型更好的结果,如果您正在使用任何Openai模型,则需要Openai密钥来访问langchain。本教程使用openai模型设计。按照以下步骤创建一个新的openai密钥。
- 访问 platform.openai.com.
- 点击位于页面右上角的名称或图标选项,选择“API密钥”或点击链接 — Account API Keys — OpenAI API.
- 点击 create new secret 按钮创建一个新的openai key.
- 创建一个名称为
.env
的文件,使用下面的格式添加你的key。
1 | OPENAI_API_KEY=<your_openai_key> |
使用LangChain创建简单的LLM调用
创建一个python文件,命名为 langchain_demo.py
,添加以下代码:
1 | from langchain.llms import OpenAI |
我们从langchain
中导入了OpenAI
包装器。OpenAI包装器需要一个OpenAI Key。使用environ
库从环境变量访问OpenAI
key。将其初始化为LLM
变量,模型为text-davinci-003
。最后,定义一个问题字符串并生成一个响应( LLM(问题)
)。
运行脚本
使用以下命令运行LLM调用。
1 | python langchain_demo.py |
您将得到如下输出。
创建prompt模板
创建一个新的python文件 langchain_demo.py
,加入以下代码:
1 | from langchain.llms import OpenAI |
我们从langchain
中导入了PromptTemplate
和LLMChain
。通过指定 template
和input_variables
,创建一个prompt模板,用于获取学习编程语言的顶级资源。创建一个LLMChain
和chain.run()
方法来运行LLM链以获得结果。
运行脚本
使用以下命令运行LLM链。
1 | python langchain_demo.py |
您将得到如下输出。
使用LangChain与数据库进行交互
在本节中,我们将创建一个应用程序,以一种自然的方式与postgreSQL交互(不直接查询)。
安装postgres
- 打开Community DL Page (enterprisedb.com),根据您的操作系统下载。[这是windows下载链接]
- 打开安装程序并继续使用默认值。指定root密码并完成安装。
创建数据库
已完成postgres软件的安装。创建一个名为tasks的数据库表来保存任务详细信息,该数据库可以用作语言链的数据源。
打开pgAdmin4应用程序。
提供root密码,显示数据库。
- 右键单击databases,选择create→Database。提供数据库名称并单击Save以完成数据库创建。
安装依赖
- 通过执行以下命令创建并激活虚拟环境。
1 | python -m venv venv |
- 使用pip安装
langchain
,openai
,python-environ
和psycopg2
库.
1 | pip install langchain openai python-environ psycopg2 |
创建表并插入数据
创建一个新的python文件 db.py
增加以下内容:
1 | import psycopg2 |
我们已经安装了’psycopg2
库,并从 .env
文件中访问了环境变量DBPASS
和DATABASE
。conn
对象将使用psycopg2.connect()
方法建立到PostgreSQL数据库的连接。用于创建任务表和在其中插入一些值的SQL查询将在cursor
对象的帮助下执行。
运行脚本
要创建任务表并向其中插入值,请使用以下命令运行’ db.py ‘脚本。
1 | python db.py |
设置SQL数据库Chain
创建一个python文件 app.py
然后写入以下代码:
1 | from langchain import OpenAI, SQLDatabase, SQLDatabaseChain |
看一下这些代码干什么用:
- 导入
OpenAI
、SQLDatabase
和SQLDatabaseChain
三个langchain
模块 - 从环境变量文件访问
OPENAI_API_KEY
。 - 通过指定连接URL,使用
SQLDatabase.from_uri()
方法建立数据库连接。 - 通过指定温度和
openai_api_key
,使用OpenAI()
创建LLM
对象。 - 通过指定
LLM
和数据库对象,使用SQLDatabaseChain()
创建名为db_chain
的数据库链对象。 Get_prompt()
从控制台获取用户输入,并通过将问题作为参数提及,以该格式创建查询。它使用db_chain.run()
方法运行SQL数据库链。
运行应用
使用以下命令运行SQL数据库链。
1 | python app.py |
您将得到如下输出:
好了!你的第一个python langchain应用程序:)
本教程的完整源代码可以在这里找到:SQLDatabaseChain LangChain Demo
原文:Chat with your databases using LangChain