LLM大模型实战项目--基于ChatGLM2的小书虫文档阅读助手

本文介绍如此从零开始编写一个基于ChatGLM2的文档阅读助手

一、项目介绍

二、获取API接口

三、环境配置

四、代码实现

五、效果展示


一、项目介绍

       小书虫📚 文档阅读助手是一个基于百度千帆大模型平台的Web应用程序,核心是清华大学训练的ChatGLM2大模型。旨在为用户提供一个高效、直观且易于使用的文档处理平台。该工具的核心功能是自动化阅读和分析用户上传的PDF文档,通过先进的文本处理技术,快速提取文档中的关键信息和数据。

        小书虫📚 能够显著提高用户处理文档的效率,尤其是在面对大量阅读材料时。用户不再需要花费大量时间手动翻阅文档,而是可以依赖文档阅读助手来快速获取所需信息。此外,该工具还具备交互式对话功能,允许用户通过提问来获得更加个性化的内容摘要和详细分析。

        在设计上,小书虫📚文档阅读助手注重用户体验,采用响应式布局确保在各种设备上都能提供一致的访问体验。同时,界面简洁、直观,易于新用户快速上手。安全性也是设计的重点,确保用户上传的文档在处理过程中的隐私和安全。

        文档阅读助手的应用场景非常广泛,无论是学术研究、商业分析还是日常学习和工作,它都能提供有力的支持。通过辅助用户进行知识管理和决策制定,文档阅读助手成为了一个强大的助手,帮助用户在信息爆炸的时代中保持信息处理的高效率和质量。

二、获取API接口

 注册百度云

        搜索百度云,打开官网注册,充值一点点大米(收费很低,大概生成几个句子花费一毛钱)

注册之后一定要完成个人认证,不然无法使用。

获取API接口

完成注册与认证之后,打开千帆大模型平台,点开引用接入,应用名称起个名字,描述随便打几个字就行。

获取API Key 和Secret Key(注意保密)

完成之后,大功告成。

三、环境配置

在Anaconda Prompt中创建一个大模型的环境,然后下载库。依次运行以下代码。

 
conda create -n llm python=3.10
#创建llm

conda activate llm
#激活llm

pip install langchain
pip install qianfan
pip install PyPDF2
pip install streamlit
pip install faiss-cpu

#下载

如果在后续的运行中出现缺失包的报错,那就缺的包pip install 下载一下就行啦,你是一个优秀的程序员,你一定可以的!!!!!!

四、代码实现

打开pycharm,新建一个py文档,输入如下代码。

中间的api和密码输入你自己的,刚才在第二节获取到的。

from PyPDF2 import PdfReader # 读取pdf文件
from langchain.text_splitter import CharacterTextSplitter # 文本分割器
from langchain_community.vectorstores import FAISS # 向量库
from langchain_community.llms import QianfanLLMEndpoint # 千帆大模型平台库
from langchain.llms import OpenAI # openai模型库
import streamlit as st # 搭建web界面
from langchain.chains import ConversationalRetrievalChain # 对话检索链
import os
from langchain.embeddings.huggingface import HuggingFaceEmbeddings #向量模型
from langchain_community.embeddings import QianfanEmbeddingsEndpoint
# from project2.API_Config import *
os.environ["QIANFAN_AK"] = "xxxxxxxxxxxxxxxxxx7"
os.environ["QIANFAN_SK"] ="TxxxxxxxxxxxxxxxxxxxxxI"

# 使用国外OPENAI的模型,需要导入API-KEY(需要科学上网)
# os.environ[ "OPENAI_API_KEY" ] = OPENAI_AK
# 使用国内百度千帆平台的模型,需要导入API-KEY和SERECT-KEY
# 设置web页面:比如标题、描述功能

st.title("小书虫📚文档阅读助手")
st.write("别焦虑,请上传一个pdf文档,我来帮您阅读分析.")
# 设置上传pdf文件的功能
uploaded_file = st.file_uploader("选择一个pdf文档", type="pdf")

if uploaded_file:
# 读取pdf文件
    doc_reader = PdfReader(uploaded_file)
# 从pdf中提取文档
    raw_text = ""
    for i, page in enumerate(doc_reader.pages):
        text = page.extract_text()
        if text:
            raw_text += text
    #将文本切分成小的模块
    # print(raw_text)
    # print('*'*80)
    text_splitter = CharacterTextSplitter(separator="。",chunk_size=100, chunk_overlap=10)

    texts = text_splitter.split_text(raw_text)
    # print(texts)
    # print(f'len(texts)-->{len(texts[0])}')
    # print('*'*80)
    # embeddings模型
    # EMBEDDING_MODEL = "/Users/ligang/PycharmProjects/llm/langchain_apply/Knowledge_QA/moka-ai/m3e-base"
    # embeddings = HuggingFaceEmbeddings(model_name=EMBEDDING_MODEL)
    embeddings = QianfanEmbeddingsEndpoint()
    # 创建文档搜索
    docsearch = FAISS.from_texts(texts, embeddings)
    # 创建对话链

    qa = ConversationalRetrievalChain.from_llm(
                        llm=QianfanLLMEndpoint(model='ChatGLM2-6B-32K'), # llm=OpenAI(model='gpt-3.5-turbo'),
                        retriever=docsearch.as_retriever(),
                        return_source_documents=True, )
                        # 初始化聊天记录列表
    chat_history = []
                        # 获取用户的查询
    query = st.text_input("请给出你的问题")
    #添加一个生成按钮
    generate_button = st.button("生成答案")
    if generate_button and query:
        with st.spinner("答案生成中..."):
        # 将问题以及历史对话记录传入对话链获得模型输出结果
            result = qa({"question": query, "chat_history": chat_history})
            answer = result["answer"]
            source_documents = result['source_documents']
            #将答案和source_documents合并为单个响应(输出)
            response = { "answer": answer, "source_documents": source_documents}
            st.write("response:", response)


#运行这个文件在终端运行以下命令
#streamlit run new_demo.py

注意!!!!!!!!!

不要直接点击运行,打开Pycharm的终端,

激活llm环境

conda activate llm

然后进入这个文件夹xxx

cd xxx

 输入以下代码运行


streamlit run new_demo.py

        这段代码是一个利用Streamlit框架和Langchain库构建的文档阅读助手的示例。它结合了PDF文件读取、文本分割、向量搜索和对话生成等功能,提供了一个完整的文档分析和交互式问答系统。以下是对代码的简要介绍:

1. **导入依赖**:代码首先导入了必要的库和模块,包括PDF文件读取、文本分割、向量存储、语言模型和Streamlit界面构建等。

2. **环境配置**:设置了使用百度千帆平台模型所需的API密钥和安全密钥。如果使用OpenAI模型,需要配置相应的API密钥。

3. **Web界面设置**:使用Streamlit创建了一个标题为"小书虫📚文档阅读助手"的Web页面,并提供了一个文本输入框让用户上传PDF文件。

4. **PDF文件处理**:当用户上传PDF文件后,使用`PyPDF2`库读取文件内容,并将其转换为纯文本。

5. **文本分割**:使用`CharacterTextSplitter`将文本分割成小块,以便进行后续处理。

6. **向量模型和文档搜索**:使用百度千帆平台的向量模型`QianfanEmbeddingsEndpoint`将文本转换为向量,然后使用FAISS创建一个向量搜索系统。

7. **对话检索链**:构建了一个基于`ConversationalRetrievalChain`的对话生成系统,该系统结合了语言模型和文档检索器来生成回答。

8. **用户交互**:提供了一个文本输入框让用户提出问题,并有一个按钮触发答案生成过程。

9. **答案生成与展示**:当用户点击生成按钮并输入问题后,系统会调用对话检索链生成答案,并将答案和相关文档展示给用户。

10. **运行说明**:提供了在终端运行该脚本的命令。

这个项目的意义在于提供了一个自动化的文档分析和问答系统,可以帮助用户快速从大量文档中提取信息,并以对话的形式回答问题,极大地提高了信息处理的效率和便捷性。同时,它也展示了如何将多种技术(如PDF处理、文本分割、向量搜索和语言模型)结合起来,构建一个功能丰富的Web应用。
 

五、效果展示

输入文档,提出问题,获得结果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哥兜兜有糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值