🚀 LangChain框架概述

核心定位

LangChain是一个开发框架,提供基础抽象和LangChain表达式语言(LCEL),通过管道符简化了组装链的过程,提升了代码的表达性。它不只是一个框架,而是一个完整的生态系统,包括社区生态和扩展生态。

生态系统

  1. 社区生态:包含大量的各种实现和工具,需要根据需求选择相应的实现
  2. 扩展生态:包括LangServe、LangSmith、LangGraph等工具和平台,提供更多可做的事情
  3. 核心库:提供基础组件和抽象

核心价值

  1. 学习材料:提供了大量示例和提示词模板,是一个很好的学习资源
  2. 基础抽象:提供了一些开发应用所需的基础抽象,大部分实现由社区生态提供
  3. 表达式语言LCEL:通过管道符简化了组装链的过程,提升了代码的表达性
  4. 完整生态:从框架到工具链,提供完整的大模型应用开发支持

使用建议

  1. 需求评估:根据自己的情况评估使用场景,LangChain不是社区里的唯一选择
  2. 持续关注:持续关注和了解LangChain的新发展
  3. 生态利用:充分利用社区生态和扩展生态提供的资源
  4. 合理选择:根据项目需求和团队情况,评估是否选择使用LangChain

选择考量

  • 项目规模:小型项目可能只需要部分组件
  • 团队熟悉度:考虑团队对框架的熟悉程度
  • 定制需求:评估框架是否满足特定定制需求
  • 长期维护:考虑框架的可持续性和社区支持

🧩 LangChain核心抽象详解

核心抽象组件

LangChain的核心抽象包括ChatModelPromptTemplateOutputParser,它们是构建大模型应用的核心部分,分别处理模型调用、输入和输出。

ChatModel详解

  1. 核心地位:是整个框架的核心,根据输入的内容生成输出
  2. 调用方法
  • 同步调用:使用invoke()方法
  • 流式处理:使用stream()方法
  • 批处理:处理多个输入
  • 异步调用:使用ainvoke()等异步方法
  1. 社区实现:如OpenAI提供了ChatModel和Embedding模型,统一放到langchain-openai包中
  2. 简化代码:通过统一接口,简化了不同模型服务的调用代码

PromptTemplate详解

  1. 概念:用于预置提示词,可以不断调整以达到更好的效果
  2. 共享性:可以共享给其他开发者使用
  3. 使用方法
  • 创建模板:定义提示词结构和占位符
  • 组装模型链:与ChatModel和OutputParser组合
  • 调用链:通过替换占位符将输入参数处理成发给模型的消息
  1. 有效拆分:有效拆分了开发者提示词和用户提示词

OutputParser详解

  1. 功能:负责处理输出结果的解析过程
  2. 常用解析器
  • StrOutputParser:将输出解析为字符串
  • JsonOutputParser:将输出解析为JSON格式
  1. 其他解析器
  • JSON、CSV、分隔符、枚举等格式解析器
  • 相应的格式指令
  1. 包含格式指令:处理输出时包含了格式指令,确保输出符合预期格式

核心抽象的价值

  1. 统一接口:提供了标准化的接口,简化了开发流程
  2. 职责分离
  • ChatModel:处理模型调用
  • PromptTemplate:处理输入
  • OutputParser:处理输出
  1. 灵活性:可以根据需要组合不同的实现
  2. 扩展性:社区可以提供更多的实现和工具

📝 使用示例

# -*- coding: utf-8 -*-"""@Time    : 2026/01/02 09:39@Author  : zuozewei@File    : 2.LangChain的核心抽象.py @Desc    : LangChain的核心抽象"""import osimport dotenvfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_openai import ChatOpenAI# 加载环境变量dotenv.load_dotenv()# ChatModel: 对于大模型的抽象llm = ChatOpenAI(    openai_api_key=os.getenv("OPENAI_API_KEY"),    openai_api_base=os.getenv("OPENAI_API_BASE"),    model_name=os.getenv("AI_MODEL", "deepseek-chat"),)# PromptTemplate: 负责编排提示词prompt = ChatPromptTemplate.from_messages([    ("system", "请将下面的内容翻译成英文:"),    ("user", "{text}"),])# OutputParser: 负责解析LLM的生成结果parser = StrOutputParser()# 构造Chain# Chain中组件的声明顺序,就是其实际的执行顺序chain = prompt | llm | parser# 调用Chain,获取执行结果# 采用流式响应# 流式响应返回的是一个Token的Iterator,可以通过for循环遍历stream = chain.stream({"text": "床前明月光,疑似地上霜"})for chunk in stream:     print(chunk, flush=True, end="")print()

运行结果

Before my bed, there is bright moonlight,It seems like frost on the ground.

🎯 功能概述

示例展示了LangChain框架的三大核心抽象组件:ChatModelPromptTemplateOutputParser,并演示了如何使用管道操作符|将这些组件串联起来形成一个完整的处理链。

🔧 核心技术点

  1. LangChain核心组件
  2. 管道操作符串联
  3. 流式响应处理
  4. 提示词模板
  5. 输出解析

📊 代码结构分析

1. 导入依赖库2. 加载环境变量3. 初始化ChatModel4. 创建PromptTemplate5. 定义OutputParser6. 构造处理Chain7. 调用Chain并处理流式响应

🔍 关键代码解析

1. 三大核心组件初始化

# ChatModel: 对于大模型的抽象llm = ChatOpenAI(    openai_api_key=os.getenv("OPENAI_API_KEY"),    openai_api_base=os.getenv("OPENAI_API_BASE"),    model_name=os.getenv("AI_MODEL", "deepseek-chat"),)# PromptTemplate: 负责编排提示词prompt = ChatPromptTemplate.from_messages([    ("system", "请将下面的内容翻译成英文:"),    ("user", "{text}"),])# OutputParser: 负责解析LLM的生成结果parser = StrOutputParser()
  • ChatModel:抽象了不同的大模型服务,提供统一接口
  • PromptTemplate:管理提示词的结构和变量,支持模板化
  • OutputParser:将模型输出转换为结构化数据,如字符串、JSON等

2. Chain构造与执行

# 构造Chain# Chain中组件的声明顺序,就是其实际的执行顺序chain = prompt | llm | parser
  • 使用管道操作符|串联组件,形成数据处理流程
  • 执行顺序:prompt → llm → parser
  • Chain的构造方式简洁明了,便于维护和扩展

3. 流式响应处理

# 调用Chain,获取执行结果# 采用流式响应# 流式响应返回的是一个Token的Iterator,可以通过for循环遍历stream = chain.stream({"text": "床前明月光,疑似地上霜"})for chunk in stream:    print(chunk, flush=True, end="")print()
  • 使用stream()方法获取流式响应
  • 通过迭代器逐个获取生成的Token
  • 设置flush=Trueend=""实现实时输出效果

📝 扩展使用示例

# -*- coding: utf-8 -*-"""@Time    : 2026/01/02 09:39@Author  : zuozewei@File    : 2.LangChain的核心抽象.py @Desc    : LangChain的核心抽象 - 情感分析示例"""import osimport dotenvfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserfrom langchain_openai import ChatOpenAI# 加载环境变量dotenv.load_dotenv()# 定义情感分析提示词prompt = ChatPromptTemplate.from_messages([    ("system", "请分析用户输入的情感倾向,返回'积极'、'消极'或'中性'。"),    ("user", "{text}"),])# 初始化组件llm = ChatOpenAI(    model_name=os.getenv("AI_MODEL", "deepseek-chat"))parser = StrOutputParser()# 构造并执行Chainchain = prompt | llm | parserresult = chain.invoke({"text": "今天天气真好,心情非常愉快!"})print(f"情感分析结果: {result}")

运行结果

情感分析结果: 积极

💡 学习建议

  1. 组件组合:尝试组合不同的PromptTemplate、ChatModel和OutputParser,实现多样化功能
  2. 参数调优:根据任务需求调整LLM的temperature、max_tokens等参数
  3. 错误处理:为Chain添加异常处理机制,提高代码健壮性
  4. 扩展组件:学习自定义PromptTemplate和OutputParser,满足特定需求
  5. 性能优化:对于高频调用,考虑添加缓存机制

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

作为一名老互联网人,看着AI越来越火,也总想为大家做点啥。干脆把我这几年整理的AI大模型干货全拿出来了。
包括入门指南、学习路径图、精选书籍、视频课,还有我录的一些实战讲解。全部免费,不搞虚的。
学习从来都是自己的事,我能做的就是帮你把路铺平一点。资料都放在下面了,有需要的直接拿,能用到多少就看你自己了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以点击文章最下方的VX名片免费领取【保真100%】
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐