LangChain手記 Chains

整理并翻譯自DeepLearning.AI×LangChain的官方課程:Chains(源代碼可見)

Chains

直譯鏈,表達的意思更像是對話鏈,對話鏈的背后是思維鏈

LLM Chain(LLM鏈)

首先介紹了一個最簡單的例子,LLM Chain:
在這里插入圖片描述
在這里插入圖片描述
將一個大語言模型和prompt模板組合起來調用LLMChain,即可得到一個LLMChain對象,該對象的run實現的功能即給定輸入自動使用prompt模板生成prompt,調用LLM得到回復。

Sequential Chains(順序鏈)

在這里插入圖片描述
順序鏈是另外一種類型的鏈,它的基本思想是以一個鏈的輸出是下一個鏈的輸入這種方式組合的多個鏈。

目前有2種類型的順序鏈:

  1. SimpleSequentialChain:單個輸入/輸出組合
  2. SequentialChain:多個輸入輸出組合

SimpleSequentialChain

在這里插入圖片描述
在這里插入圖片描述
調用SimpleSequentialChain,傳入兩個構建好的LLM Chain即可構建一個順序鏈,第一個LLM Chain的輸出是第二個LLM Chain的輸入,同樣也可以指定verbose=true將打印對話歷史。

圖示如下:
在這里插入圖片描述

SequentialChain

在這里插入圖片描述
第一個chain將review翻譯為英文,第二個chain則提取摘要。
在這里插入圖片描述
第三個chain識別review的類型。
在這里插入圖片描述
第四個chain使用指定語言類型和摘要生成回復。

注意點是這些chain里面的變量名稱要對齊,否則會報錯。

即將構建的順序鏈如下圖所示:
在這里插入圖片描述
運行一下:
在這里插入圖片描述
結果:
在這里插入圖片描述

視頻可能看不太清楚,整條鏈的輸入輸出的依賴關系是依靠每一個子鏈都設置一個output_key,在下一個鏈的prompt模板里以{output_key}的形式指定來實現的,寫python的朋友估計已經習以為常了,其他語言的小伙伴可能需要點時間思考,如下圖:
在這里插入圖片描述

Router Chain 路由鏈

先決定輸入要分發到哪個子鏈,再分發到對應的子鏈:
在這里插入圖片描述
定義回答多個學科的多個prompt模板:
在這里插入圖片描述
為每個學科的prompt模板添加一些說明信息:
在這里插入圖片描述
為了實現路由鏈,引入了MultiPromptChainLLMRouterChain
在這里插入圖片描述
定義LLM,訓練prompt模板列表,構建子鏈:
在這里插入圖片描述
再構建一個默認鏈(用來兜底):
在這里插入圖片描述
定義路由提示詞模板:
在這里插入圖片描述
定義路由鏈(注意output_parser指定的是RouterOutputParser對象):
在這里插入圖片描述
現在,組合起來構建路由鏈:

chain = MultiPromptChain(router_chain=router_chain, destination_chains=destination_chains, default_chain=default_chain, verbose=True)

嘗試運行一下物理題:
在這里插入圖片描述
嘗試運行一下數學題:
在這里插入圖片描述
如果輸入一個不屬于路由內的學科,比如下面的生物,則會兜底走默認鏈,由于GPT也具備生物學知識,所以也可以給出有效回答:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41871.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼審計-java項目-組件漏洞審計

代碼審計必備知識點: 1、代碼審計開始前準備: 環境搭建使用,工具插件安裝使用,掌握各種漏洞原理及利用,代碼開發類知識點。 2、代碼審計前信息收集: 審計目標的程序名,版本,當前環境(系統,中間件…

圖數據庫_Neo4j和SpringBoot整合使用_實戰創建明星關系圖譜---Neo4j圖數據庫工作筆記0010

然后我們再來看一下這個明星關系圖譜 可以看到這里 這個是原來的startRelation 我們可以寫CQL去查詢對應的關系 可以看到,首先查詢出來以后,然后就可以去創建 我們可以把寫的創建明星關系的CQL,拿到 springboot中去執行 可以看到,這里我們先寫一個StarRelationRepository,然…

Java二分法查找

二分法:首先需要一個由小到大排序好的數組,先找到其中間值,然后進行比較如果比較中間值大的話則向前找。如果比要找的小,則向后找。 代碼實現: //定義查詢方法 public static int searchTarget(int[] nums, int targ…

wireshark界面內容含義

網絡分析工具——WireShark的使用(超詳細)_世間繁華夢一出的博客-CSDN博客 wireshark抓包數據:理解與分析_wireshark里面length_ 佚名的博客-CSDN博客

【圖書推薦 | 測試】—《測試設計思想》

前言 隨著科技的不斷發展,互聯網的不斷進步,日益出現了一種趨勢:測試設計將成為一種跨領域的綜合性工作,測試者將成為一種跨領域的通用型人才。由此清華大學出版社推出了一本名為《測試設計思想》的書籍,由知名專家周…

PHP-FPM進程排查

1、查看php-fpm的進程個數 ps -ef |grep "php-fpm"|grep "pool"|wc -l2、查看每個php-fpm占用的內存大小 ps -ylC php-fpm --sort:rss3.查看PHP-FPM在你的機器上的平均內存占用 ps --no-headers -o "rss,cmd" -C php-fpm | awk { sum$1 } END…

防止 JavaScript 中的正則表達式回溯

防止 JavaScript 中的正則表達式回溯 正則表達式是用于在軟件應用程序中操作和驗證文本的強大工具。然而,某些正則表達式模式可能容易受到回溯的影響,這可能會導致超線性運行時,并可能導致DoS攻擊。在本文中,我們將探討什么是回溯…

ios swift5 collectionView 瀑布流(兩列)

文章目錄 1.瀑布流1.1 demo地址1.2 記得把部署的最低版本由8改成11,13甚至更高。不然編譯會報錯 2.動態計算圖片和文字的高度 1.瀑布流 1.1 demo地址 CollectionViewWaterfallLayout - github 1.2 記得把部署的最低版本由8改成11,13甚至更高。不然編譯會報錯 2.動態計算圖片和…

產業園區數字孿生3d可視化全景展示方案

隨著數字經濟的發展,數字技術給企業發展帶來了機遇的同時,也為企業管理帶來挑戰。比如園區運維,不僅體量大,復雜的運維管理系統,落地難度也較高。那么如何通過數字化手段重塑園區運營,打通園區各業務數據孤…

SQLyog中導入CSV文件入庫到MySQL中

1.在數據庫中新建一個表,設置列名(與待導入文件一致),字段可以多出幾個都可以 2.右鍵表名,導入- - >導入使用本地加載的CSV數據 選擇使用加載本地CVS數據 3.指定好轉義字符,將終止設置為,號(英文狀態下…

idea常見錯誤大全之:解決全局搜索失效+搜索條件失效(條件為空)+F8失靈

問題一:全局搜索快捷鍵ctrlshiftf 突然失靈了,鍵盤敲爛了 都沒反應,這是為什么呢? 肯定不是idea本身的原因,那么就是其它外在因素影響到了idea的快捷鍵,那么其它的快捷鍵為什么沒失效呢,原因只有…

服務器擴展未生效

服務器擴容未生效 在阿里云付費擴容后,在服務器里面看未生效。 阿里云->實例與鏡像->實例->選擇實例->云盤->擴容進入linux服務器查看: df -h vda1擴容未生效。原40g->擴容后100g 解決方法: 1、安裝growpart yum inst…

Win11環境下 Unity個人版無法激活

網上教程大多都是在win10環境下運行,win11環境下遇到很多沒有碰到的問題,故簡單做個記錄,也方便同樣使用win11的朋友解決問題。 Unity2021無法打開 問題描述:下載Unity2021.3.4f1c1版本(LTS)后&#xff0…

廣州華銳互動:奶牛難產原因及救治VR仿真實訓系統

奶牛難產是一種常見的疾病,對奶牛的健康和生產造成很大的影響。為了解決這一問題,許多奶牛養殖場開始采用VR仿真技術來培訓奶牛獸醫,幫助學生更好地理解奶牛養殖的實際過程,提高他們的實踐能力的教學方式。 VR技術開發公司廣州華銳…

【算法】雙指針劃分思想妙解移動零

Problem: 283. 移動零 文章目錄 思路算法圖解分析復雜度Code 思路 首先我們來講一下本題的思路 本題主要可以歸到【數組劃分/數組分塊】這一類的題型。我們將一個數組中的所有元素劃分為兩段區間,左側是非零元素,右側是零元素 那解決這一類的題我們首先想…

掌握指針進階:一篇帶你玩轉函數指針、函數指針數組及指向函數指針數組的指針!!

🍁博客主頁:江池俊的博客 💫收錄專欄:C語言進階之路 💡代碼倉庫:江池俊的代碼倉庫 🎪我的社區:GeekHub 🎉歡迎大家點贊👍評論📝收藏? 文章目錄 一…

基于Servlet實現的管理系統(包含服務器源碼+數據庫)

資料下載鏈接 介紹 基于Servlet框架的管理系統 簡潔版 ; 實現 登錄 、 注冊 、 增 、 刪 、 改 、 查 ; 可繼續完善增加前端、校驗、其他功能等; 可作為 Servlet項目 開發練習基礎模型; 課程設計 、 畢業設計 開發基礎&…

JVM---jvm里的內存溢出

目錄 堆溢出 虛擬機棧和本地方法棧溢出(棧溢出很少出現) 方法區和運行時常量池溢出 本機內存直接溢出(實際中很少出現、了解即可) 堆溢出 堆溢出:最常見的是大list,list里面有很多元素 堆溢出該怎么解決…

第7章:貝葉斯分類器

貝葉斯決策論 貝葉斯分類器:使用貝葉斯公式 貝葉斯學習:使用分布估計(不同于頻率主義的點估計) 極大似然估計 樸素貝葉斯分類 半樸素貝葉斯 條件獨立性假設,在現實生活中往往很難成立。 半樸素貝葉 斯的一個常用策略…

C++學習筆記4

什么是指針? 指針是存儲內存地址的變量。就像int變量用于存儲整數值一樣,指針變量用于存儲內存地址。指針是一種指向內存單元的特殊變量。 內存單元地址通常使用的是16進制表示(0~9和A~F)來表示數字。顯示…