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