用通义Qwen大模型和Streamlit构建 ChatPDF 应用(附代码)

本文涉及的产品
视觉智能开放平台,分割抠图1万点
NLP自然语言处理_高级版,每接口累计50万次
视觉智能开放平台,图像资源包5000点
简介: 本文介绍了如何利用通义千问Qwen大模型构建一个本地ChatPDF AI助手,该助手允许用户上传PDF并与之对话,确保文档隐私安全。项目通过阿里云百炼平台获取Qwen-Long模型,支持多种文档格式。现实现步骤包括导入库、加载环境变量、初始化客户端、编码器、页面与对话管理、文件上传、选择模型、获取AI回答及计算费用,主函数整合这些功能,提供交互体验。

大家好!今天我要和大家分享的是如何使用通义千问 Qwen 大模型来构建一个本地的 ChatPDF AI助手。这个助手可以让你上传 PDF 文件,然后基于文件内容和它进行对话,非常方便和有趣,我们不用担心文档数据泄露,个人隐私也可以得到保护。通过部署到云服务器,我们也可以构建一个网站应用。演示如下:
iShot_2024-06-10_21.15.51.png

接下来,我会一步一步地带你了解这个项目的实现过程,希望大家能喜欢。

我们需要通过阿里云百炼平台获取大模型API,因为我要构建一个文档对话应用,所以这里我选用的是Qwen-Long这个大模型,Qwen-Long是在通义千问针对超长上下文处理场景的大语言模型,支持最长1000万tokens(约1500万字或1.5万页文档)的超长上下文对话。配合同步上线的文档服务,可支持word、pdf、markdown、epub、mobi等多种文档格式的解析和对话。

首先,我们需要导入一些必要的库和模块。我们主要会用到openai、streamlit和 tiktoken。其中,tiktoken 是用来处理 token 编码的,这样可以帮我们计算对话的费用。
iShot_2024-06-09_20.55.58.png

接下来,我们需要加载环境变量。通过 dotenv 模块,我们可以从 .env 文件中加载配置。只要把 .env 文件放在项目的根目录中就可以了。
iShot_2024-06-09_20.57.14.png

然后,我们需要初始化客户端。只需获取通义千问大模型的 API 密钥,并用它创建一个客户端实例。如果密钥没有设置好,程序会提醒你。
iShot_2024-06-09_20.58.14.png

接下来,我们初始化 tiktoken 的编码器,这个小工具可以帮我们计算消息的 token 数量。
然后我们来定义一些初始化页面和对话消息的函数。init_page 函数设置页面和侧边栏的标题,而 init_messages 函数用来初始化对话消息。
iShot_2024-06-09_20.58.58.png

我们还需要一个上传 PDF 文件的函数 upload_pdf。这个函数会把文件上传到 OpenAI 的文件服务,并返回文件的 ID。
然后,我们定义一个选择语言模型的函数 select_llm,从 Streamlit 的侧边栏读取用户选择的模型名称。
iShot_2024-06-09_21.00.15.png

接下来是获取 AI 回答的函数 get_answer。这个函数接受模型名称、消息列表和文件 ID 作为参数。首先添加包含文件 ID 的系统消息,然后获取用户的实际问题,调用 OpenAI 的聊天完成接口获取回答,并返回回答内容。
我们还需要一个计算对话费用的函数 calculate_cost。这个函数会计算消息列表中所有消息的 token 数量,然后根据每千个 token 的价格计算总费用。这样你就能知道自己花了多少钱。
iShot_2024-06-09_21.01.24.png

最后,我们来看看主函数 main。这个函数会初始化页面和对话消息,处理文件上传,获取用户输入,并显示对话历史和费用。具体流程是先初始化页面,然后选择模型,上传文件,初始化对话消息,获取用户输入,调用 AI 获取回答,计算费用,并显示在页面上。

怎么样?是不是很有意思?你也可以在本地部署一个自己的ChatPDF AI 助手,轻松地和 PDF 文件内容进行对话,再也不用害怕文档数据泄漏,快来动手试试构建吧!

目录
相关文章
|
1月前
|
自然语言处理 监控 并行计算
Qwen2大模型微调入门实战(完整代码)
该教程介绍了如何使用Qwen2,一个由阿里云通义实验室研发的开源大语言模型,进行指令微调以实现文本分类。微调是通过在(指令,输出)数据集上训练来改善LLMs理解人类指令的能力。教程中,使用Qwen2-1.5B-Instruct模型在zh_cls_fudan_news数据集上进行微调,并借助SwanLab进行监控和可视化。环境要求Python 3.8+和英伟达显卡。步骤包括安装所需库、准备数据、加载模型、配置训练可视化工具及运行完整代码。训练完成后,展示了一些示例以验证模型性能。相关资源链接也一并提供。
Qwen2大模型微调入门实战(完整代码)
|
1月前
|
机器学习/深度学习 算法 开发工具
通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen2模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen2系列模型的微调、评测和快速部署。
|
2月前
|
机器人 Linux API
基于Ollama+AnythingLLM轻松打造本地大模型知识库
Ollama是开源工具,简化了在本地运行大型语言模型(ile优化模型运行,支持GPU使用和热加载。它轻量、易用,可在Mac和Linux上通过Docker快速部署。AnythingLLM是Mintplex Labs的文档聊天机器人,支持多用户、多种文档格式,提供对话和查询模式,内置向量数据库,可高效管理大模型和文档。它也是开源的,能与Ollama结合使用,提供安全、低成本的LLM体验。这两款工具旨在促进本地高效利用和管理LLMs。
143945 32
|
2月前
|
自然语言处理 前端开发 Swift
Llama3 中文通用Agent微调模型来啦!(附手把手微调实战教程)
Llama3模型在4月18日公布后,国内开发者对Llama3模型进行了很多训练和适配,除了中文纯文本模型外,多模态版本也陆续在发布中。
|
2月前
|
语音技术 开发工具 git
要进行ModelScope-Funasr实时ASR的微调,您可以按照以下步骤操作:
要进行ModelScope-Funasr实时ASR的微调,您可以按照以下步骤操作:
290 5
|
2月前
|
人工智能 流计算
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
433 0
|
2月前
|
人工智能 算法 开发工具
通义千问1.5(Qwen1.5)大语言模型在PAI-QuickStart的微调与部署实践
Qwen1.5(通义千问1.5)是阿里云最近推出的开源大型语言模型系列。作为“通义千问”1.0系列的进阶版,该模型推出了多个规模,从0.5B到72B,满足不同的计算需求。此外,该系列模型还包括了Base和Chat等多个版本的开源模型,为全球的开发者社区提供了空前的便捷性。阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen1.5模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen1.5系列模型的微调和快速部署。
|
2月前
|
自然语言处理 搜索推荐 PyTorch
ModelScope问题之NoteBook训练个性化语音合成模型报错如何解决
ModelScope训练是指在ModelScope平台上对机器学习模型进行训练的活动;本合集将介绍ModelScope训练流程、模型优化技巧和训练过程中的常见问题解决方法。
72 0
|
机器学习/深度学习 自然语言处理 安全
LLM 系列 | 17:如何用LangChain做长文档问答?
本文作为LangChain专题的开篇,以长文档问答为例介绍如何使用LangChain。
LLM 系列 | 17:如何用LangChain做长文档问答?
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
使用Huggingface创建大语言模型RLHF训练流程的完整教程
ChatGPT已经成为家喻户晓的名字,而大语言模型在ChatGPT刺激下也得到了快速发展,这使得我们可以基于这些技术来改进我们的业务。
272 2