【LLM】快速开始 LangChain

news2024/11/24 1:51:45

theme: orange

LangChain是一个软件开发工具包,它通过将组件链接在一起并公开简单统一的API,简化了大型语言模型和应用程序的集成。本篇文章将会简要介绍,让各位开发者对其有一个整体的认识。

前言

如果你是一名软件开发人员,努力跟上有关大型语言模型的最新热点,你可能会感到不知所措或困惑,就像我一样。似乎每天我们都会看到一个新的开源模型的发布,或者一个商业模型提供商宣布的重大新功能。

大型语言模型(LLMs)正迅速成为现代软件技术栈的一个重要组成部分。然而,无论您是想使用像OpenAI这样的提供商提供的模型API,还是将开源模型嵌入到您的应用程序中,构建大型语言模型驱动的应用程序不仅仅是发送一个提示并等待回应。有许多因素需要考虑,从调整参数到增强提示再到适度地回应。

大型语言模型(LLMs)是无状态的,这意味着它们不会记住对话中的先前消息。维护历史记录并将上下文提供给LLM是开发人员的责任。这些对话可能需要存储在一个持久化数据库中,以便在新的对话中恢复上下文。因此,为LLMs添加短期和长期记忆是开发人员的关键责任之一。

另一个挑战是,对于LLMs并没有通用的规则。您可能需要使用针对不同场景的多个专用模型,如情感分析、分类、问答和总结。处理多个LLMs非常复杂,需要相当多的管道工作。

为构建LLM应用程序的统一API层

LangChain是一个旨在简化LLM和应用程序集成的SDK。它解决了我们之前讨论的大部分挑战。LangChain类似于ODBC或JDBC驱动程序,它通过让您专注于标准SQL语句来抽象底层数据库。LangChain通过公开简单统一的API来抽象底层LLM的实现细节。这个API使得开发人员可以轻松地更换模型,而无需对代码进行重大更改。

LangChain与ChatGPT大约同时出现。其创建者Harrison Chase在2022年10月底进行了第一次提交,就在LLM浪潮全面爆发之前。从那时起,社区一直在积极贡献,使LangChain成为与LLM互动的最佳工具之一。

LangChain是一个强大的框架,可以与外部工具集成形成一个生态系统。让我们了解一下它如何协调从LLM获得期望结果的流程。

image.png

数据源 (Data sources)

应用程序需要从外部来源(如PDF、网页、CSV和关系数据库)获取数据,以构建LLM的上下文。LangChain无缝集成了可以访问和检索来自不同来源数据的模块。

词嵌入 (Word embeddings)

从某些外部来源获取的数据必须转换为向量。这是通过将文本传递给与LLM关联的词嵌入模型来完成的。例如,OpenAI的GPT-3.5模型有一个关联的词嵌入模型,需要用它来发送上下文。LangChain会根据选择的LLM选择最佳的嵌入模型,消除了配对模型的猜测。

向量数据库 (Vector databases)

生成的嵌入存储在向量数据库中以进行相似性搜索。LangChain可以轻松地从各种来源(从内存数组到托管的向量数据库,如Pinecone)存储和检索向量。

大型语言模型 (Large language models)

LangChain支持OpenAI、Cohere和AI21提供的主流LLM,以及Hugging Face上可用的开源LLM。支持的模型和API端点的列表正在迅速增长。

image.png

以上流程代表了LangChain框架的核心。位于堆栈顶部的应用程序通过Python或JavaScript SDK与LangChain模块之一进行交互。让我们了解这些模块的作用。

模型I/O (Model I/O)

模型I/O模块处理与LLM的交互。它主要帮助创建有效的提示,调用模型API,并解析输出。作为生成式AI的核心,提示工程得到了LangChain的良好处理。此模块抽象了LLM提供商公开的认证、API参数和端点。最后,它可以将模型发送的响应解析为应用程序可以使用的所需格式。

数据连接(Data connection)

可以将数据连接模块看作是您的LLM应用程序的ETL管道。它处理加载外部文档(如PDF或Excel文件),将它们转换为批量处理成词嵌入的数据块,将嵌入存储在向量数据库中,并通过查询最终检索它们。正如我们之前讨论的,这是LangChain最重要的构建模块。

链(Chains)

在很多方面,与LLM交互就像使用Unix管道。一个模块的输出被作为另一个模块的输入发送。我们通常需要依赖LLM来澄清和提炼响应,直到我们得到期望的结果。LangChain中的链旨在构建高效的管道,利用构建模块和LLM获得预期的响应。一个简单的链可能有一个提示和一个LLM,但也可以构建高度复杂的链,多次调用LLM(如递归)以实现结果。例如,一个链可能包括一个提示来总结一个文档,然后对同一个文档进行情感分析。

内存(Memory)

LLM是无状态的,但需要上下文来准确响应。LangChain的内存模块使得向模型添加短期和长期记忆变得容易。短期内存通过简单机制保持对话历史。消息历史可以持久化到外部资源,如Redis,代表长期记忆。

回调(Callbacks)

LangChain为开发者提供了一个回调系统,允许他们挂接到LLM应用程序的各个阶段。这对于日志记录、监控、流处理和其他任务非常有用。可以编写自定义回调处理程序,在管道内发生特定事件时调用。LangChain的默认回调指向stdout,它只是将每个阶段的输出打印到控制台。

代理(Agents)

代理是迄今为止LangChain最强大的模块。LLM具有推理和行动能力,称为ReAct提示技术。LangChain的代理简化了制作利用LLM将提示提炼为行动计划的ReAct提示。代理可以被认为是动态链。代理背后的基本思想是使用LLM选择一组操作。一系列操作在链中(在代码中)硬编码。在代理中,语言模型用作推理引擎,以确定采取哪些行动以及以何种顺序。

结论

LangChain正迅速成为GenAI驱动的应用程序中最重要的组件。得益于不断扩展的繁荣生态系统,它可以支持各种各样的构建模块。对开源和商业LLM、向量数据库、数据源和嵌入的支持使得LangChain成为开发者不可或缺的工具。

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

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

相关文章

chatGPT讲师AIGC讲师叶梓:大模型这么火,我们在使用时应该关注些什么?-5

以下为叶老师讲义分享: P20-P24 顺便看看某大模型觉得“两头蛇”长啥样? “羊驼-2”的神逻辑 欣赏一下GPT-4给出的满分答案 提示工程的模式 1、说明模式下,您为 ChatGPT 输入内容来解释或阐明一个概念或理论。 它的主要功能是定义各种概念。…

设计封面有诀窍,这5个实用软件让你快人一步

每位作者和出版商都梦想着为他们的作品设计一个引人注目的封面。这样一来,潜在的读者才会被吸引,愿意拿起这本书来阅读,从而提高书籍的销售量。这正是封面设计软件发挥作用的地方。专业的封面设计软件能够添加前沿的效果,以呈现书…

使用代理服务器和pip安装软件包

在开着代理服务器的情况下,直接pip install 软件包名会出现如下错误, WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLZeroReturnError(6, TLS/SSL connection has been…

【Cadence】Calculator计算sp的3dB带宽

【Cadence】Calculator计算sp的3dB带宽 1.计算最大增益2.cross函数3. 3dB带宽 下面演示如何在Cadence计算s参数(如增益)的3dB带宽 1.计算最大增益 ymax函数 2.cross函数 cross函数可以计算经过y轴给定值对应的x坐标 edge number选择1是经过的第一个点…

B081-Lucene+ElasticSearch

目录 认识全文检索概念lucene原理全文检索的特点常见的全文检索方案 Lucene创建索引导包分析图代码 搜索索引分析图代码 ElasticSearch认识ElasticSearchES与Kibana的安装及使用说明ES相关概念理解和简单增删改查ES查询DSL查询DSL过滤 分词器IK分词器安装测试分词器 文档映射(字…

火热报名中 | 网安朝阳·西门子白帽黑客大赛燃爆来袭

2022年 首届西门子白帽黑客大赛 集结全国网安精英 以热爱之名 引爆整个夏天 2023年 网安朝阳西门子白帽黑客大赛—— 国际精英挑战赛 再度重磅归来 网安骑士的荣耀角斗场 等你来战 赛宁网安持续为第二届赛事 提供全程服务支持 热血战役 即将打响 报名通道现已开启…

风险评估

风险评估概念 风险评估是一种系统性的方法,用于识别、评估和量化潜在的风险和威胁,以便组织或个人能够采取适当的措施来管理和减轻这些风险。 风险评估的目的 风险评估要素关系 技术评估和管理评估 风险评估分析原理 风险评估服务 风险评估实施流程

SQLAlchemy 封装的工具类,数据库pgsql(数据库连接池)

1.SQLAlchemy是什么? SQLAlchemy 是 Python 著名的 ORM 工具包。通过 ORM,开发者可以用面向对象的方式来操作数据库,不再需要编写 SQL 语句。 SQLAlchemy 支持多种数据库,除 sqlite 外,其它数据库需要安装第三方驱动。…

专访远航汽车远勤山:踏踏实实做好产品 直面挑战乘风远航

8月25日,第二十六届成都国际汽车展览会在中国西部国际博览城隆重开幕。车展举办期间,远航汽车董事长远勤山先生、产品研发总监王震先生向媒体分享了远航汽车品牌发展、产品研发、技术创新以及市场布局等内容。 “通过我们的付出和努力,让我们…

景芯SoC 芯片全流程培训

【全网唯一】景芯SoC是一款用于芯片全流程培训的低功耗ISP图像处理SoC,采用低功耗RISC-V处理器,内置ITCM SRAM、DTCM SRAM,集成包括MIPI、ISP、CNN、QSPI、UART、I2C、GPIO、百兆以太网等IP,采用SMIC40工艺设计流片。 培训数据包括…

云计算在智能制造中的应用与前景

文章目录 云计算的基本概念智能制造的基本概念云计算在智能制造中的应用1. 数据存储和管理2. 大数据分析3. 机器学习和预测维护4. 跨地理分布的协作5. 资源弹性和成本优化 未来前景1. 智能工厂2. 预测性维护3. 定制化生产4. 绿色生产5. 全球制造协作 结论 🎉欢迎来到…

QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)

1.实现文件对话框保存操作 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }void Widget::on_fontBtn_clicked() {//调用QFo…

Java的23种设计模式

Java的23种设计模式 一、创建型设计模式1.单例模式 singleton1.1.静态属性单例模式1.2 静态属性变种1.3 基础的懒汉模式1.4 线程安全的懒加载单例1.5 线程安全的懒加载 单例-改进1.6 双重检查锁1.7 静态内部类1.8 枚举单例1.9 注册表单例 2.工厂方法模式 factory3.抽象工厂模式…

Error:Java:无效的源发行版:14

问题描述:项目拉下来,跑的时候发现版本有问题。这个问题可好解决了,只需要看下面几个方面,然后让他们保持一致就OK了 step1:查看本地的jdk版本 打开cmd窗口,输入命令 java -version就可以查看到本地的jdk版…

dji uav建图导航系列(三)模拟建图、导航

前面博文【dji uav建图导航系列()建图】、【dji uav建图导航系列()导航】 使用真实无人机和挂载的激光雷达完成建图、导航的任务。 当需要验证某一个slam算法时,我们通常使用模拟环境进行测试,这里使用stageros进行模拟测试,实际就是通过模拟器,虚拟一个带有传感器(如…

如何一键批量查询全部物流信息?

在日常工作中,快递物流信息的查询是一项常规任务。然而,这个过程往往既耗时又费力,尤其是在面对大量单号的情况下。为了解决这个问题,我们推荐使用固乔快递查询助手,一款能够快速、准确地查询快递物流信息的软件。 首先…

【线程池】如何判断线程池中的任务执行完毕(三)

目录 前言 1. isTerminated()方法 2. awaitTermination()方法 3.getTaskCount()方法和executor.getCompletedTaskCount()方法结合使用 4.使用CountDownlatch类 前言 通常我们使用线程池的时候,系统处于运行的状态,而线程池本身就是主要为了线程复用&…

CVE-2023-23752:Joomla未授权访问漏洞复现

CVE-2023-23752:Joomla未授权访问漏洞复现 前言 本次测试仅供学习使用,如若非法他用,与本文作者无关,需自行负责!!! 一.Openfire简介 Joomla是一个免费的开源内容管理系统(CMS&a…

Java for循环每次都通过list.size()和 string.length()获取大小性能

有人说在for循环之前用一个局部变量先获取到list.size()、str.length(),然后在for循环的判断条件里通过这个局部变量替换list.size()、str.length()会节省数据计算的时间。事实真的是这样吗?下面就为大家解答这个问题。 说明:此文章针对Andro…

打造成功的砍价营销大解析,销量飙升

砍价活动是吸引顾客的一种有效方式,可以帮助提高销量和提升品牌知名度。在乔拓云平台上,我们提供了一套简单易用的工具,让您能够轻松地制作一个成功的砍价活动。下面,我将详细介绍具体步骤,让您能够轻松上手。 第一步&…