獨(dú)家 | 開始使用LangChain:幫助你構(gòu)建LLM驅(qū)動(dòng)應(yīng)用的新手教程(1)
- 可以根據(jù)為您的目的而定制的數(shù)據(jù)聊天機(jī)器人
- 與外界進(jìn)行交互的個(gè)人助理分析
- 對(duì)您的文檔或代碼進(jìn)行匯總
憑借其怪異的api和快速的工程設(shè)計(jì),LLMs正在改變我們構(gòu)建人工智能產(chǎn)品的方式。這就是為什么新的開發(fā)工具在 “LLMOpS” 一詞下隨處可見(jiàn),其中一個(gè)新工具是LangChain(https://github.com/hwchase17/langchain)。
什么是LangChain?
LangChain是一個(gè)框架,旨在通過(guò)為您提供以下內(nèi)容來(lái)幫助您更輕松地構(gòu)建LLM支持的應(yīng)用程序:
各種不同基礎(chǔ)模型的通用接口 (請(qǐng)參閱模型);
幫助您管理提示的框架 (請(qǐng)參閱提示);
以及用于LLM無(wú)法處理 (例如計(jì)算或搜索) 的長(zhǎng)期內(nèi)存 (請(qǐng)參閱內(nèi)存),外部數(shù)據(jù) (請(qǐng)參閱索引),其他LLM (請(qǐng)參閱鏈) 和其他代理的中央接口。代理)。這是哈里森·蔡斯創(chuàng)建的一個(gè)開源項(xiàng)目 (GitHub存儲(chǔ)庫(kù))。
由于LangChain功能眾多,這就是為什么我們將在本文中介紹LangChain目前的六個(gè)關(guān)鍵模塊,以使您更好地了解其功能。
安裝環(huán)境
在本教程中,您將需要安裝langchain Python軟件包,并準(zhǔn)備好使用所有相關(guān)的API密鑰。安裝LangChain在安裝langchain軟件包之前,請(qǐng)確保您的Python版本 ≥ 3.8.1且<4.0。
要安裝langchain Python包,您可以pip安裝它。
pip install langchain
在本教程中,我們使用的是0.0.147版。GitHub庫(kù)提交非?;钴S; 因此,請(qǐng)確保您擁有當(dāng)前版本。全部設(shè)置完畢后,導(dǎo)入langchain Python包。
import langchain
API keys
使用LLMs構(gòu)建應(yīng)用程序需要您要使用的某些服務(wù)的API密鑰,并且某些API是付費(fèi)的。
LLM供應(yīng)商 (必填):您首先需要使用LLM提供程序的API密鑰。我們目前正在經(jīng)歷 “AI的Linux時(shí)刻”,開發(fā)人員必須基于主要在性能和成本之間的權(quán)衡,在專有或開源基礎(chǔ)模型之間進(jìn)行選擇。
LLM提供者:專有和開源基礎(chǔ)模型 (作者的圖片,靈感來(lái)自Fiddler.ai,首次發(fā)布在W & B的博客上)
專有模型是擁有大型專家團(tuán)隊(duì)和大型AI預(yù)算的公司擁有的封閉式基礎(chǔ)模型。它們通常比開源模型更大,因此具有更好的性能,但它們也具有昂貴的api。專有模型提供商的示例是OpenAI,co:here,AI21 Labs或Anthropic。大多數(shù)可用的LangChain教程使用OpenAI,但請(qǐng)注意,OpenAI API (對(duì)于實(shí)驗(yàn)來(lái)說(shuō)并不昂貴,但它) 不是免費(fèi)的。要獲取OpenAI API密鑰,您需要一個(gè)OpenAI帳戶,然后在API密鑰下 “創(chuàng)建新的密鑰”。
import osos.environ["OPENAI_API_KEY"] = ... # insert your API_TOKEN here
開源模型通常是較小的模型,其功能比專有模型低,但比專有模型更具成本效益。開源模型的示例包括:
- BLOOM by BigScience
- LLaMA by Meta AI
- Flan-T5 by Google
- GPT-J by Eleuther AI
作為社區(qū)中心,許多開源模型都是在Hugging Face組織和托管的。要獲得Hugging Face API密鑰,您需要一個(gè)Hugging Face帳戶,并在訪問(wèn)令牌下創(chuàng)建一個(gè) “新令牌”。
import osos.environ["HUGGINGFACEHUB_API_TOKEN"] = ... # insert your API_TOKEN here
對(duì)于開源LLM,您可以免費(fèi)使用Hugging Face,但是您將被限制在性能較低的較小LLM中。
個(gè)人筆記:您可以在此處嘗試開源基礎(chǔ)模型。我嘗試使本教程僅與托管在常規(guī)帳戶(google/flan-t5-xl和sentence transformer/all-MiniLM-L6-v2) 上的Hugging Face上的開源模型一起使用。它適用于大多數(shù)示例,但是讓一些示例起作用也是一種痛苦。最后,我為OpenAI設(shè)置了一個(gè)付費(fèi)帳戶,因?yàn)長(zhǎng)angChain的大多數(shù)示例似乎都針對(duì)OpenAI的API進(jìn)行了優(yōu)化??偟膩?lái)說(shuō),為教程運(yùn)行一些實(shí)驗(yàn)花了我大約1美元。
矢量數(shù)據(jù)庫(kù) (可選):如果要使用特定的矢量數(shù)據(jù)庫(kù),例如Pinecome,Weaviate或Milvus,則需要向他們注冊(cè)以獲取API密鑰并確認(rèn)其定價(jià)。在本教程中,我們使用的是Faiss,它不需要注冊(cè)。
工具 (可選):根據(jù)您希望LLM與之交互的工具 (例如OpenWeatherMap或SerpAPI),您可能需要向它們注冊(cè)以獲取API密鑰并檢查其定價(jià)。在本教程中,我們僅使用不需要API密鑰的工具。
我們可以用LangChain做什么?
該軟件包為許多基礎(chǔ)模型提供了通用接口,可以進(jìn)行提示管理,并通過(guò)代理充當(dāng)其他組件 (如提示模板,其他LLM,外部數(shù)據(jù)和其他工具) 的中央接口。在撰寫本文時(shí),LangChain (版本0.0.147) 涵蓋了六個(gè)模塊:
- 模型: 從不同的LLMs和嵌入模型中進(jìn)行選擇
- 提示: 管理LLM
- 輸入鏈: 將LLMs與其他組件相結(jié)合
- 索引: 訪問(wèn)外部數(shù)據(jù)
- 存儲(chǔ)器: 記住以前的對(duì)話
- 代理: 訪問(wèn)其他工具
以下各節(jié)中的代碼示例是從LangChain文檔中復(fù)制和修改的。
模型: 從不同的LLM中選擇和嵌入模型
目前,許多不同的LLM正在出現(xiàn)。LangChain為各種模型提供了集成,并為所有模型提供了簡(jiǎn)化的界面。LangChain區(qū)分了三種類型的模型,它們的輸入和輸出不同:
- LLMs將字符串作為輸入 (提示),并輸出字符串 (完成)。
# Proprietary LLM from e.g. OpenAI# pip install openaifrom langchain.llms import OpenAIllm = OpenAI(model_name="text-davinci-003")
# Alternatively, open-source LLM hosted on Hugging Face# pip install huggingface_hubfrom langchain import HuggingFaceHubllm = HuggingFaceHub(repo_id = "google/flan-t5-xl")
# The LLM takes a prompt as an input and outputs a completionprompt = "Alice has a parrot. What animal is Alice's pet?"completion = llm(prompt)
LLM 模型
- 聊天模型類似于LLM。他們將聊天消息列表作為輸入,并返回聊天消息。
- 文本嵌入模型采用文本輸入并返回浮點(diǎn)數(shù) (嵌入) 列表,浮點(diǎn)數(shù)是輸入文本的數(shù)字表示形式。嵌入有助于從文本中提取信息。隨后可以使用該信息,例如,用于計(jì)算文本之間的相似性 (例如,電影摘要)。
文本嵌入模型
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。