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.pswp.cn/news/713533.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713533.shtml
英文地址,請注明出處:http://en.pswp.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…

速盾:動態網站用cdn更慢嗎

當談到網站速度時,內容傳遞網絡(Content Delivery Network,CDN)是不可忽視的一個因素。很多人可能有疑惑,動態網站使用CDN是否會導致加載速度變慢。為了解決這個問題,我們需要了解動態網站和CDN的工作原理&…

mybatis動態加載mapper.xml

mybatis動態加載mapper.xml mybatis動態加載mapper.xml、springboot mybatis動態加載mapper.xml 教程連接:https://blog.csdn.net/weixin_44480167/article/details/136356398

測試linux系統某些文件屬性之test命令

要檢測系統上某些文件或相關屬性時,我們可以使用test命令,比如:檢查/root/ztj.txt文件是否存在,可以使用test -e /root/ztj.txt命令,不過執行結果不會顯示任何信息,需配合$?或&&及||來展現具體結果…

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;…

【C語言】字符型變量and整型變量的類型轉換

一、將字符型變量轉換為整型變量 char c A; int i (int)c; 二、將整型變量轉換成字符型變量 int i 65; char c (char)i;

Unity 實戰一:這幾年被廣告刷屏的沙雕跑酷游戲

姐就是女王&#xff0c;功夫跑酷&#xff0c;揀槍干架跑酷等 核心不用說了吧&#xff1a; 就是一個人不斷地跑&#xff0c;獲取不同屬性&#xff0c;判斷是否過關 好的&#xff0c;以下是一篇基于Unity 開發簡易版有障礙物的跑酷游戲的教程博客&#xff1a; 在這篇博客中&…

static在c語言中的作用

1、關鍵字static的作用是什么&#xff1f; 這個簡單的問題很少有人能回答完全。在C語言中&#xff0c;關鍵字static有三個明顯的作用&#xff1a; 1). 在函數體&#xff0c;一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。 2). 在模塊內(但在函數體外)&#xf…

Linux tload 命令教程:實時監控系統負載(附案例詳解和注意事項)

Linux tload 命令介紹 tload 是一個用于監控系統負載的命令行工具。它以圖形化的方式顯示系統的負載情況&#xff0c;幫助你了解 CPU 和內存的使用情況。 Linux tload 命令適用的 Linux 版本 tload 在大多數 Linux 發行版中都可用。如果你在某些特定的 Linux 發行版上找不到…

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…

每日OJ題_分治歸并③_力扣315. 計算右側小于當前元素的個數

目錄 315. 計算右側小于當前元素的個數 解析代碼 力扣315. 計算右側小于當前元素的個數 315. 計算右側小于當前元素的個數 難度 困難 給你一個整數數組 nums &#xff0c;按要求返回一個新數組 counts 。數組 counts 有該性質&#xff1a; counts[i] 的值是 nums[i] 右側…

MongoDB 未授權訪問

開啟 MongoDB 服務時不添加任何參數時,默認是沒有權限驗證的,而且可以遠程訪問數據庫&#xff0c; 登錄的 用戶可以通過默認端口無需密碼對數據庫進行增、刪、改、查等任意高危操作。 防護 為 MongoDB 添 加 認 證 &#xff1a; 1)MongoDB 啟動時添加–auth參數 2)給 MongoD…