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

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.mzph.cn/news/713533.shtml

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

相关文章

蓝桥杯Java B组历年真题(2013年-2019年)

一、2013年真题 1、世纪末的星期 使用日期类判断就行,这里使用LocalDate,也可以使用Calendar类 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:无需package // 2: 类名必须Main, 不可修改p…

1小时网络安全事件报告要求,持安零信任如何帮助用户应急响应?

12月8日,国家网信办起草发布了《网络安全事件报告管理办法(征求意见稿)》(以下简称“办法”)。拟规定运营者在发生网络安全事件时应当及时启动应急预案进行处置。 1小时报告 按照《网络安全事件分级指南》&#xff0c…

Find My扫地机器人|苹果Find My技术与机器人结合,智能防丢,全球定位

扫地机器人又称自动打扫机、智能吸尘、机器人吸尘器等,是智能家电的一种,能凭借人工智能,自动在房间内完成地板清理工作。一般采用刷扫和真空方式,将地面杂物先吸纳进入自身的垃圾收纳盒,从而完成地面清理的功能。现今…

[AutoSar]BSW_Com07 CAN报文接收流程的函数调用

目录 关键词平台说明一、背景二、顺序总览三、函数说明3.1 Com_RxIndication() 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueOSautosar OSautosar厂商vector ,芯片厂商TI 英飞凌编程语言C,C编译器HighTec (GCC)…

贝叶斯定理与条件独立假设:朴素贝叶斯分类方法深度解读

今天给大家分享的是朴素贝叶斯算法,这个算法在实际使用中不是很多,因为现在很多算法已经发展的很好,性能上也比朴素贝叶斯算法的好很多,因此在实际中我们其实看到在实际应用中朴素贝叶斯算法的使用已经比较少,即使出现…

HotFix原理学习 IL2CPP 学习

原文链接:Unity 游戏用XLua的HotFix实现热更原理揭秘-CSDN博客 本文通过对XLua的HoxFix使用原理的研究揭示出来这样的一套方法。这个方法的 第一步:通过对C#的类与函数设置Hotfix标签。来标识需要支持热更的类和函数。第二步:生成函数连接器…

好视通视频会议系统存在任意文件读取漏洞复现 [附POC]

漏洞简介 好视通视频会议是由深圳市华视瑞通信息技术有限公司开发,其在国内率先推出了3G互联网视频会议,并成功应用于SAAS领域。 资产 FOFA:app"好视通-视频会议" POC GET /register/toDownload.do?fileName../../../../../../../../../.…

代码随想录-回溯算法

组合 //未剪枝 class Solution {List<List<Integer>> ans new ArrayList<>();Deque<Integer> path new LinkedList<>();public List<List<Integer>> combine(int n, int k) {backtracking(n, k, 1);return ans;}public void back…

MySql安全加固:可信IP地址访问控制 设置密码复杂度

MySql安全加固&#xff1a;可信IP地址访问控制 & 设置密码复杂度 1.1 可信IP地址访问控制1.2 设置密码复杂度 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1.1 可信IP地址访问控制 当您在创建用户时使用’%作为主机部分&#xff0c;…

java数据结构与算法刷题-----LeetCode437. 路径总和 III(前缀和必须掌握)

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 深度优先2. 前缀和 1. 深度优先 解题思路&#xff1a;时间复…

kibana7.17.7 将数据导出csv文件

配置kibana文件 首先先配置kibana.yaml内容如下&#xff0c;这里假设我的服务器ip地址为192.168.130.128&#xff0c;elasticsearch的ip地址为&#xff1a;192.168.130.129:9200&#xff0c;192.168.130.130:9200&#xff1a; server.host: "192.168.130.128" serv…

Mac 以SH脚本安装Arthas

SH脚本安装Aethas curl -L https://alibaba.github.io/arthas/install.sh | sh安装脚本说明 示例源文件&#xff1a; #! /bin/bash# temp file of as.sh TEMP_ARTHAS_FILE"./as.sh.$$"# target file of as.sh TARGET_ARTHAS_FILE"./as.sh"# update timeo…

Android挖取原图手指触点区域RectF(并框线标记)放大到ImageView宽高与矩阵mapRadius,Kotlin

Android挖取原图手指触点区域RectF(并框线标记)放大到ImageView宽高与矩阵mapRadius&#xff0c;Kotlin 这里 Android挖取原图中心区域RectF(并框线标记)放大到ImageView宽高&#xff0c;Kotlin-CSDN博客 实现的是把原图中心区域的一片小图挖取出来放大放到下面的ImageView里面…

if语句用法

if语句是单条件分支语句 定义&#xff1a;根据一个条件来控制程序执行流程(如图3.2)。 语法格式&#xff1a; if&#xff08;表达式&#xff09;{ 若干语句 } ★注意★&#xff1a; ① 表达式的值必须是boolean 型&#xff1b; ② 不能用0代表false&#xff1b;用1代表 true&am…

德人合科技 | —数据泄露可能会对公司造成哪些影响?

数据泄露可能会对公司造成多方面的影响&#xff0c;以下是一些可能的影响&#xff1a; 财务损失&#xff1a;数据泄露可能导致公司遭受财务损失。攻击者可能会盗取公司的敏感信息&#xff0c;如客户信息、银行账户信息、商业机密等&#xff0c;并利用这些信息进行欺诈、盗窃等非…

本地maven库缓存导入私库

为了加速编译代码&#xff0c;想将本地maven缓存导入内网私库使用。 脚本网上搜的 #!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itself explicitly so the script name …

高效备考2024年AMC10:吃透2000-2023年1250道AMC10真题

距离2024年AMC10的比赛只有8个月多一点的时间了&#xff0c;如何备考AMC10美国数学竞赛最有效&#xff1f;参加AMC10竞赛是否一定要参加机构的培训班&#xff1f;吃透历年真题是有效的自学、了解AMC10和备考策略之一。事实上&#xff0c;网络上有很多关于AMC10的学习资源&#…

Github 2024-03-02 开源项目日报Top9

根据Github Trendings的统计&#xff0c;今日(2024-03-02统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量非开发语言项目2Rust项目1JavaScript项目1Shell项目1C项目1TypeScript项目1C#项目1Python项目1 任天堂Switch模…

决定西弗吉尼亚州地区版图的关键历史事件

决定西弗吉尼亚州地区版图的关键历史事件&#xff1a; 1. 内部分裂与美国内战&#xff1a; - 在1861年美国内战爆发时&#xff0c;弗吉尼亚州作为南方邦联的一员宣布退出美利坚合众国。然而&#xff0c;弗吉尼亚州西部的一些县由于经济结构&#xff08;主要是农业非依赖奴隶制…

Redis 存储原理和数据模型

redis 是不是单线程 redis 单线程指的是命令处理在一个单线程中。主线程 redis-server&#xff1a;命令处理、网络事件的监听。 辅助线程 bio_close_file&#xff1a;异步关闭大文件。bio_aof_fsync&#xff1a;异步 aof 刷盘。bio_lazy_free&#xff1a;异步清理大块内存。io_…