当前位置:首页 > 数码 > 经常使用LangChain和OpenAI-API启动文档剖析的综合指南 (经常使用开塞露会有什么副作用)

经常使用LangChain和OpenAI-API启动文档剖析的综合指南 (经常使用开塞露会有什么副作用)

admin7个月前 (05-10)数码40

译者|布加迪

审校|重楼

从文档和数据中提取洞察力关于您做出理智的决策至关关键。但是在处置敏感消息时,会产生隐衷疑问。联合经常使用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)
API启动文档剖析的综合指南

宰割文档可确保块的大小易于治理,仍与一些堆叠的高低文相衔接。这关于文本剖析和消息检索之类的义务十分有用。

查问文档

您须要一种方法来查问上行的文档,以便从中取得洞察力。为此,创立一个以查问字符串和检索器作为输入的函数。而后,它经常使用检索器和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>根据你的需求 你可以试试

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: API

“经常使用LangChain和OpenAI-API启动文档剖析的综合指南 (经常使用开塞露会有什么副作用)” 的相关文章

API-性能的全面指南-优化 (api性能测试工具)

API-性能的全面指南-优化 (api性能测试工具)

API 性能优化指南 优化 API 性能对于提供流畅、响应迅速的用户体验至关重要。以下是一些行之有效的技巧,可帮助您显著提高 API 性能: 1. 分页 当结果集过大时,分页是优化方法。它涉及...

REST-的十个最佳实践-API-构建强大 (rest的过去形态)

REST-的十个最佳实践-API-构建强大 (rest的过去形态)

在项目开发中,REST 风格的 API 设计非常普遍。以下 10 条最佳实践旨在为你的 REST API 提供灵感和指导。 1. 使用具体且有意义的资源名称 选择准确表示所代表实体的资...

API恳求重试的8种方法-哪种最适宜你的运行

API恳求重试的8种方法-哪种最适宜你的运行

重试机制成功8种方式 1.循环重试 这是最繁难也最间接的一种方式。在恳求接口的代码块中参与循环,假设恳求失败则继续恳求,直到恳求成功或到达最大重试次数。 示例代码: intre...

API-调用-设计安全的-最佳实践和考虑因素 (api调用工程师)

API-调用-设计安全的-最佳实践和考虑因素 (api调用工程师)

在设计网站或平台时,我们经常需要向用户开放 API 访问。这允许用户以编程方式调用某些功能。例如: 允许用户通过 API 访问和管理其账户数据 允许开发人员使用我们的 AP...

网关技术选型-API-让你的应用程序飞起-五大 (网关术语解释)

网关技术选型-API-让你的应用程序飞起-五大 (网关术语解释)

网关,就像一扇门,连接着两个不同的网络。它的作用是隔离网络,控制流量,并保护内部网络的安全。 网关与网桥的区别在于,网桥仅转发信息,而网关可能对数据进行封装。 网关的作用 网关的...

在零信任世界中实现API安全性的全面指南 (零信任 sase)

在零信任世界中实现API安全性的全面指南 (零信任 sase)

API 安全性与零信任:融合原则和实践 引言 随着现代网络格局的不断演变,零信任架构 (ZTA) 已从一种抽象概念转变为许多企业组织积极实施的安全战略。在许多 ZTA 实施计划中,常常忽视对 A...

API-如何设计-终极指南 (api如何获取)

API-如何设计-终极指南 (api如何获取)

在前后端分离的设计中,后端需要提供 WebAPI 给前端使用。如果是一个平台级的产品,还有可能需要将平台的公共 API 提供给第三方系统使用,这些都要考虑到 API 的设计。 常见问题 问...