news 2026/4/15 7:13:16

零基础 | LangChain 构建大模型应用的开发框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
零基础 | LangChain 构建大模型应用的开发框架

文章目录

    • 📄 基本信息
    • 🚀 LangChain框架概述
      • 核心定位
      • 生态系统
      • 核心价值
      • 使用建议
      • 选择考量
    • 🧩 LangChain核心抽象详解
      • 核心抽象组件
      • ChatModel详解
      • PromptTemplate详解
      • OutputParser详解
      • 核心抽象的价值
    • 📝 使用示例
      • 运行结果
    • 🎯 功能概述
    • 🔧 核心技术点
    • 📊 代码结构分析
    • 🔍 关键代码解析
      • 1. 三大核心组件初始化
      • 2. Chain构造与执行
      • 3. 流式响应处理
    • 📝 扩展使用示例
      • 运行结果
    • 💡 学习建议
    • 📚 相关资源
    • � 总结

📄 基本信息

  • 创建时间:2025-12-24 18:02
  • 作者:zuozewei
  • 功能:LangChain三大核心组件演示
  • 技术栈:Python、LangChain、DeepSeek API

🚀 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()等异步方法
  3. 社区实现:如OpenAI提供了ChatModel和Embedding模型,统一放到langchain-openai包中
  4. 简化代码:通过统一接口,简化了不同模型服务的调用代码

PromptTemplate详解

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

OutputParser详解

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

核心抽象的价值

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

📝 使用示例

# -*- coding: utf-8 -*-""" @Time : 2026/01/02 09:39 @Author : zuozewei @File : 2.LangChain的核心抽象.py @Desc : LangChain的核心抽象 """importosimportdotenvfromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_openaiimportChatOpenAI# 加载环境变量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":"床前明月光,疑似地上霜"})forchunkinstream: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":"床前明月光,疑似地上霜"})forchunkinstream: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的核心抽象 - 情感分析示例 """importosimportdotenvfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_openaiimportChatOpenAI# 加载环境变量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|parser result=chain.invoke({"text":"今天天气真好,心情非常愉快!"})print(f"情感分析结果:{result}")

运行结果

情感分析结果: 积极

💡 学习建议

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

📚 相关资源

  • LangChain官方文档
  • LangChain核心组件
  • DeepSeek API文档

� 总结

LangChain框架通过ChatModelPromptTemplateOutputParser三大核心抽象,为大模型应用开发提供了标准化的接口和灵活的组合方式。使用管道操作符|可以轻松串联这些组件,形成完整的处理链,简化了代码结构,提升了开发效率。

本文通过详细的代码示例和解析,展示了如何使用LangChain的核心组件构建实际应用,包括基本的翻译功能和情感分析功能。同时,本文还介绍了LangChain的生态系统和使用建议,帮助开发者更好地理解和应用这一框架。

最终,是否选择LangChain应基于个人或团队的具体需求评估,权衡其优势与局限性,充分利用其生态系统的价值,为大模型应用开发赋能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 17:06:45

基于STM32的智能语音台灯系统设计与实现

基于STM32的智能语音台灯系统设计与实现摘要随着物联网技术的快速发展和人们生活水平的不断提高,智能家居产品正逐渐融入人们的日常生活。作为家居环境中不可或缺的照明设备,传统台灯功能单一、操作不便,已难以满足现代人对便捷、健康、智能化…

作者头像 李华
网站建设 2026/4/8 9:14:49

基于Python+Django的框架的知否连锁花店管理系统毕设源码+文档+讲解视频

前言 本课题聚焦基于PythonDjango框架的知否连锁花店管理系统设计与实现,旨在解决知否连锁花店传统运营模式中门店协同低效、花卉库存管理混乱、订单跟踪不及时、会员档案零散及经营数据统计滞后等问题。系统采用B/S架构,依托浏览器即可实现多端便捷访问…

作者头像 李华
网站建设 2026/4/14 4:22:56

DeepSeek调试JavaScript代码:前端兼容性问题定位与修复技巧

DeepSeek调试JavaScript代码:前端兼容性问题定位与修复技巧 引言 在当今多元化的互联网环境中,用户可能使用各式各样的浏览器(如 Chrome、Firefox、Safari、Edge、以及各种基于 Chromium 或特定内核的国产浏览器)和操作系统&…

作者头像 李华
网站建设 2026/4/15 13:48:55

aspnet_counters.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/12 21:56:36

springboot智能学习平台系统(11655)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告)远程调试控屏包运行 三、技术介绍 Java…

作者头像 李华