经常使用LangChain和OpenAI-API启动文档剖析的综合指南 (经常使用开塞露会有什么副作用)
译者|布加迪
审校|重楼
从文档和数据中提取洞察力关于您做出理智的决策至关关键。但是在处置敏感消息时,会产生隐衷疑问。联合经常使用LangChn与API,您就可以剖析本地文档,无需上行到网上。
它们经过将数据保留在本地、经常使用嵌入和向量化启动剖析以及在您的环境中口头进程来做到这一点。OpenAI不经常使用客户经过其API提交的数据来训练模型或改良服务。
搭建环境
创立一个新的/target=_blankclass=infotextkey>Python虚构环境,这将确保没有库版本抵触。而后运转以下终端命令来装置所需的库。
pipinstalllangchainopenaienfaiss-cpupypdf
上方详细说明您将如何经常使用每个库:
装置完一切库之后,您的环境现已预备就绪。
取得OpenAIAPI密钥
为了取得OpenAIAPI密钥,进入到OpenAI平台。
而后在右上方的帐户团体资料下,点击检查API密钥,将产生API密钥页面。
点击创立新的密钥按钮。为密钥命名,点击创立新密钥。OpenAI将生成API密钥,您应该复制并保留在安保的中央。出于安保要素,您将不可经过OpenAI帐户再次检查它。假设失落了该密钥,须要生成新的密钥。
导入所需的库
为了能够经常使用装置在虚构环境中的库,您须要导入它们。
fromlangchain.document_loadersimportPyPDFLoader,TextLoaderfromlangchain.text_splitterimportCharacterTextSplitterfromlangchain.embeddings.openaiimportOpenAIEmbeddingsfromlangchain.vectorstoresimportFAISSfromlangchain.chainsimportRetrievalQAfromlangchain.llmsimportOpenAI
留意,您从LangChain导入了依赖项库,这让您可以经常使用LangChain框架的特定性能。
加载用于剖析的文档
先创立一个含有API密钥的变量。稍后,您将在代码中经常使用该变量用于身份验证。
#HardcodedAPIkeyopenai_api_key="YourAPIkey"
假设您计划与第三方共享您的代码,不倡导对API密钥启动硬编码。关于计划散发的消费级代码,则改而经常使用环境变量。
接上去,创立一个加载文档的函数。该函数应该加载PDF或文本文件。假设文档既不是PDF文件,也不是文本文件,该函数会抛出值失误。
defload_document(filename):iffilename.endswith(".pdf"):loader=PyPDFLoader(filename)documents=loader.load()eliffilename.endswith(".txt"):loader=TextLoader(filename)documents=loader.load()else:raiseValueError("Invalidfiletype")
加载文档后,创立一个CharacterTextSplitter。该宰割器将基于字符将已加载的文档分隔成更小的块。
text_splitter=CharacterTextSplitter(chunk_size=1000,chunk_overlap=30,)returntext_splitter.split_documents(documents=documents)
宰割文档可确保块的大小易于治理,仍与一些堆叠的高低文相衔接。这关于文本剖析和消息检索之类的义务十分有用。
查问文档
您须要一种方法来查问上行的文档,以便从中取得洞察力。为此,创立一个以查问字符串和检索器作为输入的函数。而后,它经常使用检索器和OpenAI言语模型的实例创立一个RetrievalQA实例。
defquery_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)
该函数经常使用创立的QA实例来运转查问并输入结果。
创立主函数
主函数将控制整个程序流。它将接受用户输入的文档文件名并加载该文档。而后为文本嵌入创立OpenAIEmbeddings实例,并基于已加载的文档和文本嵌入结构一个向量存储。将该向量存储保留到本地文件。
接上去,从本地文件加载耐久的向量存储。而后输入一个循环,用户可以在其中输入查问。主函数将这些查问与耐久化向量存储的检索器一同传递给query_pdf函数。循环将继续,直到用户输入exit。
defmain():filename=input("Enterthenameofthedocument(.pdfor.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("Typeinyourquery(type'exit'toquit):n")whilequery!="exit":query_pdf(query,persisted_vectorstore.as_retriever())query=input("Typeinyourquery(type'exit'toquit):n")
嵌入捕捉词之间的语义相关。向量是一种可以示意一段文本的方式。
这段代码经常使用OpenAIEmbeddings生成的嵌入将文档中的文本数据转换成向量。而后经常使用FAISS对这些向量启动索引,以便高效地检索和比拟相似的向量。这便于对上行的文档启动剖析。
最后,假设用户独立运转程序,经常使用__name__=="__main__"结构函数来调用主函数:
if__name__=="__main__":main()
这个运行程序是一个命令行运行程序。作为一个裁减,您可以经常使用Streamlit为该运行程序减少Web界面。
口头文件剖析
要口头文档剖析,将所要剖析的文档存储在名目所在的同一个文件夹中,而后运转该程序。它将征询所要剖析的文档的称号。输入全名,而后输入查问,以便程序剖析。
上方的截图显示了剖析PDF的结果。
上方的输入显示了剖析含有源代码的文本文件的结果。
确保所要剖析的文件是PDF或文本格局。假设您的文档驳回其余格局,可以经常使用在线工具将它们转换成PDF格局。
完整的源代码可以在代码库中取得:。
原文题目:HowtoAnalyzeDocumentsWithLangChainandtheOpenAIAPI,作者:DenisKuria
多选题:PowerPoint的超链可以链接到_______???????????
PowerPoint中超链接可做到: 本地文档,网页,电子邮件,指定路径下新建文档,以及当前幻灯片中的某一页可以链接电脑里面的文件(声音,视频等等),哪一张幻灯片,或者一个网页
Struts2的迭代标签,在迭代标签中如果访问外部的变量及在struts2的配置文件中如果在action之间传值
如果要获取不属于List里面的属性 如果action中有cid 这个属性可以考虑用EL表达式 ${cid} 把这个值放在你要放的地方如果想要在两个action之间传值 可以考虑用<result type=chain><param>a2</param><param>/</param>/result> 这个a2是另外你要传递的配置文件中action的name属性还有 前面request里面的值可以被后面的action取到还有一种就是重定向了 <action method=dy><result type=redirect >?cid=${fcid}</result></action>根据你的需求 你可以试试
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。