所有文章 > 日积月累 > LangChain教程:构建基于大语言模型的应用
LangChain教程:构建基于大语言模型的应用

LangChain教程:构建基于大语言模型的应用

LangChain是一个基于大语言模型的框架,旨在帮助开发者快速构建语言模型应用。本文将深入探讨LangChain的核心组件和使用方法,并提供实用的代码示例和图片链接。

LangChain概述

LangChain是一个强大的框架,专为构建和部署基于大语言模型的应用而设计。它通过提供一系列的工具、套件和接口,简化了从开发到部署的全过程。LangChain的强大之处在于其模块化设计,让开发者可以灵活地组合不同的组件,以实现如文本生成、文档问答以及聊天机器人等复杂任务。

LangChain的生命周期可分为三个阶段:

  1. 开发阶段:利用LangChain的开源构建块和组件快速构建应用程序。
  2. 生产化阶段:通过LangSmith进行检查、监控和评估,以便持续优化和部署。
  3. 部署阶段:使用LangServe将任意链转化为API。

LangChain框架

六大组件

LangChain的核心由六大组件构成,这些组件相互协作,形成一个灵活而强大的系统:

  • 模型(Models):提供大语言模型的接口和调用细节。
  • 提示模板(Prompts):简化提示工程,激发模型的潜力。
  • 数据检索(Indexes):提供文档操作和查询返回最相关文档的功能。
  • 记忆(Memory):在对话过程中存储并检索数据,增强对话体验。
  • 链(Chains):封装各种功能,通过组合自动完成任务。
  • 代理(Agents):使大模型能够自主调用工具,实现智能代理的功能。

表格快速预览:

英文 中文 说明
Models 模型 LangChain和大模型的接口
Chains LangChain对各种组件的封装和调用链条
Prompts 提示 输入大模型的提示模板
Indexes 索引 非结构化数据的查找和访问
Memory 记忆 与大模型聊天过程中记忆信息
Agents 代理 自主计划和执行的机制

开源库组成

LangChain框架由以下开源库组成:

  • langchain-core:基础抽象和表达式语言。
  • langchain-community:第三方集成包。
  • langchain:应用程序的认知架构。
  • langgraph:通过图模型构建多参与者应用程序。
  • langserve:将LangChain链部署为REST API。
  • LangSmith:开发者平台,用于调试、测试和监控应用程序。

LangChain基本使用

安装LangChain

首先,您需要安装LangChain及其相关组件。以下命令将帮助您安装指定版本的LangChain:

pip install langchain==0.1.7

执行安装命令后,以下组件将被自动安装:

Installing collected packages: langsmith, langchain-core, langchain-text-splitters, langchain-community, langchain

更新LangChain至最新版本:

pip install --upgrade langchain

配置环境变量

为了使用OpenAI,您需要安装第三方集成库并设置环境变量:

pip install langchain langchain_openai

设置OpenAI环境变量:

import os
os.environ["OPENAI_BASE_URL"] = "https://xxx.com/v1"
os.environ["OPENAI_API_KEY"] = "sk-your-api-key"

基本使用

from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

llm.invoke("LangSmith 是什么?")

LangChain使用示例

使用提示模板

LangChain允许使用提示模板来优化与语言模型的交互。提示模板将原始用户输入转换为更合适的LLM输入。

from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
    ("system", "您是世界级的技术文档编写者。"),
    ("user", "{input}")
])

chain = prompt | llm 
chain.invoke({"input": "Langsmith 如何帮助进行测试?"})

使用输出解析器

可以通过添加输出解析器将聊天消息转换为字符串,以便更好地处理响应。

from langchain_core.output_parsers import StrOutputParser

output_parser = StrOutputParser()
chain = prompt | llm | output_parser

chain.invoke({"input": "Langsmith 如何帮助进行测试?"})

向量存储

向量存储是LangChain的重要组成部分,用于存储和检索嵌入向量。您需要安装BeautifulSoup和FAISS来支持这一功能。

pip install beautifulsoup4
pip install faiss-cpu

通过向量存储,您可以轻松检索相关的文档和数据,以便进一步处理。

检索链

检索链允许您接收一个问题,查找相关文档,并将这些文档与原始问题一起传递给LLM,生成答案。

from langchain.chains.combine_documents import create_stuff_documents_chain

document_chain = create_stuff_documents_chain(llm, prompt)
response = document_chain.invoke({"input": "Langsmith 如何帮助进行测试?","context": [Document(page_content=text)]})

对话检索链

可以创建一个对话检索链,接收最新的输入和对话历史记录,生成搜索查询并检索相关信息。

from langchain.chains import create_history_aware_retriever

retriever_chain = create_history_aware_retriever(llm, retriever, prompt)
chat_history = [HumanMessage(content="LangSmith 可以帮助测试我的 LLM 应用程序吗?"), AIMessage(content="Yes!")]
retriever_chain.invoke({"chat_history": chat_history,"input": "告诉我怎么做"})

代理的使用

代理是LangChain中的关键组件,允许大模型自主调用外部工具。您可以通过创建检索器工具和搜索工具来扩展代理的功能。

from langchain.tools.retriever import create_retriever_tool
retriever_tool = create_retriever_tool(retriever,"langsmith_search","搜索有关 LangSmith 的信息。对于有关LangSmith的任何问题,您必须使用此工具!")

LangServe提供服务

LangServe是LangChain的一部分,可以帮助开发者将LangChain应用程序部署为REST API。以下是创建服务的基本步骤:

  1. 构建链的定义。
  2. 创建FastAPI应用程序。
  3. 使用langserve.add_routes定义链的路由。
import os
from fastapi import FastAPI
from langserve import add_routes

app = FastAPI(title="LangChain Server")

add_routes(app, agent_executor.with_types(input_type=Input, output_type=Output), path="/agent")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="localhost", port=8000)

FAQ

1. LangChain适用于哪些应用场景?

LangChain适用于文本生成、文档问答、聊天机器人等需要语言模型的应用场景。它的模块化设计允许开发者灵活组合功能。

2. 如何安装LangChain及其依赖库?

您可以通过pip install langchain命令安装LangChain,并根据需要安装其他依赖库,如langchain-openai

3. LangServe的主要功能是什么?

LangServe可以将LangChain应用程序部署为REST API,方便开发者在不同环境中使用和扩展应用。

4. 什么是提示模板,如何使用?

提示模板用于优化与语言模型的交互。通过将用户输入转换为更好的LLM输入,提升响应质量。

5. LangChain的六大组件分别是什么?

LangChain的六大组件是模型、提示模板、数据检索、记忆、链和代理。它们共同构成了LangChain的核心功能。

#你可能也喜欢这些API文章!