langchain - AI应用开发框架,用于构建基于大语言模型的智能应用

langchain - AI应用开发框架,用于构建基于大语言模型的智能应用

如果你曾经尝试过用大语言模型开发应用,你一定遇到过这样的问题:如何让模型访问外部数据?如何管理多轮对话的记忆?如何让模型调用外部工具?这些看似基础的需求,如果用原始API实现,需要编写大量重复的代码。langchain正是为了解决这些问题而生的。它是目前最流行的大语言模型应用开发框架,通过提供一系列标准化的组件和抽象,让你可以用最少的代码构建功能强大的AI应用,从简单的问答系统到复杂的智能体应用,都能轻松实现。

项目基本信息

信息项详情
项目名称langchain
GitHub地址https://github.com/langchain-ai/langchain
项目描述The agent engineering platform
作者langchain-ai
开源协议MIT License
Stars131762
Forks21717
支持平台Windows / macOS / Linux
最后更新2026-03-31

一、项目介绍

langchain是一个用于构建大语言模型应用的开源框架,由Harrison Chase于2022年创建,现已成为AI应用开发领域的事实标准。它的核心理念是“组合性”,将AI应用开发中的常见需求抽象成标准化的组件,然后像搭积木一样将它们组合起来,构建出复杂的应用。

langchain的架构围绕几个核心概念展开。首先是模型,它封装了各种大语言模型API,提供统一的调用接口,支持OpenAI、Anthropic、Hugging Face、Cohere等数十种模型。其次是提示词模板,它提供了一种灵活的方式来构建和管理与模型交互的提示词,支持变量替换、格式化等操作。第三是输出解析器,它可以将模型的非结构化输出解析成结构化数据,比如JSON、列表、日期等。第四是记忆组件,它提供了多种记忆管理策略,让模型能够记住对话历史。第五是检索器,它实现了RAG(检索增强生成)模式,让模型可以访问外部知识库。第六是工具和智能体,它让模型能够调用外部工具和API,实现自主决策和行动。

langchain的生态系统非常庞大,除了核心库,还有针对特定场景的扩展库,如langchain-community(社区贡献的集成)、langchain-experimental(实验性功能)、langgraph(基于图的工作流编排)等。同时,langchain还提供了完善的文档、教程和示例,大大降低了开发者的学习成本。

二、核心优势

开源免费
langchain采用MIT许可证,代码完全开放。用户可以自由使用、修改和分发,没有任何商业限制。庞大的开源社区持续贡献新的集成和功能,让框架保持活力。

社区支持
作为GitHub上最受欢迎的Python项目之一,langchain拥有极其活跃的社区。官方Discord服务器有数万名成员,GitHub Issues响应迅速,Stack Overflow上有大量问答。社区贡献了大量的集成、示例和最佳实践,是开发者的宝贵资源。

持续更新
从2026年3月31日的最后更新可以看出,langchain保持着高频的更新节奏。新的模型集成、功能增强、优化技术持续加入。项目团队紧跟大语言模型的发展,确保框架始终支持最新的模型和技术。

功能丰富
langchain的功能矩阵非常完整,覆盖了AI应用开发的方方面面:

  • 模型集成:支持数十种LLM、聊天模型和嵌入模型
  • 提示词管理:提示词模板、示例选择器、提示词优化
  • 记忆系统:会话缓冲、向量存储记忆、实体记忆等多种策略
  • 数据连接器:支持PDF、网页、数据库等数十种数据源
  • 检索系统:向量检索、全文检索、混合检索
  • 智能体框架:支持ReAct、Plan-and-Execute等多种智能体模式
  • 工作流编排:支持链式调用、条件分支、循环等逻辑

三、适用场景

开发者学习和参考
对于希望学习AI应用开发的开发者,langchain是最好的入门工具。通过阅读官方文档和示例代码,可以系统学习RAG、智能体、提示词工程等核心概念。框架的模块化设计也让理解各个组件的作用变得容易。

个人项目使用和集成
如果你是独立开发者,想要快速构建AI应用,langchain是理想的选择。比如,你可以用langchain构建一个能够访问私有文档的问答系统,或者一个能够执行自动化任务的智能助手。通过丰富的组件库,原本需要数百行代码的功能,现在几十行就能完成。

企业级应用开发
对于需要构建生产级AI应用的企业,langchain提供了可靠的支撑。它的模块化设计让代码易于维护和扩展,丰富的监控和调试工具让生产环境的问题排查更加便捷。同时,langchain支持私有化部署,确保企业数据安全。

日常工作和效率提升
对于AI工程师,langchain是提升工作效率的利器。通过预定义的组件和链,可以快速搭建原型进行实验。LangSmith平台提供了实验跟踪、版本管理、性能评估等功能,让开发流程更加规范。

四、安装教程

系统要求

工具用途下载/安装方式
Python运行环境[https://python.org/] (版本要求:3.8 或以上)
Git下载项目代码(可选)[https://git-scm.com/]

安装步骤

步骤一:创建虚拟环境(推荐)

# 创建虚拟环境
python -m venv langchain_env

# 激活虚拟环境(Windows)
langchain_env\Scripts\activate

# 激活虚拟环境(macOS/Linux)
source langchain_env/bin/activate

步骤二:安装langchain

# 安装核心包
pip install langchain

# 根据需求安装额外组件
pip install langchain-openai  # OpenAI集成
pip install langchain-community  # 社区集成
pip install langchain-chroma  # 向量数据库集成

步骤三:验证安装

python -c "import langchain; print(langchain.__version__)"

从源码安装(可选)

git clone https://github.com/langchain-ai/langchain.git
cd langchain
pip install -e .

五、使用示例

示例一:基础对话

最简单的langchain应用——与模型对话:

from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage

# 初始化模型
chat = ChatOpenAI(model="gpt-3.5-turbo")

# 发送消息
response = chat.invoke([
    HumanMessage(content="解释一下什么是大语言模型")
])

print(response.content)

示例二:提示词模板

使用提示词模板动态生成提示词:

from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate

# 定义提示词模板
template = ChatPromptTemplate.from_messages([
    ("system", "你是一个{role}专家,请用{style}的风格回答用户的问题"),
    ("user", "{question}")
])

# 创建模型
chat = ChatOpenAI(model="gpt-3.5-turbo")

# 构建链
chain = template | chat

# 执行
response = chain.invoke({
    "role": "Python",
    "style": "简洁",
    "question": "如何读取CSV文件"
})

print(response.content)

示例三:输出解析器

将模型输出解析为结构化数据:

from langchain_openai import ChatOpenAI
from langchain.output_parsers import PydanticOutputParser
from pydantic import BaseModel, Field

# 定义输出结构
class UserInfo(BaseModel):
    name: str = Field(description="用户姓名")
    age: int = Field(description="用户年龄")
    city: str = Field(description="所在城市")

# 创建解析器
parser = PydanticOutputParser(pydantic_object=UserInfo)

# 构建提示词
prompt = PromptTemplate(
    template="从以下文本中提取用户信息:\n{text}\n{format_instructions}",
    input_variables=["text"],
    partial_variables={"format_instructions": parser.get_format_instructions()}
)

# 创建模型和链
model = ChatOpenAI(model="gpt-3.5-turbo")
chain = prompt | model | parser

# 执行
result = chain.invoke({"text": "我叫张三,今年28岁,住在北京"})
print(result.name, result.age, result.city)

示例四:RAG应用(检索增强生成)

构建能够访问私有文档的问答系统:

from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_chroma import Chroma
from langchain.chains import RetrievalQA

# 1. 加载文档
loader = TextLoader("./documents.txt")
documents = loader.load()

# 2. 分割文档
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
texts = text_splitter.split_documents(documents)

# 3. 创建向量存储
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(texts, embeddings)

# 4. 创建检索器
retriever = vectorstore.as_retriever()

# 5. 创建问答链
qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-3.5-turbo"),
    retriever=retriever
)

# 6. 提问
response = qa_chain.invoke("文档中关于XX的内容是什么?")
print(response)

示例五:记忆管理

让模型记住对话历史:

from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

# 创建带记忆的对话链
memory = ConversationBufferMemory()
conversation = ConversationChain(
    llm=ChatOpenAI(model="gpt-3.5-turbo"),
    memory=memory
)

# 多轮对话
response1 = conversation.predict(input="我叫张三")
print(response1)

response2 = conversation.predict(input="我叫什么名字?")
print(response2)  # 会记住用户叫张三

示例六:构建智能体

让模型能够调用外部工具:

from langchain_openai import ChatOpenAI
from langchain.tools import tool
from langchain.agents import create_react_agent, AgentExecutor

# 定义工具
@tool
def add_numbers(a: int, b: int) -> int:
    """两个数相加"""
    return a + b

@tool
def get_weather(city: str) -> str:
    """获取城市天气"""
    # 实际应用中这里调用天气API
    return f"{city}的天气是晴天,25度"

# 创建智能体
tools = [add_numbers, get_weather]
model = ChatOpenAI(model="gpt-3.5-turbo")

agent = create_react_agent(
    llm=model,
    tools=tools,
    prompt=prompt
)

executor = AgentExecutor(agent=agent, tools=tools)

# 执行任务
result = executor.invoke({
    "input": "帮我计算15加27,然后查询北京的天气"
})

print(result)

示例七:链式调用

将多个组件串联成工作流:

from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SequentialChain

# 第一步:生成主题
topic_chain = LLMChain(
    llm=ChatOpenAI(model="gpt-3.5-turbo"),
    prompt=PromptTemplate(
        input_variables=["subject"],
        template="为{subject}写一个吸引人的标题"
    ),
    output_key="title"
)

# 第二步:根据标题写文章
article_chain = LLMChain(
    llm=ChatOpenAI(model="gpt-3.5-turbo"),
    prompt=PromptTemplate(
        input_variables=["title"],
        template="根据标题{title},写一篇500字的文章"
    ),
    output_key="article"
)

# 串联成顺序链
overall_chain = SequentialChain(
    chains=[topic_chain, article_chain],
    input_variables=["subject"],
    output_variables=["title", "article"]
)

# 执行
result = overall_chain.invoke({"subject": "人工智能"})
print(f"标题: {result['title']}")
print(f"文章: {result['article']}")

六、常见问题

问题一:API调用失败

原因:API密钥无效、余额不足或网络问题。

解决方案

  • 检查OPENAI_API_KEY环境变量是否正确设置
  • 确认API账户有足够余额
  • 检查网络连接,确保能访问API服务

问题二:安装依赖冲突

原因:不同包之间的版本不兼容。

解决方案

  • 使用虚拟环境隔离依赖
  • 安装特定版本:pip install langchain==0.1.0
  • 查看官方文档的版本兼容性说明

问题三:检索结果不相关

原因:文档分割策略不当或向量化效果差。

解决方案

  • 调整chunk_size和chunk_overlap参数
  • 尝试不同的文本分割器
  • 更换嵌入模型(如使用OpenAI的text-embedding-3-large)
  • 添加元数据过滤条件

问题四:智能体执行失败

原因:工具描述不清晰或模型理解错误。

解决方案

  • 为工具提供更清晰的描述和参数说明
  • 设置max_iterations限制避免无限循环
  • 使用handle_parsing_errors=True处理解析错误
  • 尝试使用更强大的模型(如GPT-4)

问题五:内存占用过高

原因:记忆组件存储了过多历史信息。

解决方案

  • 使用ConversationBufferWindowMemory限制历史轮数
  • 使用ConversationSummaryMemory压缩历史信息
  • 考虑使用向量存储管理长期记忆

七、总结

langchain是AI应用开发领域的里程碑项目。它用统一的抽象和标准化的组件,将大语言模型应用的开发复杂度降低了一个数量级。无论你是想快速搭建原型,还是构建生产级应用,langchain都能提供强大的支持。

与其他框架相比,langchain最大的优势在于其生态的完整性。从模型集成到数据连接,从提示词管理到工作流编排,从开发工具到生产监控,langchain提供了全栈式的解决方案。同时,活跃的社区和持续的更新保证了框架的长期生命力。

如果你正在从事AI应用开发,langchain值得深入学习。它不仅能够提升你的开发效率,更重要的是,它提供了一套成熟的架构模式,让你可以站在巨人的肩膀上,专注于业务逻辑的创新。在这个AI快速发展的时代,掌握langchain,就是掌握了构建智能应用的核心能力。

暂无评论