当前位置:   article > 正文

Elasticsearch:使用 OpenAI、LangChain 和 Streamlit 的基于 LLM 的 PDF 摘要器和 Q/A 应用程序

Elasticsearch:使用 OpenAI、LangChain 和 Streamlit 的基于 LLM 的 PDF 摘要器和 Q/A 应用程序

嘿! 您是否曾经感觉自己被淹没在信息的海洋中? 有这么多的书要读,而时间却这么少,很容易就会超负荷,对吧? 但猜猜怎么了? 你可以使用大型语言模型创建自定义聊天机器人,该模型可以帮助您总结 pdf 并根据你上传的 pdf 回答你的问题。 拥有 PDF 摘要生成器就像拥有一个超级聪明的伙伴,他可以阅读那些又长又无聊的文档,并为你提供所需的内容。 不再需要翻阅研究论文或任何报告。 有大量工具可以帮助你总结文档,有些需要付费,有些是免费的。 但是为什么不尝试创建你的 PDF 摘要应用程序并尝试一下最适合你的呢?

在这篇博文中,我将向您展示如何使用 Open AI、Lang chain 和 Stream lit 构建端到端应用程序。 那么,让我们开始吧!

它是如何工作的?

在这个项目中,我们将使用以下内容:

Open AI

Open AI 是一个人工智能研究组织,专注于开发先进的人工智能技术,造福人类。 它的成立是为了负责任地、有益地推进人工智能。 OpenAI 在人工智能的各个领域进行研究,包括自然语言处理、强化学习、机器人技术等。 其主要目标之一是开发能够以类人智能执行各种任务的人工智能系统。 OpenAI 的著名项目和成就之一是语言模型。 OpenAI 开发了大规模语言模型,例如 GPT(生成式预训练转换器)系列,它可以根据提供给它们的输入生成类似人类的文本。 这些模型在自然语言理解、文本生成翻译等领域都有应用。

创建 OpenAI 密钥

要生成 OpenAI API 密钥,请访问网站 https://openai.com/,登录,然后从标记为 “API Keys” 的部分生成一个对每个人来说都是唯一的 API 密钥。 一旦你的 API 密钥生成,它将显示在屏幕上。 复制 API 密钥并安全存储。 将您的 API 密钥视为密码,并避免公开共享。 你现在可以使用 OpenAI API 密钥访问 OpenAI API 并将其集成到你的应用程序、项目或研究中。

生成 Open AI 秘密 API 密钥

LangChain

LangChain 是一个用于构建由语言模型支持的上下文感知推理应用程序的框架。 它使应用程序能够根据上下文理解并做出响应,从而增强决策能力。 LangChain 提供工具、库和预构建组件,用于创建复杂的基于文本的应用程序,包括聊天机器人、数据分析和检索增强生成任务。 其主要目的是使开发人员能够在其应用程序中有效地利用语言模型,使他们能够推理、响应以及与用户或数据进行智能交互。

Streamlit

Streamlit 是一个开源 Python 库,用于为机器学习和数据科学项目构建 Web 应用程序。 它允许开发人员直接直观地编写代码,从而简化了创建交互式 Web 应用程序的过程。 借助 Streamlit,开发人员可以直接从 Python 脚本创建交互式 Web 应用程序,而无需编写 HTML、CSS 或 Javascript 代码。 它提供了易于使用的组件,用于创建交互式小部件、可视化和数据显示。 在此项目中,我们使用 Streamlit 来实现简单的用户界面,你可以在本博客末尾看到。

运行 streamlit 应用可以使用命令:streamlit run app.py

前提条件

安装 Elasticsearch 及 Kibana

 如果你还没有安装好自己的 Elasticsearch 及 Kibana,那么请参考一下的文章来进行安装:

在安装的时候,请选择 Elastic Stack 8.x 进行安装。在安装的时候,我们可以看到如下的安装信息:

为了方便大家学习,我在本次的演示中使用 Elastic Stack 8.12 来进行展示。

安装 Python 依赖包

pip3 install langchain OpenAI PyPDF2 python-dotenv streamlit elasticsearch streamlit-extras tiktoken langchain-community

你可以使用 pip install 简单地安装所有这些库。

  • Langchain:语言链库,可帮助你完成总结文本、回答问题和生成新句子等操作。
  • OpenAI:这有助于与 OpenAI 提供的语言模型进行交互
  • PyPDF2:处理 PDF 文件。 启用读取和操作 PDF 文档等任务。
  • Python-dotenv:你可以将 API 密钥或数据库凭据等敏感信息存储在名为 .env 的特殊文件中,而不是将它们硬编码到代码中。 这有助于确保敏感信息的安全,并使管理不同环境(如开发、测试和生产)变得更加容易,而无需更改代码。
  • Streamlit:用于创建交互式 Web 应用程序的框架。
  • elasticsearch:- 用于密集向量的相似性搜索和聚类的高效库。
  • Streamlit-extras:一个扩展包,为 Streamlit 添加额外的功能,并提供额外的工具、小部件和功能来增强 Streamlit 应用程序的功能。

拷贝 Elasticsearch 证书到当前的目录中

  1. $ pwd
  2. /Users/liuxg/python/PDF-Summarizer-End-to-End-Project
  3. $ cp ~/elastic/elasticsearch-8.12.0/config/certs/http_ca.crt .
  4. $ ls http_ca.crt
  5. http_ca.crt

创建环境变量文件

我们在自己的项目根目录下创建如下的 .env 文件:

.env

  1. ES_USER="elastic"
  2. ES_PASSWORD="q2rqAIphl-fx9ndQ36CO"
  3. ES_ENDPOINT="localhost"
  4. OPENAI_API_KEY="YourOpenAIkey"

请记得根据自己的 Elasticsearch 配置及 OpenAI key 进行相应的修改。

创建应用

我们在当前的目录下创建一个叫做 app.py 的文件。

导入依赖项

  1. from dotenv import load_dotenv
  2. import streamlit as st
  3. from PyPDF2 import PdfReader
  4. from streamlit_extras.add_vertical_space import add_vertical_space
  5. from langchain.text_splitter import CharacterTextSplitter
  6. from langchain.embeddings.openai import OpenAIEmbeddings
  7. from elasticsearch import Elasticsearch, helpers
  8. from langchain_community.vectorstores import ElasticsearchStore
  9. from langchain.chains.question_answering import load_qa_chain
  10. from langchain_community.llms import OpenAI
  11. from langchain_community.callbacks import get_openai_callback
  12. import os

创建 SideBar

  1. # Sidebar contents
  2. with st.sidebar:
  3. st.title('
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/242392
    推荐阅读
    相关标签