AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


用通义 Qwen 构建 ChatPDF 应用(附代码)
发布日期:2024-06-19 15:10:09 浏览次数: 1898


欢迎将「AIGC开发者」设为星标
大家好!今天我要和大家分享的是如何使用通义千问 Qwen 大模型来构建一个本地的 ChatPDF AI助手。这个助手可以让你上传 PDF 文件,然后基于文件内容和它进行对话,非常方便和有趣,我们不用担心文档数据泄露,个人隐私也可以得到保护。通过部署到云服务器,我们也可以构建一个网站应用。演示如下:
接下来,我会一步一步地带你了解这个项目的实现过程,希望大家能喜欢。因篇幅有限,文中仅展示部分代码,文末提供完整代码和文档下载方式

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

正好阿里云也在搞618活动,现在扫码注册还可以领取400万tokens的免费额度和云服务器优惠券,正好用来低成本开发部署一个AI应用,错过再等一年!

首先,我们需要导入一些必要的库和模块。我们主要会用到openaistreamlittiktoken。其中,tiktoken 是用来处理 token 编码的,这样可以帮我们计算对话的费用。

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

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

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

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

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

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

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

长按扫码获取本文完整代码和文档下载方式:


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询