LangChain---大型语言模型(LLM)的标准接口和编程框架

news2024/12/23 10:21:50

1.背景说明

        公司在新的一年规划中突然提出要搞生成式AI(GenAI)的相关东西,在公司分享的参考资料中了解到了一些相关的信息,之所以想到使用LangChain,是因为在应用中遇到了瓶颈问题,除了已经了解和研究过的OpenAI的ChatGpt,基本再没有别的生成AI的相关应用落地。一方面,gpt的目前使用仅限于通过接口秘钥去调用将结果返回到页面上,而公司希望能够通过代码接口的方式传入数据调用不同的开源大语言模型,然后实时返回解析结果。另一方面,OpenAI的所有预训练模型及使用都是收费的,尽管每个token的收费为$0.002~$0.005,但如果输入和输出的内容较多,特别在调试阶段,需要反复测试不同情况下系统的响应,这样积累下来的花费是非常大的。因此决定尝试使用其它的LLM模型代替OpenAI模型,例如Meta于2月份推出的LLaMa模型以及Google的flan-t5-xxl模型。而不管要使用别的任意开源模型,都需要依赖一个访问接口才可以。

2.LangChain

        介绍

        LangChain是一个围绕大型语言模型(Large Language Models, LLMs)建立的开源框架。LangChain不是LLM的提供者,而是提供了一个标准接口,它简化了提示(prompt)管理和优化,通过这个接口,用户可以与各种LLM进行交互,并包括与LLM一起工作的通用工具。LangChain为链(chains)提供了一个标准接口,使开发者能够创建超越单一LLM调用的调用序列。此外,它能够对长篇文字进行总结和对特定数据源的提问进行回答。

        特性

        大型语言模型 (LLMs) 是一种日益变革的技术,使开发者能够建立以前无法想象的应用程序。然而,孤立地使用LLM往往不足以创建真正强大的应用程序,LLMs的真正力量在于它们与其他计算或知识来源的整合。Langchain是一个尖端的开源Python库,专门提供先进的LLM链、代理、工具和索引,它以创新的面向对象的方式创建提示 (prompts),并将工具的输出链化。LangChain和Llama-index正试图准确地解决这些挑战。LangChain为开发者提供了以下功能,其复杂程度依次递增:

(1) LLMs and Prompts

(2) Chains

(3) Data Augmented Generation

(4) Agents

(5) Memory

(6) Evaluation

LangChain的其他一些特点包括它对数据增强生成、代理、内存和评估的支持。它为链提供了一个标准的接口,并与其他工具进行了大量的整合。LangChain还提供了一个标准的代理(agents)接口,提供了一些可供选择的代理,以及端到端的代理实例。这些代理可用于更接地气的问题回答、与API的互动,甚至采取行动。在LangChain中,代理是使用语言模型与其他工具互动的系统。这些代理可以用来为下一代个人助理提供动力--这些系统可以智能地理解用户的意思,然后采取行动来帮助完成目标。内存是LangChain的另一个特点,它允许在链或代理的调用之间持久保存状态。

3 测试

        为了取代OpenAI,首先想到的是HuggingFace库中的模型,在GPT-2时代,我们一直使用该库中的模型,本公众号在2021年写了大量这方面的文章,下面是一个简单应用例子,在这个例子中,共使用了3个类:PromptTemplate用来创建创建提示行的格式prompt,HuggingFaceHub用来建立预训练模型hub_llm,LLMChain用来产生模型链llm_chain。在本例中,使用了google/flan-t5-xxl模型,该模型是在T5【生成摘要(Summarization)的新方法】的基础上发展而来的。

from langchain import PromptTemplate, HuggingFaceHub, LLMChaintemplate = """Question: {question}Answer: Let's think step by step."""prompt = PromptTemplate(template=template, input_variables = ["question"])hub_llm = HuggingFaceHub(        repo_id = model_id,    model_kwargs={"temperature":1, "max_length":364})llm_chain = LLMChain(prompt=prompt, llm=hub_llm)question = "What is mining engineering?"print(llm_chain.run(question))

问题:What is mining engineering?

回答:Mining engineering is the engineering discipline that applies science and technology to the extraction of minerals from the earth.(采矿工程是将科学和技术应用于从地球上提取矿物的工程学科) [first.py]

4 结束语

        本文讨论了LangChain的使用,LangChain是一个围绕大型语言模型(LLM)建立的开源框架,是为了解决成本问题预先训练好的模型。LangChain简化了提示管理和优化,允许用户与各种LLM互动,并创建调用链以超越单一的LLM。该框架还支持数据生成文章。提供了一个使用LangChain的例子,用HuggingFace库中的模型作为预训练模型,用LLMChain生成一个模型链。这个例子的应用成功地回答了"什么是采矿工程"的问题。

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

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

相关文章

Python实现EMV工具判断信号:股票技术分析的工具系列(2)

Python实现EMV工具判断信号:股票技术分析的工具系列(2) 介绍算法解释:优势:劣势: 代码rolling函数介绍核心代码计算 EMV 完整代码 介绍 先看看官方介绍: EMV(简易波动指标) 用法 1.…

MySQL 多表查询 连接查询 内连接

介绍 内连接查询是两张表中交集的部分 连接模式 隐式内连接 SELECT 字段列表 FROM 表1,表2 WHERE 条件显式内连接 SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件案例 有两张表一个表为学生表,另一个表为班级表,现在需要查询学生时候在查…

【Excel PDF 系列】EasyExcel + iText 库实现 Excel 转换 PDF

你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,欢迎指教: 企鹅:869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

【Java程序员面试专栏 算法思维】六 高频面试算法题:动态规划

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间零钱兑换动态规划+双重循环dp[i]表示兑换金额为i元的最少…

基于springboot+vue的中医慢性病食疗系统

后端语言:java 框架:springboot/ssm 数据库:mysql5.7 数据库工具:Navicat 前端技术:vue.jsElementUi 开发工具 idea/eclipse/都可以为设计一个安全便捷,并且使用户更好获取中医药膳慢性病食疗平台&#xf…

Mamba与MoE架构强强联合,Mamba-MoE高效提升LLM计算效率和可扩展性

论文题目: MoE-Mamba: Efficient Selective State Space Models with Mixture of Experts 论文链接: https://arxiv.org/abs/2401.04081 代码仓库: GitHub - llm-random/llm-random 作为大型语言模型(LLM)基础架构的后…

腾讯云优惠代金券领取的3个渠道入口,不看后悔!

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

华为数通方向HCIP-DataCom H12-821题库(多选题:01-20)

第01题 如图BGP下有如下配置,下面哪些描述是错误的? [HUAWEI-bgp] timer keepalive 30 hold 90 [HUAWEI-bgp] peer 1.1.1.2 timer keepalive 10 hold 30A、Timer 取最小值,所以最终结果是 peer1.1.1.2 的 timer值取 keepalive 10 hold 30 B、Peer 配置优先,所以最终结果是…

【Maven】Maven 基础教程(三):build、profile

《Maven 基础教程》系列,包含以下 3 篇文章: Maven 基础教程(一):基础介绍、开发环境配置Maven 基础教程(二):Maven 的使用Maven 基础教程(三):b…

开源视频转码器HandBrake

什么是 HandBrake ? HandBrake 是一款适用于 Linux、Mac 和 Windows的开源视频转码器。HandBrake 可以处理大多数常见的视频文件和格式,包括消费者和专业摄像机创建的文件、手机和平板电脑等移动设备的文件、游戏和计算机屏幕录制的文件,以及…

【数据结构】实现栈

大家好,我是苏貝,本篇博客带大家了解栈,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一 .栈的概念及结构二 .栈的实现栈的结构体初始化销毁栈顶插入栈顶删除显示栈顶元素是否为空栈的大…

Android 签名机制

V1是内部文件单个签 但是增加apk文件目录下面随意增加文件并不会有影响,它只关心meta-info文件 mf汇总清单的各个文件sha256 V2 整个APK文件,按文件进行hash 那么便不能随便在这里面增加文件了,增加了签名分块(不然签名信息存哪里)这里涉及一个文件概念 …

记录一次架构优化处理性能从3千->3万

0.背景 优化Kafka消费入Es,适配600台设备上报数据,吞吐量到达2万每秒 1.环境配置 2.压测工具 3.未优化之前的消费逻辑 4.优化之后的消费流程 5.多线程多ESclient 6.修改ES配置,增加kafka分区,增加线程,提升吞吐量 7.…

DiskMirror-spring-boot-starter 技术|

DiskMirror-spring-boot-starter 技术 diskMirror 实现了 SpringBoot 的 starter 能够集成到 SpringBoot 中。 DiskMirror 的 starter,通过引入此类,可以直接实现 diskMirror 在 SpringBoot 中的自动配置,接下来我们将使用案例逐步的演示 d…

【多线程】CAS详解

目录 🌴什么是 CAS🌸CAS 伪代码 🎍CAS 是怎么实现的🍀CAS 有哪些应⽤🌸实现原子类🌸实现自旋锁 🌳CAS 的 ABA 问题🌸**什么是 ABA 问题**?🌸ABA 问题引来的 B…

挑战30天学完Python:Day24 统计分析

🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点知识,但又没…

Docker之数据卷

文章目录 一、什么是数据卷二、自定义镜像 一、什么是数据卷 1.1Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及容器的数据管理操作 1.2操作 将宿主机的目录与容器的目…

【解决(几乎)任何机器学习问题】:交叉验证

在上⼀章中,我们没有建⽴任何模型。原因很简单,在创建任何⼀种机器学习模型之前,我们必须知道什么是交叉检验,以及如何根据数据集选择最佳交叉检验数据集。 那么,什么是 交叉检验 ,我们为什么要关注它&…

交友社交软件开发-php交友聊天系统-

为了开发一个高效的交友系统,需要一个完善的信息管理和筛选机制。这个系统应该能够根据用户的个人信息、兴趣爱好、价值观等标准进行筛选,并向用户提供符合他们要求心仪的人的信息。为了实现这个目标,系统可以利用人工智能技术,分…

Docker使用数据卷自定义镜像Dockerfile

文章目录 一、数据卷二、Dockerfile自定义centos 一、数据卷 数据卷(Data Volumes)是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,它可以提供很多有用的特性: 1.数据卷 可以在容器之间共享和重用 2.对数据卷的…