日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

譯者 | 布加迪

審校 | 重樓

從文檔和數(shù)據(jù)中提取洞察力對(duì)于您做出明智的決策至關(guān)重要。然而在處理敏感信息時(shí),會(huì)出現(xiàn)隱私問(wèn)題。結(jié)合使用LangChAIn與OpenAI API,您就可以分析本地文檔,無(wú)需上傳到網(wǎng)上。

它們通過(guò)將數(shù)據(jù)保存在本地、使用嵌入和向量化進(jìn)行分析以及在您的環(huán)境中執(zhí)行進(jìn)程來(lái)做到這一點(diǎn)。OpenAI不使用客戶(hù)通過(guò)其API提交的數(shù)據(jù)來(lái)訓(xùn)練模型或改進(jìn)服務(wù)。

搭建環(huán)境

創(chuàng)建一個(gè)新的Python/ target=_blank class=infotextkey>Python虛擬環(huán)境,這將確保沒(méi)有庫(kù)版本沖突。然后運(yùn)行以下終端命令來(lái)安裝所需的庫(kù)。

pip install langchain openai TikToken faiss-cpu pypdf

下面詳細(xì)說(shuō)明您將如何使用每個(gè)庫(kù):

  • LangChain:您將用它來(lái)創(chuàng)建和管理用于文本處理和分析的語(yǔ)言鏈。它將提供用于文檔加載、文本分割、嵌入和向量存儲(chǔ)的模塊。
  • OpenAI:您將用它來(lái)運(yùn)行查詢(xún),并從語(yǔ)言模型獲取結(jié)果。
  • tiktoken:您將用它來(lái)計(jì)算給定文本中token(文本單位)的數(shù)量。這是為了在與基于您使用的token數(shù)量收費(fèi)的OpenAI API交互時(shí)跟蹤token計(jì)數(shù)。
  • FAISS:您將用它來(lái)創(chuàng)建和管理向量存儲(chǔ),允許基于嵌入快速檢索相似的向量。
  • PyPDF:這個(gè)庫(kù)從PDF提取文本。它有助于加載PDF文件并提取其文本,供進(jìn)一步處理。

安裝完所有庫(kù)之后,您的環(huán)境現(xiàn)已準(zhǔn)備就緒。

獲得OpenAI API密鑰

當(dāng)您向OpenAI API發(fā)出請(qǐng)求時(shí),需要添加API密鑰作為請(qǐng)求的一部分。該密鑰允許API提供者驗(yàn)證請(qǐng)求是否來(lái)自合法來(lái)源,以及您是否擁有訪(fǎng)問(wèn)其功能所需的權(quán)限。

為了獲得OpenAI API密鑰,進(jìn)入到OpenAI平臺(tái)。

如何使用LangChain和OpenAI API分析文檔?

然后在右上方的帳戶(hù)個(gè)人資料下,點(diǎn)擊“查看API密鑰”,將出現(xiàn)API密鑰頁(yè)面。

如何使用LangChain和OpenAI API分析文檔?

點(diǎn)擊“創(chuàng)建新的密鑰”按鈕。為密鑰命名,點(diǎn)擊“創(chuàng)建新密鑰”。OpenAI將生成API密鑰,您應(yīng)該復(fù)制并保存在安全的地方。出于安全原因,您將無(wú)法通過(guò)OpenAI帳戶(hù)再次查看它。如果丟失了該密鑰,需要生成新的密鑰。

導(dǎo)入所需的庫(kù)

為了能夠使用安裝在虛擬環(huán)境中的庫(kù),您需要導(dǎo)入它們。

from langchain.document_loaders import PyPDFLoader, TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

注意,您從LangChain導(dǎo)入了依賴(lài)項(xiàng)庫(kù),這讓您可以使用LangChain框架的特定功能。

加載用于分析的文檔

先創(chuàng)建一個(gè)含有API密鑰的變量。稍后,您將在代碼中使用該變量用于身份驗(yàn)證。

# Hardcoded API key
openai_api_key = "Your API key"

如果您打算與第三方共享您的代碼,不建議對(duì)API密鑰進(jìn)行硬編碼。對(duì)于打算分發(fā)的生產(chǎn)級(jí)代碼,則改而使用環(huán)境變量。

接下來(lái),創(chuàng)建一個(gè)加載文檔的函數(shù)。該函數(shù)應(yīng)該加載PDF或文本文件。如果文檔既不是PDF文件,也不是文本文件,該函數(shù)會(huì)拋出值錯(cuò)誤。

def load_document(filename):
    if filename.endswith(".pdf"):
 loader = PyPDFLoader(filename)
 documents = loader.load()
 elif filename.endswith(".txt"):
 loader = TextLoader(filename)
 documents = loader.load()
 else:
 raise ValueError("Invalid file type")

加載文檔后,創(chuàng)建一個(gè)CharacterTextSplitter。該分割器將基于字符將已加載的文檔分隔成更小的塊。

 

text_splitter = CharacterTextSplitter(chunk_size=1000, 
   chunk_overlap=30, separator="n")

   return text_splitter.split_documents(documents=documents)

分割文檔可確保塊的大小易于管理,仍與一些重疊的上下文相連接。這對(duì)于文本分析和信息檢索之類(lèi)的任務(wù)非常有用。

查詢(xún)文檔

您需要一種方法來(lái)查詢(xún)上傳的文檔,以便從中獲得洞察力。為此,創(chuàng)建一個(gè)以查詢(xún)字符串和檢索器作為輸入的函數(shù)。然后,它使用檢索器和OpenAI語(yǔ)言模型的實(shí)例創(chuàng)建一個(gè)RetrievalQA實(shí)例。

def query_pdf(query, retriever):
  qa = RetrievalQA.from_chain_type(llm=OpenAI(openai_api_key=openai_api_key),
   chain_type="stuff", retriever=retriever)
  result = qa.run(query)
 print(result)

該函數(shù)使用創(chuàng)建的QA實(shí)例來(lái)運(yùn)行查詢(xún)并輸出結(jié)果。

創(chuàng)建主函數(shù)

主函數(shù)將控制整個(gè)程序流。它將接受用戶(hù)輸入的文檔文件名并加載該文檔。然后為文本嵌入創(chuàng)建OpenAIEmbeddings實(shí)例,并基于已加載的文檔和文本嵌入構(gòu)造一個(gè)向量存儲(chǔ)。將該向量存儲(chǔ)保存到本地文件。

接下來(lái),從本地文件加載持久的向量存儲(chǔ)。然后輸入一個(gè)循環(huán),用戶(hù)可以在其中輸入查詢(xún)。主函數(shù)將這些查詢(xún)與持久化向量存儲(chǔ)的檢索器一起傳遞給query_pdf函數(shù)。循環(huán)將繼續(xù),直到用戶(hù)輸入“exit”。

def main():
   filename = input("Enter the name of the document (.pdf or .txt):n")
  docs = load_document(filename)
  embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
  vectorstore = FAISS.from_documents(docs, embeddings)
   vectorstore.save_local("faiss_index_constitution")
  persisted_vectorstore = FAISS.load_local("faiss_index_constitution", embeddings)
  query = input("Type in your query (type 'exit' to quit):n")

  while query != "exit":
  query_pdf(query, persisted_vectorstore.as_retriever())
  query = input("Type in your query (type 'exit' to quit):n")

嵌入捕獲詞之間的語(yǔ)義關(guān)系。向量是一種可以表示一段文本的形式。

這段代碼使用OpenAIEmbeddings生成的嵌入將文檔中的文本數(shù)據(jù)轉(zhuǎn)換成向量。然后使用FAISS對(duì)這些向量進(jìn)行索引,以便高效地檢索和比較相似的向量。這便于對(duì)上傳的文檔進(jìn)行分析。

最后,如果用戶(hù)獨(dú)立運(yùn)行程序,使用__name__ == "__main__"構(gòu)造函數(shù)來(lái)調(diào)用主函數(shù):

if __name__ == "__main__":
   main()

這個(gè)應(yīng)用程序是一個(gè)命令行應(yīng)用程序。作為一個(gè)擴(kuò)展,您可以使用Streamlit為該應(yīng)用程序添加Web界面。

執(zhí)行文件分析

要執(zhí)行文檔分析,將所要分析的文檔存儲(chǔ)在項(xiàng)目所在的同一個(gè)文件夾中,然后運(yùn)行該程序。它將詢(xún)問(wèn)所要分析的文檔的名稱(chēng)。輸入全名,然后輸入查詢(xún),以便程序分析。

下面的截圖顯示了分析PDF的結(jié)果。

如何使用LangChain和OpenAI API分析文檔?

下面的輸出顯示了分析含有源代碼的文本文件的結(jié)果。

如何使用LangChain和OpenAI API分析文檔?

確保所要分析的文件是PDF或文本格式。如果您的文檔采用其他格式,可以使用在線(xiàn)工具將它們轉(zhuǎn)換成PDF格式。

完整的源代碼可以在Github代碼庫(kù)中獲得:https://github.com/makeuseofcode/Document-analysis-using-LangChain-and-OpenAI。

原文標(biāo)題:How to Analyze Documents With LangChain and the OpenAI API,作者:Denis Kuria

分享到:
標(biāo)簽:API
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定