基于 LangChain 构建 LLM 应用程序设计与实践

▼最近直播超级多,预约保你有收获

近期直播:基 LangChain大模型架构案例实践

 1

LangChain 是什么?

LangChain 和 Semantic Kernel 是当前比较受欢迎的两款 LLM 应用开发框架。

LangChain 作为一个大语言模型应用开发框架,解决了现在开发 LLM 大语言模型应用的一些切实痛点。以 ChatGPT 模型为例:

1、数据滞后,现在训练的数据是到 2021 年 9 月。

2、token 数量限制,如果让它对一个 800 页的 pdf 进行总结,直接使用则无能为力。

3、不能进行联网,获取不到最新的内容。

4、不能与其他数据源链接。

另外作为一个胶水层框架,极大地提高了开发效率,它的作用可以类比于 SpringCloud 在互联网后端开发中的角色,使得开发者可以更专注于创新和优化产品功能。

LangChain 发展速度非常快,也很火爆,短短半年就收获了个 66.9 K  star。LangChain 官方提供了 Python 和 JS 开发语言,第三方提供了 Java 版本。

e0e4ea53e7c8d289ccf0c7d0af226830.png

 2 

LangChain 架构设计剖析

以下是 LangChain 的组件与架构图(LangChain Python 和 LangChain JS/TS 的架构基本一致,本文中以 LangChain Python来完成剖析),基本完整描述了 LangChain 的组件与抽象层(callbacks 除外),以及它们之间的相关联系。

de1371d9c7f98d16d5f5d47f7febde22.png

第一、Model I/O

首先我们从最基本面的部分讲起,Model I/O 指的是和 LLM 直接进行交互的过程。

52c06ab0e0bbe17c28e2e1edfe832002.png

在 Model I/O 这一流程中,LangChain 抽象的组件主要有三个:Language models、Prompts、Output parsers。

第二、Data connection(是 LLM 的血液系统)

集成外部数据到 Language Model 中是 LangChain 提供的核心能力之一,也是市面上很多优秀的大语言模型应用成功的核心之一(Github Copilot Chat,网页聊天助手,论文总结助手,youtube 视频总结助手…),在LangChain中,Data connection这一层主要包含以下四个抽象组件:Document loaders、Document transformers、Vector stores、Retrievers。

52466a76441b200701924c547735783e.png

第三、Memory

Memory 可以帮助 Language Model 补充历史信息的上下文,LangChain 中的 Memory 是一个有点模糊的术语,它可以像记住你过去聊天过的信息一样简单,也可以结合向量数据库做更加复杂的历史信息检索,甚至维护相关实体及其关系的具体信息,这取决于具体的应用。

通常 Memory 用于较长的 Chain,能一定程度上提高模型的推理表现。

5e5f39936a7863f1620f1b0b05ae23f7.png

第四、Agent

在一些场景下,我们需要根据用户输入灵活地调用 LLM 和其它工具(LangChain 将工具抽象为 Tools 这一组件),Agent 为这样的应用程序提供了相关的支持。

Agent 可以访问一套工具,并根据用户输入确定要使用 Chain或是 Function,我们可以简单的理解为他可以动态的帮我们选择和调用 Chain 或者已有的工具。

ffb032cf0e2c4244f1c152f0f29617b8.png

 3

基于 LnagChain 的 LLM 应用程序架构设计

第一、基于 LangChain 使用检索增强(RAG)构建聊天机器人

在餐饮公司工作时,我们有一个任务是创建一个基于 ChatGPT 的聊天机器人,可以与用户聊天并提供相关食谱。

具体来说,源菜谱将被转换为嵌入式菜谱并保存在一个向量存储中:例如如果用户询问「健康食品」,查询会被转换为嵌入式菜谱,然后执行近似最近邻搜索以找到与嵌入式查询相似的菜谱,然后将其作为附加上下文提供给 ChatGPT,再由 ChatGPT 显示给用户。这种方法通常被称为检索增强生成。使用检索增强生成的聊天机器人的架构设计如下:

628a1b20466735cc524b4de87381c450.png

第二、还有众多的企业级使用场景,比如:构建本地知识库问答机器人等。

99da6de0c6174e53076e5e0a5acb927b.png

 4

免费超干货大模型 LangChain 应用开发实战直播

为了帮助同学们掌握好 LangChain 的技术架构和应用案例实战,本周日晚上8点,我会开一场直播和同学们深度聊聊 LangChain 技术架构剖析、LangChain 的应用案例实战,请同学点击下方按钮预约直播,咱们本周日晚8点不见不散哦~~

近期直播:基于LangChain大模型架构案例实践

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 将 jar 包和 lib 依赖分离,dockerfile 构建镜像

前言 Spring Boot 是一个非常流行的 Java 开发框架,它提供了很多便利的功能,例如自动配置、快速开发等等。 在使用 Spring Boot 进行开发时,我们通常会使用 Maven 或 Gradle 进行项目构建。 本文将为您介绍如何使用 Maven 将 Spring Boot …

如何从站长的角度选择高防CDN以节省成本

在当今的数字化世界中,网站站长需要面对越来越复杂的网络安全威胁,如DDoS攻击、恶意爬虫和恶意请求等。为了保护网站的可用性和数据安全,站长通常会寻求使用高防CDN(内容分发网络)。然而,如何在选择高防CDN…

基于Jaccard相似度的推荐算法---示例

目录 数据展示推荐算法的分类基于相似度基于流行度/上下文/社交网络 Jaccard相似度分析数据的特点可以考虑的方法计算方法优缺点计算用户之间的Jaccard相似度获取与给定最相似的10个用户对1713353的用户推荐10本书 数据展示 import pandas as pd import numpy as np# 读取CSV文…

面试梳理-Redis01

目录 开场白-追命3连 使用场景 01缓存穿透场景与方案 02布隆过滤器 03缓存击穿场景与方案 04缓存雪崩场景与方案 开场白-追命3连 看你项目中有说用到Redis,都是哪些场景使用了Redis呢? 如果发生了缓存穿透、击穿、雪崩如何应对呢?缓存…

【JVM】双亲委派机制、打破双亲委派机制

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 一、双亲委派机制1.1 双亲委派的作用1.…

【实战Flask API项目指南】之二 Flask基础知识

实战Flask API项目指南之 Flask基础知识 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 当小菜踏入Flask后端开发的世界&…

node插件express(路由)的插件使用(二)——body-parser和ejs插件的基本使用

文章目录 前言一、express使用中间件body-parser获取请全体的数据1. 代码2. 效果 二、express使用ejs(了解即可)1.安装2.作用3.基本使用(1)代码(2)代码分析和效果 4.列表渲染(1)代码…

git更改远程仓库地址

1、输入命令【git remote -v】查看当前git远程仓库地址 2、输入命令【git remote set-url origin 新地址】替换成新地址 3、输入命令【git remote -v 】查看是否更新成功

Java 集合基础面试题(高频)

Java集合从分类上看,有 collection 和 map 两种,前者是存储对象的集合类,后者存储的是键值对(key-value) Collection Set 主要功能是保证存储的集合不会重复,至于集体是有序还是无序的,需要看…

MySQL 表的增删查改(CRUD)

MySQL 表的增删查改(CRUD) 文章目录 MySQL 表的增删查改(CRUD)1. 新增(Create)2. 查询(Retrieve)2.1 全列查询2.2 指定列查询2.3 查询字段为表达式2.4 别名2.5 去重:DISTINCT2.6 排序:ORDER BY2.7 条件查询2.8 分页查询: LIMIT 3. 修改(Update)4. 删除(D…

CodeWhisperer 的使用心得

文章作者:小SS 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社…

王道p18 6.从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同(c语言代码实现)

视频讲解在这里:👇 顺序表p18 第6题wd数据结构课后代码题(c语言代码实现)_哔哩哔哩_bilibili 本题代码如下 void deleterepeat(struct sqlist* L) {if (L->length 0)printf("表空");int i 0;int k 0;for (i 1…

Android MVI架构的深入解析与对比

什么是MVI? M:model,此处的model并不是传统的数据模块,它是指用来存储视图状态UI State的一个模块 。比如请求数据时的loading、请求失败的提示页面等UI层面的变化状态。 V:view,视图模块 I:…

Mac终端学习

命令1:ifconfig 作用:列出本机所有的网络设备以及其上面的配置,主要指的是ip地址和mac地址 其他用法:sudo ifconfig en4 add 10.10.10.12 netmask 255.255.255.0 作用:给en4加入别的网段 其他用法:sudo i…

Visual Studio Code 常用快捷键大全

Visual Studio Code 常用快捷键大全 快捷键是编码过程中经常使用,且能够极大提升效率的部分,这里给大家介绍一些VS Code中非常有用的快捷键。 打开和关闭侧边栏 Mac — Command B Windows — Ctrl B Ubuntu — Ctrl B 选择单词 Mac — Command D …

GAMP源码阅读:PPP中的模型改正:天线相位中心、天线相位缠绕、潮汐、地球自转效应、引力延迟

原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、卫星天线相位中心改正1、原理2、文件读取3、setpcv():设置天线参数4、satantoff():卫星 PCO 改正5、satantpcv()&…

CorelDRAW2023最新版本号24.5.0.731

CDR2023是一款近年来备受瞩目的工具软件,它提供了数据存储、分析以及处理的能力。但是,对于许多用户来说,CDR2023到底好用不好用还需要进行深入的分析和探讨。在本文中,我们将从多个角度分析CDR2023这款软件。 CorelDRAW2023版win…

【Proteus仿真】【Arduino单片机】RGB彩灯

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用WS2812 RGB彩灯等。 主要功能: 系统运行后,RGB彩灯花样显示。 二、软件设计 /* 作者:嗨小易(…

如何通过智能管理箱实现高效文件管理:关键字轻松修改文件名

在信息化时代,文件管理变得尤为重要。智能管理箱已经成为我们生活中不可或缺的一部分。它可以帮助我们高效地管理各种文件,使得我们的工作和生活更加便捷。是一种高效的文件管理工具,可以帮助我们轻松地整理和分类文件,提高工作效…

Linux - 进程控制(下篇)- 进程等待

进程等待 为什么进程需要等待? 我们知道,在Linux 当中,父子进程之间一些结构就是一些多叉树的结构,一个父进程可能管理或者创建了很多个字进程。 而其实我们在代码当中使用fork()函数创建的子进程的父进程…