零基础 | LangChain 构建大模型应用的开发框架
LangChain是一个开发框架,提供基础抽象和LangChain表达式语言(LCEL),通过管道符简化了组装链的过程,提升了代码的表达性。它不只是一个框架,而是一个完整的生态系统,包括社区生态和扩展生态。ChatModel和,并演示了如何使用管道操作符将这些组件串联起来形成一个完整的处理链。
🚀 LangChain框架概述
核心定位
LangChain是一个开发框架,提供基础抽象和LangChain表达式语言(LCEL),通过管道符简化了组装链的过程,提升了代码的表达性。它不只是一个框架,而是一个完整的生态系统,包括社区生态和扩展生态。
生态系统
- 社区生态:包含大量的各种实现和工具,需要根据需求选择相应的实现
- 扩展生态:包括LangServe、LangSmith、LangGraph等工具和平台,提供更多可做的事情
- 核心库:提供基础组件和抽象
核心价值
- 学习材料:提供了大量示例和提示词模板,是一个很好的学习资源
- 基础抽象:提供了一些开发应用所需的基础抽象,大部分实现由社区生态提供
- 表达式语言LCEL:通过管道符简化了组装链的过程,提升了代码的表达性
- 完整生态:从框架到工具链,提供完整的大模型应用开发支持
使用建议
- 需求评估:根据自己的情况评估使用场景,LangChain不是社区里的唯一选择
- 持续关注:持续关注和了解LangChain的新发展
- 生态利用:充分利用社区生态和扩展生态提供的资源
- 合理选择:根据项目需求和团队情况,评估是否选择使用LangChain
选择考量
- 项目规模:小型项目可能只需要部分组件
- 团队熟悉度:考虑团队对框架的熟悉程度
- 定制需求:评估框架是否满足特定定制需求
- 长期维护:考虑框架的可持续性和社区支持
🧩 LangChain核心抽象详解
核心抽象组件
LangChain的核心抽象包括ChatModel、PromptTemplate和OutputParser,它们是构建大模型应用的核心部分,分别处理模型调用、输入和输出。
ChatModel详解
- 核心地位:是整个框架的核心,根据输入的内容生成输出
- 调用方法:
- 同步调用:使用
invoke()方法 - 流式处理:使用
stream()方法 - 批处理:处理多个输入
- 异步调用:使用
ainvoke()等异步方法
- 社区实现:如OpenAI提供了ChatModel和Embedding模型,统一放到
langchain-openai包中 - 简化代码:通过统一接口,简化了不同模型服务的调用代码
PromptTemplate详解
- 概念:用于预置提示词,可以不断调整以达到更好的效果
- 共享性:可以共享给其他开发者使用
- 使用方法:
- 创建模板:定义提示词结构和占位符
- 组装模型链:与ChatModel和OutputParser组合
- 调用链:通过替换占位符将输入参数处理成发给模型的消息
- 有效拆分:有效拆分了开发者提示词和用户提示词
OutputParser详解
- 功能:负责处理输出结果的解析过程
- 常用解析器:
StrOutputParser:将输出解析为字符串JsonOutputParser:将输出解析为JSON格式
- 其他解析器:
- JSON、CSV、分隔符、枚举等格式解析器
- 相应的格式指令
- 包含格式指令:处理输出时包含了格式指令,确保输出符合预期格式
核心抽象的价值
- 统一接口:提供了标准化的接口,简化了开发流程
- 职责分离:
- ChatModel:处理模型调用
- PromptTemplate:处理输入
- OutputParser:处理输出
- 灵活性:可以根据需要组合不同的实现
- 扩展性:社区可以提供更多的实现和工具
📝 使用示例
# -*- 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框架的三大核心抽象组件:ChatModel、PromptTemplate和OutputParser,并演示了如何使用管道操作符|将这些组件串联起来形成一个完整的处理链。
🔧 核心技术点
- LangChain核心组件
- 管道操作符串联
- 流式响应处理
- 提示词模板
- 输出解析
📊 代码结构分析
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=True和end=""实现实时输出效果
📝 扩展使用示例
# -*- 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}")
运行结果
情感分析结果: 积极
💡 学习建议
- 组件组合:尝试组合不同的PromptTemplate、ChatModel和OutputParser,实现多样化功能
- 参数调优:根据任务需求调整LLM的temperature、max_tokens等参数
- 错误处理:为Chain添加异常处理机制,提高代码健壮性
- 扩展组件:学习自定义PromptTemplate和OutputParser,满足特定需求
- 性能优化:对于高频调用,考虑添加缓存机制
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
作为一名老互联网人,看着AI越来越火,也总想为大家做点啥。干脆把我这几年整理的AI大模型干货全拿出来了。
包括入门指南、学习路径图、精选书籍、视频课,还有我录的一些实战讲解。全部免费,不搞虚的。
学习从来都是自己的事,我能做的就是帮你把路铺平一点。资料都放在下面了,有需要的直接拿,能用到多少就看你自己了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以点击文章最下方的VX名片免费领取【保真100%】
更多推荐

所有评论(0)