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

AI大模型探索之路-应用篇1:Langchain框架概述—快速构建大模型应用

目录

一、什么是LangChain?

二、LangChain解决了哪些问题?

三、LangChain总体架构

四、代码实践样例

总结


一、什么是LangChain?

为大模型应用提供简便之道。

LangChain,专为构建庞大的语言模型应用程序设计的框架,其角色和作用类似于Java领域的Spring框架。它极大地简化了开发者对大型语言模型应用的开发流程,提升了开发效率,同时降低了技术门槛。LangChain的模块化功能使开发者可以方便地将多个组件组合在一起,以组件化的方式构建复杂而具有特定业务逻辑的应用程序。

二、LangChain解决了哪些问题?

1. 开发效率问题

它通过提供一系列实用的工具和组件,LangChain极大地提高了开发效率,相当于spring在后端开发中的角色。开发者能够高效地定制工作流程,从而实现快速构建并部署基于语言模型的应用程序。

2. 模型选择问题

目前存在着众多的语言模型,为特定的任务挑选最合适的模型既费时又费力。因此,LangChain通过提供统一的接口和工具,抽象化底层模型的具体实现,让开发者能够更轻松地比较不同模型并进行模型切换,从而找到最适应特定应用需求的模型。

3. 数据时效性问题

由于语言模型训练所依赖的数据存在截止时间,无法反映截止时间之后产生的信息。因此,借助于LangChain's在线联网能力,开发者可轻松地获取到最新的内容,从而弥补了这一短板。

4. token的限制问题

大型语言模型如GPT在面临Token数量的限制时通常会力不从心,例如无法处理长篇PDF文件总结等任务。LangChain通过模块化的方式,使得开发者能够将复杂的任务分解成多个部分,从而有效地规避了这种限制。

5. 与外部交互问题

LangChain的Agents模块使语言模型能够和外部API以及数据库实现交互,扩展了模型能够执行的任务种类,如信息检索和数据库交互等,从而提升了模型的功能性和实用性。

三、LangChain总体架构

1、LangChain Libraries:这是一个包含多种组件接口和集成的库,可用于将这些组件集成成基本运行时的链和代理,同时也包括已经实现的链和代理。这个库由几个部分构成:
     1)Langchain-core: 作为基本支撑,提供了链式表达式语言,支持并行处理、追踪、回调、批 量、流式操作、同步等功能。
     2)Langchain-community:整合第三方工具,如模型操作、提示词模板、文件解析、分块、向量化、embedding等。
     3)Langchain:提供了链(Chains)和代理(Agents)。链用于将多个步骤链接起来,处理复杂的业务逻辑;代理用于和外部API交互,拓展LangChain的功能,如数据库操作、接口调用、文件操作等。
2、LangChain Templates:提供了一系列容易部署的参考架构,适用于处理各种任务。
3、LangServe:用于将 LangChain 链部署为 REST API 的库。
4、LangSmith:一个开发者平台,LangSmith可以提供调试、测试、评估和监控基于任何语言模型框架构建的链。并且,它能够无缝地与LangChain进行集成。

四、代码实践样例

# 安装依赖 pip install langchain langchain-openaifrom langchain_openai import ChatOpenAI
# 确认环境变量中已经配置OPENAI_API_KEY
llm = ChatOpenAI()# 导入提示词模板
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([("system", "You are world class technical documentation writer."),("user", "{input}")
])# LCEL语法操作
chain = prompt | llm
chain.invoke({"input": "how can langsmith help with testing?"})# 引入输出解析器
from langchain_core.output_parsers import StrOutputParser
output_parser = StrOutputParser()
chain = prompt | llm | output_parser
chain.invoke({"input": "how can langsmith help with testing?"})

总结

LangChain作为一个大模型应用的构建框架,通过解决了诸多开发中的问题,为大模型应用的开发提供了有效的解决方案。帮助开发者在语言模型领域实现了许多复杂的操作,使其在构建现代、高效、安全的语言模型应用时更加轻松。

探索未知,分享所知;点击关注,码路同行,寻道人生!
 

相关文章:

AI大模型探索之路-应用篇1:Langchain框架概述—快速构建大模型应用

目录 一、什么是LangChain? 二、LangChain解决了哪些问题? 三、LangChain总体架构 四、代码实践样例 总结 一、什么是LangChain? 为大模型应用提供简便之道。 LangChain,专为构建庞大的语言模型应用程序设计的框架&#xff0…...

Google Chrome 常用设置

Google Chrome 常用设置 References 转至网页顶部 快捷键:Home 转至内容设置 chrome://settings/content 清除浏览数据 历史记录 -> 清除浏览数据 关于 Chrome 设置 -> 关于 Chrome chrome://settings/help References [1] Yongqiang Cheng, https:/…...

如何提高旋转花键运行稳定性?

现代化精密仪器设备中,精密仪器的稳定工作性能对于生产效率和产品质量至关重要,运行效率和精度是常见问题。旋转花键作为机械传动系统中的重要组成部分,其稳定性也是直接影响到机械装配的质量和使用寿命,那么我们应该如何提升旋转…...

每日一题 第八十七期 洛谷 [蓝桥杯 2018 省 AB] 全球变暖

[蓝桥杯 2018 省 AB] 全球变暖 题目描述 你有一张某海域 N N N \times N NN 像素的照片,. 表示海洋、 # 表示陆地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. .......其中 “上下左右” 四个方向上连在一起的一片陆地组…...

AI技术创业有哪些机会?

文章目录 ✍探索AI技术创业的机会与挑战💎引言💎AI技术的快速发展与应用💎🌹AI技术创业的机会与方向🌹1. 行业解决方案🌹2. 智能产品和服务🌹3. 教育和培训 💎AI技术创业的挑战与应对…...

TensorFlow学习之:基础概念和操作

TensorFlow简介 TensorFlow是一个开源的深度学习框架,由Google的研究团队Google Brain Team开发,并在2015年发布。它是基于DistBelief,Google之前的一个深度学习项目,但被重新设计以便更灵活、更强大、更适应于研究和生产。 历史…...

最新在线工具箱网站系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 系统内置高达72种站长工具、开发工具、娱乐工具等功能。此系统支持本地调用API,同时还自带免费API接口, 是一个多功能性工具程序,支持后台管理、上…...

c# InvokeRequested delegate解决线程访问界面

说明 界面操作的代码应该写在界面(Form/Dialog)里 方法定义 private void Method1(string s) {...... }delegate定义 private delegate void Method1Delegate(string s);界面调用代码 private void op(){string sText"hello";if (this.In…...

使用 Web Workers 作为setInterval的替代方案

使用 Web Workers 作为setInterval的替代方案 在 Vue 项目中,为了避免 setInterval 在标签页非激活状态下的不准确问题,我们可以使用 Web Workers 作为一个替代方案 Web Worker 介绍: Web Workers : 浏览器后台为网页运行的一个小助手&…...

python实现将日期文本化

环境:python3.8.10 需要:有些时候,需要在一段文本的后面,添加上日期,尤其是文本重复的情况下,添加上每天的日期更为重要。 代码实现: import datetimetodaydatetime.date.today() date_textto…...

react ant design 通过函数弹出 modal窗口

在React Ant Design中,可以通过调用Modal组件的方法来动态弹出和关闭Modal窗口。具体步骤如下: 1、首先,在组件中引入Modal组件: import { Modal } from antd;2、在组件中定义一个函数来弹出Modal窗口: const showM…...

力扣刷题Days33-209. 长度最小的子数组(js)

目录 1,题目-滑动窗口 2,代码 滑动窗口 3,学习与总结 1,题目-滑动窗口 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1,…...

面对DDOS攻击,有哪些解决办法

随着互联网带宽的持续增长以及DDOS黑客技术的发展,DDOS拒绝服务攻击的实施变得愈发容易。商业竞争、打击报复、网络敲诈等多种因素,各行各业的用户都曾受到DDOS攻击的威胁。 一旦遭受到DDOS攻击,随之而来的就是业务宕机,用户无法…...

C++ GDAL提取多时相遥感影像中像素随时间变化的数值数组

本文介绍基于C语言GDAL库,批量读取大量栅格遥感影像文件,并生成各像元数值的时间序列数组的方法。 首先,我们来明确一下本文所需实现的需求。现在有一个文件夹,其中包含了很多不同格式的文件,如下图所示。 其中&#x…...

免费-华为od-C卷-javascript-动态规划-贪心歌手.js

动态规划-贪心歌手 还有很多其他题,链接是github, 进去可以查看对应文件夹就行...

elementui 实现一个固定位置的Pagination(分页)组件

系列文章目录 一、elementui 导航菜单栏和Breadcrumb 面包屑关联 二、elementui 左侧导航菜单栏与main区域联动 三、elementui 中设置图片的高度并支持PC和手机自适应 四、 elementui 实现一个固定位置的Pagination(分页)组件 文章目录 系列文章目录…...

紧急备考全攻略,如何短期通过PMP考试?

今年身边有很多同事朋友都要考PMP,而我属于这些人里”第一个吃螃蟹“的人,一次拿下5A,下面分享一下我自己备考PMP的经验。 我是根据自己的学习计划复习的,不能说这些方法适合所有人,但对备考的伙伴们来说,…...

python开发poc,fofa爬虫批量化扫洞

学习使用python做到批量化的漏洞脚本 1.通过fofa搜索结果来采集脚本 2.批量化扫描漏洞 ---glassfish存在任意文件读取在默认48484端口,漏洞验证的poc为: "glassfish" && port"4848" && country"CN" http://loca…...

适用于 Windows 10 的 10 大免费数据恢复软件

数据丢失可能是一场噩梦,尤其是在涉及重要文件和文档时。无论是由于意外删除、系统崩溃还是病毒攻击,找到适合 Windows 10 的文件夹恢复软件都可以在恢复丢失的数据方面发挥重要作用。在本指南中,我们将探索适用于 Windows 10 用户的 10 大免…...

zabbix企业级监控平台

zabbix部署 安装源 重新创建纯净环境,利用base克隆一台虚拟机server1 给server1做快照,方便下次实验恢复使用 进入zabbix官网https://www.zabbix.com rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...