怎么在大模型之上構(gòu)建應(yīng)用?構(gòu)建人工智能上層應(yīng)用的框架——langchain 原創(chuàng)
“ langchain,在大模型之上構(gòu)建應(yīng)用的腳手架”
在大模型之上構(gòu)建應(yīng)用需要很多的步驟,比如文檔加載,數(shù)據(jù)庫(kù)讀取,大模型加載,以及各個(gè)環(huán)節(jié)的連接等。
因此,就有了langchain這個(gè)開發(fā)框架,它的功能就是把大模型開發(fā)過(guò)程中需要的常見問(wèn)題整合在一塊,方便開發(fā)者。
當(dāng)然,不使用langchain是否能構(gòu)建上層應(yīng)用?
答案是可以,但會(huì)很麻煩。
langchain官網(wǎng)地址:
https://www.langchain.com/
01、什么是langchain?
簡(jiǎn)單來(lái)說(shuō),langchain是一款開發(fā)框架,它的作用就是簡(jiǎn)化開發(fā)者的開發(fā)流程,讓開發(fā)者能夠把精力集中在具體的業(yè)務(wù)中,而不是一大堆繁雜的準(zhǔn)備工作中。
舉例來(lái)說(shuō),構(gòu)建一個(gè)人工智能的應(yīng)用,可能既需要文字生成,又需要圖片處理,還需要進(jìn)行分類等;這時(shí)一個(gè)大模型可能無(wú)法同時(shí)滿足這幾個(gè)要求。
因此,如果要同時(shí)調(diào)用多個(gè)大模型的功能,這時(shí)每一個(gè)大模型都需要接口調(diào)用處理等。
比如,在大模型的加載中就有第三方服務(wù)比如chatGPT,通義千問(wèn)等;還有開源模型的加載,比如huggingface上的開源模型,還有一些本地大模型服務(wù)部署的框架如ollama/gpt4all/llstudio等,還包括自己開發(fā)的大模型框架,如使用pytorch,tensorflow開發(fā)的模型。
不同的模型具有不同的加載方式,如果全部自己手動(dòng)開發(fā),那么將會(huì)耽誤大量的時(shí)間,而且還可能存在各種問(wèn)題。
再加上當(dāng)前大模型+知識(shí)庫(kù)的爆火,有知識(shí)庫(kù)給大模型做資料庫(kù),這時(shí)就需要把知識(shí)庫(kù)集成到應(yīng)用中。就一個(gè)知識(shí)庫(kù)就涉及到文檔加載,向量數(shù)據(jù)庫(kù),資料存儲(chǔ)與搜索等多個(gè)功能。
這些功能很重要,但它們都屬于具體業(yè)務(wù)的支撐技術(shù),這樣就會(huì)導(dǎo)致開發(fā)人員需要大量的時(shí)間和精力來(lái)處理這些邊緣又重要的任務(wù)。
因此langchain就出現(xiàn)了,langchain封裝了很多技術(shù)細(xì)節(jié),開發(fā)者只需要按照它的要求進(jìn)行簡(jiǎn)單的調(diào)用就可以完成以上功能,大大簡(jiǎn)化了開發(fā)人員的流程。
02、langchain的核心功能模塊
- 模型(model i/o)
模型模塊的功能主要就是各種模型的加載,由langchain官網(wǎng)提供了多種模型的加載包,比如通過(guò)網(wǎng)絡(luò)調(diào)用openAI的接口,調(diào)用huggingface接口和自定義模型接口等。
- 提示(prompt)
提示的作用就是prompt工程,因?yàn)楫?dāng)前的大模型還不夠智能,所以良好的提示詞會(huì)獲得更好的回應(yīng)。因此,就誕生了提示詞工程,其作用就是更好的提問(wèn)。
- 索引(index)?
索引模塊的作用主要用來(lái)加載外部文檔,比如知識(shí)庫(kù),搜索引擎等。此模塊可以從外部網(wǎng)絡(luò)中加載文檔并輸入到大模型中,以助于可以讓我們得到更好的處理結(jié)果;文檔格式也是多種多樣,比如txt,word,pdf,數(shù)據(jù)庫(kù)等。
- 內(nèi)存(memory)
這里內(nèi)存的作用是用來(lái)記錄歷史記錄,在大模型的交互中大模型本身沒(méi)用記錄歷史提問(wèn)的功能,所以需要自己做歷史記錄,然后再次訪問(wèn)的時(shí)候,把歷史記錄一塊帶著。
- 鏈(chain)
鏈?zhǔn)莑angchain中的核心模塊,其作用是把多個(gè)步驟串成一條調(diào)用鏈,比如先獲取用戶輸入之后,先調(diào)用知識(shí)庫(kù)獲取資料,在調(diào)用文本生成模型生成文本,再調(diào)用圖片生成功能生成圖片等。
鏈就可以把上述功能給串起來(lái),簡(jiǎn)化操作,即把上層的輸出作為下層的輸入。
- 代理(agent)
在應(yīng)用的構(gòu)建中可能會(huì)用到很多第三方的功能或插件,比如需要搜索功能就要調(diào)用谷歌或百度的搜索接口,需要控制機(jī)械手臂完成動(dòng)作也需要調(diào)用其接口。
而這就是代理模塊的作用,也叫做AI agent,作用相當(dāng)于大模型的手和腳,也是大模型與工業(yè)領(lǐng)域結(jié)合的方向。
本文轉(zhuǎn)載自公眾號(hào)AI探索時(shí)代 作者:DFires
原文鏈接:??https://mp.weixin.qq.com/s/kwS3Bk8bY-Xttf6MDIXFvQ??
