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

简介: 本文介绍了如何利用通义千问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月前
|
机器学习/深度学习 人工智能 算法
通义千问Qwen-72B-Chat大模型在PAI平台的微调实践
本文将以Qwen-72B-Chat为例,介绍如何在PAI平台的快速开始PAI-QuickStart和交互式建模工具PAI-DSW中高效微调千问大模型。
|
15天前
|
自然语言处理 监控 并行计算
Qwen2大模型微调入门实战(完整代码)
该教程介绍了如何使用Qwen2,一个由阿里云通义实验室研发的开源大语言模型,进行指令微调以实现文本分类。微调是通过在(指令,输出)数据集上训练来改善LLMs理解人类指令的能力。教程中,使用Qwen2-1.5B-Instruct模型在zh_cls_fudan_news数据集上进行微调,并借助SwanLab进行监控和可视化。环境要求Python 3.8+和英伟达显卡。步骤包括安装所需库、准备数据、加载模型、配置训练可视化工具及运行完整代码。训练完成后,展示了一些示例以验证模型性能。相关资源链接也一并提供。
Qwen2大模型微调入门实战(完整代码)
|
10天前
|
机器学习/深度学习 算法 开发工具
通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen2模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen2系列模型的微调、评测和快速部署。
|
1月前
|
人工智能 流计算
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
247 0
|
1月前
|
人工智能 算法 开发工具
通义千问1.5(Qwen1.5)大语言模型在PAI-QuickStart的微调与部署实践
Qwen1.5(通义千问1.5)是阿里云最近推出的开源大型语言模型系列。作为“通义千问”1.0系列的进阶版,该模型推出了多个规模,从0.5B到72B,满足不同的计算需求。此外,该系列模型还包括了Base和Chat等多个版本的开源模型,为全球的开发者社区提供了空前的便捷性。阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen1.5模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen1.5系列模型的微调和快速部署。
|
9月前
|
数据可视化 PyTorch 算法框架/工具
量化自定义PyTorch模型入门教程
在以前Pytorch只有一种量化的方法,叫做“eager mode qunatization”,在量化我们自定定义模型时经常会产生奇怪的错误,并且很难解决。但是最近,PyTorch发布了一种称为“fx-graph-mode-qunatization”的方方法。在本文中我们将研究这个fx-graph-mode-qunatization”看看它能不能让我们的量化操作更容易,更稳定。
175 0
|
7月前
|
PyTorch 算法框架/工具
ModelScope是一个基于PyTorch的模型管理平台
ModelScope是一个基于PyTorch的模型管理平台
203 3
|
12月前
|
存储 机器学习/深度学习 人工智能
本地部署开源大模型的完整教程:LangChain + Streamlit+ Llama
在过去的几个月里,大型语言模型(llm)获得了极大的关注,这些模型创造了令人兴奋的前景,特别是对于从事聊天机器人、个人助理和内容创作的开发人员。
7405 1
|
9月前
|
Linux Shell 网络安全
大模型之Huggingface初体验
huggingface相关环境的安装和问题处理本篇暂不涉及,后续补充。这里以一个模型为例,完成从模型介绍到加载、运行的完整过程,作为我们熟悉huggingface的一个示例。
1234 0
|
10月前
|
存储 机器学习/深度学习 人工智能
LangChain + Streamlit + Llama:将对话式AI引入本地机器
在过去的几个月里,大型语言模型(LLM)获得了极大的关注,引起了全球开发人员的兴趣。这些模型创造了令人兴奋的前景,特别是对于从事聊天机器人、个人助理和内容创作的开发人员而言。LLM带来的可能性引发了开发人员的热情 |人工智能 |NLP社区。
519 0