当前位置: 首页 > java >正文

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

文章目录

  • 参考文章
  • 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.xdnf.cn/news/9797.html

相关文章:

  • LeetCode Hot100(多维动态规划)
  • vmware虚拟机固定IP
  • const 用法总结
  • TortoiseSVN账号切换
  • 动态规划-152.乘积最大子数组-力扣(LeetCode)
  • Python训练营打卡 Day38
  • 信奥赛-刷题笔记-二分篇-T2-P1918保龄球0529
  • 纵览网丨新视角下的黑洞探索:传统奇点理论的挑战与未来观测的可能性
  • 进程控制与调度下
  • React 编译器 RC
  • Typescript学习教程,从入门到精通,TypeScript 泛型与类型操作详解(二)(17)
  • 数字取证-E01转vmdk
  • 区间DP概述(JAVA)
  • 若依框架 账户管理 用户分配界面解读
  • 纤维组织效应偏斜如何影响您的高速设计
  • 资产生命周期管理:动态监控 + 精准管理
  • 爬虫框架:scrapy使用心得
  • PABD 2025:大数据与智慧城市管理的融合之道
  • 数字孪生技术赋能西门子安贝格工厂:全球智能制造标杆的数字化重构实践
  • Linux -- 进程地址空间
  • 高速连接器设计的真相
  • $3 #12阶段三小结Java se
  • 【经验】Ubuntu中设置terminator的滚动行数、从Virtualbox复制到Windows时每行后多一空行
  • android studio debug调试出现 IOException异常
  • 智能厨房系统—御控物联网IoT平台
  • UniApp微信小程序自定义导航栏实现
  • vite导入优化插件vite-plugin-importer
  • 华为OD机试真题——报文回路(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 【ConvLSTM第一期】ConvLSTM原理
  • 回文数-leetCode-009