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