LangChain【1】之认识框架和简单体验

article/2025/8/20 11:55:37

文章目录

  • 参考文章
  • LangChain框架概述
  • LangChain分层结构
  • LangChain环境配置
  • 简单案例体验
    • 方式1:Api key单独文件配置
    • 方法2:直接设置Api Key
    • LangSmith的添加和使用

参考文章

  • 通过类比, 十分钟快速掌握LangChain的架构
  • LangChain入门教程,基本案例、调用官方api、中转api、阿里api等

LangChain框架概述

  • LangChain是一个专为大型语言模型(LLM)应用开发设计的开源框架,它简化了从开发到部署的整个生命周期。
    • 开发:使用 LangChain 的开源构建模块、组件 和 第三方集成 构建您的应用程序。 使用 LangGraph 构建具有一流流式处理和人机协作支持的有状态代理。
    • 生产化:使用 LangSmith 检查、监控和评估您的链,以便您可以持续优化并自信地部署。
    • 部署:将您的 LangGraph 应用程序转变为生产就绪的 API 和助手,使用 LangGraph Cloud。
  • LangChain的核心价值在于它提供了标准化接口,让开发者能够轻松切换不同LLM模型,如OpenAI、HuggingFace等,大大降低了学习成本。
  • LangChain最典型的应用是构建智能文档问答系统(RAG架构),通过将本地文档转换为向量存储,实现基于知识的精准回答。另一个常见场景是开发连续对话机器人,利用ChatMessageHistory等记忆组件保存对话上下文。企业级应用中,常结合FastAPI将LangChain服务封装为REST接口,并添加性能监控配置。电商领域则可以利用其混合检索链功能,实现商品的多维度智能搜索。

LangChain分层结构

  • LangChain是构建大语言模型应用的工程化解决方案。LangChain自然也符合软件的基本架构。
  • 一般软件分层结构包括:方案设计、逻辑层、持久层、内存、运行,可观测平台(日志,指标,追踪)。有关一般软件分层结构的详细介绍参看《代码的“千层蛋糕”:解剖软件系统的分层设计与可观测性》
    在这里插入图片描述
  • LangChain的对标工程结构
LangChain 组件对标的工程结构功能描述
Module I/ORuntime 层负责输入/输出处理,管理数据流的运行时环境(如数据格式转换、异步处理等)。
持久化(Persist)DataConnection处理数据存储与持久化逻辑(如向量数据库连接、缓存管理、数据版本控制)。
Chain逻辑层封装业务逻辑流程,协调多个模块完成特定任务(如问答链、决策流程编排)。
Agents方案设计定义系统的高层行为策略,决定任务拆解和工具调用的架构设计(如多步骤推理、工具选择)。
LangSmith可观测平台提供日志记录、链路追踪和性能监控,支持调试与流程优化(如请求追踪、耗时分析)。

在这里插入图片描述

  • LangChain的官方分层框架:
    在这里插入图片描述
    该框架由以下开源库组成:
  • LangSmith: 开发者可观测平台,可以调试、测试、评估和监控LLM应用程序。
  • LangServe: 一个将 LangChain 链部署为 REST API 的包。使得快速搭建生产就绪的 API 变得简单。
  • Templates:提供一些开发的模板。
  • langchain: 主要的 langchain 包含链、代理和检索策略,构成应用程序的认知架构。所有链、代理和检索策略适用于所有集成的通用策略。
  • langchain-community: 包含由 LangChain 社区维护的第三方集成(可以理解为插件库)。
  • 合作伙伴库(例如 langchain-openai、langchain-anthropic 等):一些集成已进一步拆分为自己的轻量级库,仅依赖于 langchain-core。
  • LangGraph: 通过将步骤建模为图中的边和节点,构建强大且有状态的多参与者应用程序。与LangChain无缝集成,但也可以单独使用。
  • langchain-core: 包含不同组件的基本抽象以及将它们组合在一起的方法。 核心组件的接口,如大型语言模型、向量存储、检索器等在此定义。 此处未定义任何第三方集成。 依赖项故意保持非常轻量级。

LangChain环境配置

  1. Anaconda学习环境配置,直接安装Anaconda,创建好虚拟环境就可以,不用管cuda和cudnn的事情。
  2. Jupyter Notebook安装
  3. 进入虚拟环境安装依赖(截至2025.5.29 langchain最新版为0.3)
    pip install --upgrade openai langchain langchain-openai langchain_community asyncio langserve[all]
    
  4. OpenAI 中转网站:OpenAI-HK,进入网站,申请API Key

简单案例体验

方式1:Api key单独文件配置

在这里插入图片描述

  1. .env文件配置:
    OPENAI_API_KEY="hk-xxx"
    OPENAI_API_BASE="https://api.openai-hk.com/v1"
    
  2. main.py文件内容如下:
from dotenv import load_dotenv
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_openai import ChatOpenAI# 加载.env文件的环境变量
load_dotenv()# 创建一个大语言模型,model指定了大语言模型的种类
model = ChatOpenAI(model="gpt-3.5-turbo")# 定义传递给模型的消息队列
# SystemMessage的content指定了大语言模型的身份,即他应该做什么,对他进行设定
# HumanMessage的content是我们要对大语言模型说的话,即用户的输入
messages = [SystemMessage(content="把下面的语句翻译为英文。"),HumanMessage(content="今天天气怎么样?"),
]# 打印模型的输出结果
print(model.invoke(messages).content)

方法2:直接设置Api Key

import os
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_openai import ChatOpenAI# 配置 API 易环境
os.environ["OPENAI_API_KEY"] = "hk-xxx"  # 从API易后台获取
os.environ["OPENAI_API_BASE"] = "https://api.openai-hk.com/v1"  # API易基础URL# 创建一个大语言模型,model指定了大语言模型的种类
model = ChatOpenAI(model="gpt-3.5-turbo")# 定义传递给模型的消息队列
# SystemMessage的content指定了大语言模型的身份,即他应该做什么,对他进行设定
# HumanMessage的content是我们要对大语言模型说的话,即用户的输入
messages = [SystemMessage(content="把下面的语句翻译为英文。"),HumanMessage(content="今天天气怎么样?"),
]# 打印模型的输出结果
print(model.invoke(messages).content)

LangSmith的添加和使用

  1. 打开langchain,注册账号登录。
    在这里插入图片描述

在这里插入图片描述

  • 新的配置文件内容:
OPENAI_API_KEY="hk-xxx"
OPENAI_API_BASE="https://api.openai-hk.com/v1"
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY="lsv2_pt_xx"
LANGSMITH_PROJECT="pr-mundane-sweatsuit-97"
  • main.py内容不变:
from dotenv import load_dotenv
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_openai import ChatOpenAI# 加载.env文件的环境变量
load_dotenv()# 创建一个大语言模型,model指定了大语言模型的种类
model = ChatOpenAI(model="gpt-3.5-turbo")# 定义传递给模型的消息队列
# SystemMessage的content指定了大语言模型的身份,即他应该做什么,对他进行设定
# HumanMessage的content是我们要对大语言模型说的话,即用户的输入
messages = [SystemMessage(content="把下面的语句翻译为英文。"),HumanMessage(content="今天天气怎么样?"),
]# 打印模型的输出结果
print(model.invoke(messages).content)
  • 可以在langSmith查看对话内容
    在这里插入图片描述
  • 可以在监控面板查看相关详情
    在这里插入图片描述
  • LangSmith具有一定的免费额度(每月包含 5000 个追踪),可以尝试使用LangFuse。

http://www.hkcw.cn/article/kSOhaXATEc.shtml

相关文章

ESP8266-12S配置信息保存到文件SPIFFS示例

一、前言 利用SPIFFS保存参数(加载,读取,修改) vscodePlatformIO 二、代码片段 头文件引用 定义结构体 读取、保存、修改配置文件 初始化setup(),利用配置文件中的账号密码连接WIFI 循环体loop(),读取串口…

90后作家刘楚昕获奖后追忆病故女友 未竟的承诺

近日,90后作家刘楚昕的小说《泥潭》荣获第二届漓江文学奖虚构类奖。颁奖现场上,作家余华公布了这个好消息。而获奖者刘楚昕的感言因格外催泪动人在朋友圈里刷了屏。2017年,刘楚昕在武汉大学读博期间遇到了他的初恋女友。当时,他正朝着自己的文学梦马不停蹄地赶路。“每次我…

WPS 免登录解锁编辑

遇到 WPS 需要登录才能启用编辑功能? 如何免登录使用编辑功能? 方法一 解锁方法 1、关闭 WPS; 2、桌面右键→ “新建”→“文本文档”,粘贴以下内容(见最下面);编码保持默认(ANSI …

破局传统采购!采购文件编制审核系统为烟草行业数智化加速

在烟草行业错综复杂的商业生态系统中,采购环节扮演着至关重要的战略枢纽角色。它如同驱动精密机械运转的核心齿轮,其每一次高效的“啮合”都深刻影响着整条价值链的协同运作。卓越的采购效能不仅是提升企业整体运营效率的基石,更是实现精细化…

65常用控件_QListWidget的使用

目录 代码示例:使用ListWidget List Widget 使⽤ QListWidget 能够显⽰⼀个纵向的列表. 形如: 每个选项都可以被选中. 列表中的每个元素/每一项就称为是一个Item 更具体的说,通过QListWidgetItem类表示的~~ 核⼼属性 属性说明currentRow当前被选中的是第几行cou…

c++数据结构8——二叉树的性质

一、二叉树的基本性质 示图1: 性质1:层节点数上限 在一棵二叉树中,第i层至多有2^{i-1}个节点(首层是第1层) 这个性质可以通过数学归纳法证明: 第1层:2^{1-1}2^01个节点(根节点&am…

搭建frp内网穿透

前言 内网穿透的原理我就不多说了哈,既然会看到我这篇文章,想必都知道内网穿透是做什么的吧 frp分为服务端和客户端,服务端一般是搭在公网服务器中,客户端一般搭在本地或者局域网,需要提前在服务端搭好ftp server&am…

阿里云服务器ECS详细购买流程【新手购买手册】

1、打开云服务器ECS官方页面 打开阿里云服务器ECS页面 点击进入阿里云服务器 2、付费类型选择 阿里云服务器付费类型 3、地域节点 阿里云服务器全球28个地域,中国大陆地域如华北2(北京)、华东1(杭州)、华南1&#x…

广东虎门通报小车坠桥5人死亡 事故引发广泛关注

广东虎门通报小车坠桥5人死亡 事故引发广泛关注。近日,广东东莞环莞快速路虎门段发生了一起交通事故,引起了广泛关注。5月29日晚,虎门镇“519”事故工作专班发布了情况通报。广东虎门通报小车坠桥5人死亡 事故引发广泛关注。责任编辑:0882

SpringBoot:统一功能处理、拦截器、适配器模式

文章目录 拦截器什么是拦截器?为什么要使用拦截器?拦截器的使用拦截路径执行流程典型应用场景DispatcherServlet源码分析 适配器模式适配器模式定义适配器模式角色适配器模式的实现适配器模式应用场景 统⼀数据返回格式优点 统一处理异常总结 拦截器 什…

Spring Boot 3.5.0中文文档上线

Spring Boot 3.5.0 中文文档翻译完成,需要的可收藏 传送门:Spring Boot 3.5.0 中文文档

67常用控件_QTreeWidget的使用

目录 代码⽰例: 使⽤ QTreeWidget 使⽤ QTreeWidget 表⽰⼀个树形控件. ⾥⾯的每个元素, 都是⼀个 QTreeWidgetItem , 每个 QTreeWidgetItem 可以包含多个⽂本和图标, 每个⽂本/图标为⼀个 列. 可以给 QTreeWidget 设置顶层节点(顶层节点可以有多个), 然后再给顶层节点…

气象大模型如何影响端午节旅行?精准预报助力安全出行

端午节假期(5月31日至6月2日)即将到来,全国天气形势复杂多样,北方晴热多风,南方暴雨频繁,华南则面临高温闷热。在这一背景下,气象大模型(如中央气象台的“疾风模型”等)凭借其强大的数据分析和预测能力,为公众出行提供了更精准的天气参考,直接影响着旅行决策和安全保…

德约连续20年晋级法网32强 连胜纪录延续

北京时间5月30日,在2025年法国网球公开赛男单第二轮比赛中,6号种子德约科维奇以6-3、6-2、7-6(1)战胜本土选手穆泰,成功晋级32强。比赛持续了3小时5分钟,第三盘中德约科维奇一度因左脚不适申请医疗暂停,该盘耗时超过80分钟。这场胜利使德约科维奇在罗兰加洛斯的连胜纪录达…

马图伊迪希望大巴黎欧冠夺冠 加油巴黎!

巴黎圣日耳曼旧将马图伊迪在社交媒体上表达了对母队夺得欧冠冠军的期待。北京时间6月1日凌晨3点,巴黎圣日耳曼将与国际米兰争夺本赛季的欧冠冠军。马图伊迪表示,本周六巴黎圣日耳曼带着历史使命踏上赛场,相信整个法国都会支持球队,因为他们有机会成就一些特别的事情。他提到…

茅台铁粉基金经理转战泡泡玛特!

茅台铁粉基金经理转战泡泡玛特。随着在港交所挂牌的泡泡玛特凭借爆款IP上演“股价超十倍神话”,不少曾经重仓持有贵州茅台的“铁粉”基金经理,相继“转战”泡泡玛特。与此同时,众多基金经理开始迫切寻找能复制泡泡玛特神话的新消费标的。市场没有让人失望。近期,A股、港股市…

曝利雅得胜利欲引进迪亚斯 利物浦边锋成头号目标

利雅得胜利将利物浦边锋路易斯-迪亚斯视为今夏引援头号目标。利物浦方面已经了解到对方的兴趣,而迪亚斯本人则希望与红军续约。2022年1月,利物浦以3750万镑转会费从波尔图引进了迪亚斯,并与其签约六年。由于在2024-25赛季表现出色,迪亚斯吸引了多家俱乐部的关注。这位28岁的…

electron安装报错处理

electron安装报错 解决方法: 修改 C:\Users\用户名.npmrc下配置文件 添加代码 electron_mirrorhttps://cdn.npmmirror.com/binaries/electron/ electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-builder-binaries/最后代码 registryhtt…

力扣刷题Day 63:组合总和(39)

1.题目描述 2.思路 Krahets佬一图胜千言: 按这张图来的话输出结果将是[[3, 3, 3], [4, 5], [5, 4]],而[4, 5]和[5, 4]实际是重复的,因此需要在搜索过程中剪枝,剪枝策略是:保证搜索过程中选择序列里的元素索引是递增的…

智能穿戴新标杆:SD NAND (贴片式SD卡)与 SOC 如何定义 AI 眼镜未来技术路径

目录 一、SD NAND:智能眼镜的“记忆中枢”突破空间限制的存储革命性能与可靠性的双重保障 二、SOC芯片:AI眼镜的“智慧大脑”从性能到能效的全面跃升多模态交互的底层支撑 三、SD NANDSOC:11>2的协同效应数据流水线的高效协同端侧…