最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

吳恩達最新ChatGPT課程《LLM應用程序開發(fā)的LangChain》中文字幕由

2023-07-12 23:29 作者:一天二咖  | 我要投稿

1. 前言

LangChain是一個用來構建LLM應用的開源框架,主要是為基于大語言模型的應用提供一系列的構建工具包。這個短課程的主要內容有:

  • 模型、提示和解析器:調用LLM,提供提示并解析響應。
  • LLM的記憶:用于存儲對話和管理有限上下文空間的記憶。
  • 鏈式操作:創(chuàng)建操作序列。
  • 文檔問答:將LLM應用于您的專有數(shù)據(jù)和用例需求。
  • 代理:探索將LLM作為推理代理的新興發(fā)展趨勢。

2. 課程筆記

2.1. 模型、提示和解析器

這節(jié)課的要點有兩個:

a. 使用Langchain的模板功能,將需要改動的部分抽象成變量,在具體的情況下替換成需要的內,達到一次定義,多次使用的效果。

書中提到的一個例子是,使用模板,去轉化表達的風格。這種方式比fstring要更靈活,特別是模板很長的時候。

b. 使用一個解析器,將LLM的輸出解析成你需要的格式,如字典。


2.2. LLM記憶,上下文管理

這節(jié)課主要如何使用不同的內存類來管理與LLM的對話上下文。

  • ConversationBufferMemory:保存所有上下文。
  • ConversationBufferWindowMemory:以對話輪數(shù)為單位,設置最大輪數(shù)限制。
  • ConversationTokenBufferMemory:以token的個數(shù)為單位,設置最大個數(shù)限制。
  • ConversationSummaryBufferMemory:可以設置對話token最大個數(shù),但使用llm來總結之前的對話內容。

2.3. 鏈式操作

鏈式操作有點像工作流,基本單元是Chain,通過與LLM和提示詞結合,可以構建出各種結構的鏈式操作,對文本及數(shù)據(jù)執(zhí)行一系列操作。

a. 基礎鏈

LLMChain,結合提示詞,組成一個基本的單位,對輸入進行相應,輸出結果,是構建復合鏈的基本單位。

b. 順序鏈

將基礎鏈按照順序前后組合起來,上一個基礎鏈的輸出是下一個基礎鏈的輸入,又包括以下兩種細類:

SimpleSequentialChain:單輸入/輸出。

SequentialChain:多輸入/輸出,通過輸入/輸出鍵進行指定。

c. 路由鏈

LLMRouterChain,根據(jù)輸入的內容,將其路由到不同的鏈中。


2.4. 文檔問答

給定文檔,讓LLM根據(jù)文檔的內容回答問題。

由于LLM一般一次只能處理幾千個詞,因此基于文檔的問答需要使用embedding和向量存儲技術。

2.4.1. stuff 方法

a. embeddings

所謂embedding(詞嵌入)就是將一段文本,轉化成一個能夠表征文本語義的向量,語義上相近的文本他們的向量也相似。

b. 向量存儲

一般將文本分解成一個個塊(chunks),然后將每個塊轉為embedding,最后將這些embedding存入向量數(shù)據(jù)庫中,相當于建立了索引。

c. 查詢過程

首先將查詢文本轉為embedding,然后在向量數(shù)據(jù)庫中尋找并返回與這個查詢最相似的n個查詢。

d. LLM處理

最后將這n個結果輸入LLM進行處理,獲得最后的答案。

這就是文檔問答最簡單的辦法,將所有文檔都放入上下文中,并對語音模型進行一次調用,這種方法叫stuff method。

前面都是針對相同類型的片段進行回答的方法,但是針對不同類型的片段進行相同類型的問題和回答,則需要用到下面的幾種方法。

2.4.2. 其他方法

Map_reduce方法:將每個片段和問題一起傳遞給LLM,得到各自的回答,然后使用另外一個LLM將所有單獨的回答匯總成最后的答案。可以看到每個文檔都是獨立的,有利于并行執(zhí)行,缺點是文檔與文檔之間也沒有交互。

Refine方法:當前的回答依賴于上一個文檔的回答,對于合并信息和逐步構建答案非常有用,最后的答案長度趨于更長,缺點是并行度差,需要更長的處理時間。

Map_rank方法:一種實驗性的方法,為每個文檔執(zhí)行一次LLM調用,并返回回答與評分,選擇分數(shù)最高的那個回答。這個方法,依賴于語言模型需要知道如何評分以及你關于評分的指導說明。這個方法并行度和MapReduce方法一樣。

2.5. LLM應用評估

這節(jié)主要深入介紹一些框架,以及幫助進行評估的工具,亮點是使用LLM和鏈式操作來評估其他LLM、鏈式操作或者應用程序。

一種做法是,查看數(shù)據(jù),提出示例問題,并提供正確答案以便評估,這個過程可以使用QAGenerateChain類來實現(xiàn)自動化。

另外,可以使用QAEvalChain類,來自動評估LLM對問題的回答是否是正確的,這個很重要,因為很多時候,可能正確答案跟回答的意思是一樣的,但是表述卻區(qū)別很大,無法單純使用字符串匹配或者正則來比較。

為了調試中間過程,可以將langchain.debug = True,這樣中間的提示,QA的檢索過程,輸入輸出,token的使用情況等信息都可以打印出來。

另外本節(jié)還簡單介紹了一下LangChain評估平臺,可以將上述過程持久化并在用戶界面中展示出來,另外還可以查看中間的調試信息,并且可以將生成的問答整理成新的數(shù)據(jù)集。

2.6. 代理

代理的目的,是將LLM視為一個推理引擎,你可以提供文本塊或者其他信息源給它,然后這個LLM可以利用互聯(lián)網上學到的背景知識,幫助回答問題和推理內容。

本節(jié)主要內容包括如何創(chuàng)建和使用代理,如何為其配備內在LangChain中的搜索引擎等不同類型的工具,讓代理可以與任何數(shù)據(jù)存儲,任何API和函數(shù)進行交互。

2.6.1. 預定義工具

  • llm-math:實際是個Chain,使用語言模型和計算器來解決數(shù)學問題。
  • wikipedia:維基百科工具,連接到維基百科的API,允許對維基百科進行搜索查詢并返回結果。
  • PythonREPLTool:python執(zhí)行環(huán)境,根據(jù)輸入提示,使用python進行推理,并對推理結果進行相應處理,如打印出來。

初始化代理后,代理能夠自動根據(jù)問題的類型,選擇合適的工具進行推理,開了verbose標志后,可以看到代理每一步的推理過程。

2.6.2. 自定義工具

另外,還可以將代理連接到自己的信息源、API和數(shù)據(jù),需要自定義自己的工具,操作步驟:

在自己的工具函數(shù)前加上LangChain庫中的@tool裝飾器,然后寫一個非常詳細的文檔,用來讓代理了解一些約束及如何調用該工具。

帶圖片版:https://www.cnblogs.com/harrymore/p/17547479.html

吳恩達最新ChatGPT課程《LLM應用程序開發(fā)的LangChain》中文字幕由的評論 (共 條)

分享到微博請遵守國家法律
蕲春县| 广丰县| 通许县| 遂平县| 屯门区| 石河子市| 旌德县| 上犹县| 柘荣县| 友谊县| 扶余县| 锦州市| 遂昌县| 墨竹工卡县| 安平县| 广灵县| 临颍县| 霍林郭勒市| 莎车县| 安徽省| 新晃| 庆云县| 马鞍山市| 云龙县| 遵义县| 望城县| 娄烦县| 二连浩特市| 四平市| 绍兴县| 大渡口区| 乳山市| 婺源县| 五大连池市| 丰都县| 北京市| 公主岭市| 弋阳县| 新闻| 三穗县| 安国市|