系列文章地址
【可能是全网最丝滑的LangChain教程】一、LangChain介绍 - 简书 (jianshu.com)
【可能是全网最丝滑的LangChain教程】二、LangChain安装 - 简书 (jianshu.com)
使用LangChain构建应用
LangChain支持构建应用程序,将外部数据源和计算源连接到LLM。我们将从一个简单的 LLM 链开始,它只依赖于提示模板中的信息来响应。 接下来,我们将构建一个检索链,该链从单独的数据库获取数据并将其传递到提示模板中。 然后,我们将添加聊天记录,以创建对话检索链。这允许您以聊天方式与此 LLM 进行交互,因此它会记住以前的问题。 最后,我们将构建一个代理,利用 LLM 来确定它是否需要获取数据来回答问题。
LLMChain
LangChain可以通过 API 提供的模型(如 OpenAI)和本地开源模型(如 Ollama)等集成。开源模型的部署依赖于我们拥有的硬件配置,我将不做过多分析。
这里我将使用OpenAI提供的API做示例。
首先,我们需要导入 LangChain x OpenAI 集成包。
pip install langchain-openai
访问 API 需要一个 API 密钥,您可以通过创建一个帐户并前往此处来获取该密钥。
一旦我们有了密钥,我们就要通过运行以下命令将其设置为环境变量(非必须):
export OPENAI_API_KEY="..."
然后,我们可以初始化模型:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI()
如果您不想设置环境变量,则可以在启动 OpenAI LLM 类时直接通过命名参数传入密钥:openai_api_key
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(openai_api_key="...")
一旦你安装并初始化了你选择的LLM,我们就可以尝试使用它了!
让我们问它“请介绍一下李白?” 。
llm.invoke("介绍一下李白?")
输出如下:
AIMessage(content='李白(701年-762年),字太白,号青莲居士,唐朝时期伟大的浪漫主义诗人,被后人誉为“诗仙”。他出生于今天的陕西省凤翔县,自幼聪明好学,擅长诗词歌赋,一生创作了大量的诗歌,其作品风格豪放奔放,语言优美,富有想象力,具有极高的艺术价值。李白的诗歌题材广泛,包括山水田园、历史人物、神话传说、饮酒抒怀等,他的诗歌充满了浪漫主义色彩,表现出对自由、理想和自然的热爱。他的代表作有《静夜思》、《将进酒》、《庐山谣》、《早发白帝城》等,这些作品在中国文学史上占有重要地位。李白的一生充满了传奇色彩,他曾游历过许多地方,与当时的文人墨客交往甚广,他的诗歌也深受人们的喜爱。然而,他的生活并不平稳,曾多次遭遇政治挫折,但他始终保持乐观豁达的态度。晚年,李白因病返回故乡,最终在安徽当涂去世。李白的诗歌对中国文学产生了深远影响,他的作品被后世广为传颂,成为中国古代诗歌的瑰宝。 ')
我们还可以使用提示模板来指导它的响应。 提示模板用于将原始用户输入转换为更好的 LLM 输入。
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "你是世界级的历史人物研究人员,擅长用一句话输出回答。"),
("user", "{input}")
])
现在,我们可以将它们组合成一个简单的 LLM 链:
chain = prompt | llm
我们现在可以调用它并提出相同的问题,理论上它应该输出一句介绍李白的话。
chain.invoke({"input": "请介绍一下李白?"})
输出:
AIMessage(content='李白,唐朝浪漫主义诗人,被誉为“诗仙”。 ')
模型的输出是一条消息。但是,使用字符串通常要方便得多。让我们添加一个简单的输出解析器,将聊天消息转换为字符串。
from langchain_core.output_parsers import StrOutputParser
output_parser = StrOutputParser()
现在,我们可以将其添加到上一个链中:
chain = prompt | llm | output_parser
我们现在可以调用它并提出相同的问题。答案现在将是一个字符串(而不是 AIMessage)
输出:
李白,唐朝浪漫主义诗人,被誉为“诗仙”。
总结
至此,我们就学会了LangChain中所谓的“Chain”的基本使用。既然是基本使用,肯定也有高级用法,甚至我们可以自己“自定义Chain”来处理我们逻辑。具体怎么使用,请关注后续文章更新。
Peace Guys