AI办公自动化:用通义千问Qwen-Long批量总结PDF长文档内容

Qwen-Long是在通义千问针对超长上下文处理场景的大语言模型,支持中文、英文等不同语言输入,支持最长1000万tokens(约1500万字或1.5万页文档)的超长上下文对话。配合同步上线的文档服务,可支持word、pdf、markdown、epub、mobi等多种文档格式的解析和对话。借助Qwen-Long可以批量总结长文档。

而且费用也很便宜:

模型调用-输入0.0005元/text_token(千个)

模型调用-输出0.002元/text_token(千个)

现在申请API还有免费额度:3600万tokens,到期时间1个月;

在deepseek中输入提示词:

你是一个开发AI大模型应用的Python编程专家,要完成批量总结PDF文档内容的Python脚本:

打开文件夹:"D:\ABooks"

逐一读取文件夹里面的PDF文件的文件名;

调用通义千问Qwen-Long的API上传PDF文件;

发送提示词:“总结这本书每个章节的内容,用中文输出”,获取返回结果,保存在docx格式的word文档中,文件名使用PDF文件的文件名,文档保存到文件夹"D:\ABooks"下;

文档保存完后,在通义千问Qwen-Long中删除这个PDF文件;

然后读取下一个PDF文件,上传,总结,删除,直到文件夹中全部PDF文件都总结完成。

注意:

每一步都要输出相关信息到屏幕上

如果PDF文本长度或者总结返回的文本长度超过限制,那就进行拆分,然后组合在一起;

如果某个PDF文件读取或者内容抽取等发生错误,就跳过,继续下一个;

通义千问Qwen-Long有限流,调用频次 ≤ 100 QPM,每分钟不超过100次API调用;

过程中可能会发生错误:Error code: 400 - {'error': {'code': 'ResponseTimeout', 'param': None, 'message': 'Response timeout!', 'type': 'ResponseTimeout'}},可以实现一个重试机制,设置最大重试次数,并在重试请求之前等待一定的时间。

#通义千问Qwen-Long的API使用方法和示例

##模型为:qwen-long,最大输入+输出总长度是1000万个tokens

API Key为:XXX

base_url为:https://dashscope.aliyuncs.com/compatible-mode/v1

## 调用限制。

如果超出调用限制,用户的API请求将会因为限流控制而失败,用户需要等待一段时间待满足限流条件后方能再次调用。调用频次 ≤ 100 QPM,每分钟不超过100次API调用;

##上传文件

文件格式支持常见的文本文件(txt docx pdf epub mobi md),单文件大小限制为150M,总量限制为1万个文件,总文件大小限制为100G。以下示例展示了通过OpenAI接口访问DashScope的文件上传。

from pathlib import Path

from openai import OpenAI

client = OpenAI(

api_key="$your-dashscope-api-key",

base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",

)

# data.pdf 是一个示例文件

file_object = client.files.create(file=Path("data.pdf"), purpose="file-extract")

返回值类型为File,详细参考File object,示例如下

{

"id": "file-fe-9TIRfHksHmf5gLKZwi06o7Np",

"object": "file",

"bytes": 5,

"created_at": 1715256442973,

"filename": "test.txt",

"purpose": "file-extract"

}

##删除文件

from openai import OpenAI

client = OpenAI(

api_key="$your-dashscope-api-key",

base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",

)

client.files.delete("file-fe-9TIRfHksHmf5gLKZwi06o7Np")

##通义千问Qwen-Long的调用示例:

from pathlib import Path

from openai import OpenAI

client = OpenAI(

api_key="$your-dashscope-api-key", # 替换成真实DashScope的API_KEY

base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 填写DashScope服务base_url

)

# data.pdf 是一个示例文件

file = client.files.create(file=Path("data.pdf"), purpose="file-extract")

# 新文件上传后需要等待模型解析,首轮rt可能较长

completion = client.chat.completions.create(

model="qwen-long",

messages=[

{

'role': 'system',

'content': 'You are a helpful assistant.'

},

{

'role': 'system',

'content': f'fileid://{file.id}'

},

{

'role': 'user',

'content': '这篇文章讲了什么?'

}

],

stream=False

)

print(completion.choices[0].message.dict())

deepseek生成的Python源代码:

import os

import requests

from pathlib import Path

from docx import Document

from openai import OpenAI

# 设置API Key和base_url

api_key = "XXX"

base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"

# 初始化OpenAI客户端

client = OpenAI(api_key=api_key, base_url=base_url)

# 设置文件夹路径

folder_path = "D:\\ABooks"

# 遍历文件夹中的所有PDF文件

for filename in os.listdir(folder_path):

if filename.endswith(".pdf"):

print(f"Processing file: {filename}")

file_path = os.path.join(folder_path, filename)

try:

# 上传PDF文件

file_object = client.files.create(file=Path(file_path), purpose="file-extract")

print(f"Uploaded file: {file_object.id}")

# 创建消息列表

messages = [

{

"role": "system",

"content": "You are a helpful assistant."

},

{

"role": "system",

"content": f"fileid://{file_object.id}"

},

{"role": "user", "content": "总结这本书每个章节的内容,用中文输出。"},

]

# 发送请求

completion = client.chat.completions.create(

model="qwen-long",

messages=messages,

stream=False

)

# 创建Word文档

doc = Document()

doc.add_paragraph(completion.choices[0].message.content)

# 保存Word文档

doc_path = os.path.join(folder_path, f"{os.path.splitext(filename)[0]}.docx")

doc.save(doc_path)

print(f"Saved document: {doc_path}")

# 删除PDF文件

client.files.delete(file_id=file_object.id)

print(f"Deleted file: {file_object.id}")

except Exception as e:

print(f"Error processing file {filename}: {e}")

continue

print("All files processed.")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看VUE3代理后真正请求的URL

在vite.config.ts中添加如下配置: server: {host: "0.0.0.0", // 指定服务器应该监听哪个 IP 地址port: 8848, // 指定开发服务器端口open: true, // 开发服务器启动时,自动在浏览器中打开应用程序cors: true,// Load proxy configuration fr…

无人售货机零售业务成功指南:从市场分析到创新策略

在科技驱动的零售新时代,无人售货机作为一种便捷购物解决方案,正逐步兴起,它不仅优化了消费者体验,还显著降低了人力成本,提升了运营效能。开展这项业务前,深入的市场剖析不可或缺,需聚焦消费者…

【JS基础语法02】JS变量详解

一:变量命名规则与规范 1 规则 可以以下划线、字母、数字、$符命名,不能以数字开头不能以关键字命名,eg:let、var、const命名严格区分大小写,age、AGE是两个不同的变量名 2 规范(并不是规则,而是都应该遵…

openresty(Nginx) 配置 特殊URL 密码访问 使用htpasswd 配置 Basic_Auth登录认证

1 使用htpasswd 生成密码文件.htpasswd是Apache附带的工具。如果没有可以安装。 #centos 8.5 系统 yum install httpd-tools #Ubuntu 24.04 系统 sudo apt update sudo apt-get install apache2-utils #生成密码文件,用户test sudo htpasswd -c /usr/local/openresty/nginx/…

解析Java中1000个常用类:SafeVarargs类,你学会了吗?

在 Java 编程中,泛型和可变参数(varargs)的结合使用可能会导致一些类型安全的问题。为了解决这些问题,Java 提供了 @SafeVarargs 注解。本文将详细介绍 @SafeVarargs 注解的定义、使用方法、应用场景以及其背后的原理,帮助读者深入理解并掌握这一重要特性。 什么是 @Safe…

高效派单的秘诀:探索运维工单处理软件的五大关键功能-亿发

在快节奏的现代企业运营中,如何高效管理生产流程,确保任务按时完成,同时保持产品质量和客户满意度,是每个管理者面临的重要课题。工单管理系统,作为企业数字化转型的关键工具,正逐渐成为解决这些问题的利器…

TypeScript 中的高级类型

1. 联合类型和交叉类型 联合类型(Union Types)和交叉类型(Intersection Types)是 TypeScript 中常用的两种高级类型。 联合类型:使用 | 操作符将多个类型合并成一个新的类型,表示值可以是这些类型中的任意…

C++——输入输出、基本变量类型

目录 一、输入输出 1、标准输出流(cout) 2、标准输入流(cin) 3、标准错误流(cerr)和标准日志流(clog) 4、示例代码 二、基本数据类型 1、宽字符的用法 2、如何使用 3、示例…

构建基础网站的入门指南

在数字时代,网站已经成为展示个人、企业或组织信息的重要平台。了解如何通过编写代码来创建一个网站是非常有用的技能。在本文中,我们将了解构建一个基础网站所需的步骤和代码知识。第一步:了解网站的基本组成 一个基本的网站通常包含HTML&a…

【GPU原理】1.线程和缓存的关系

一、GPU如何做并行计算 1.简单的串行计算 对于如上的运算AXY,每次运算我们需要从内存读取两个数据,一个是x[i],一个是y[i],最后存回y[i]。这里面有一个FMA的操作(融合乘加(FMA)指令是RISC处理器…

【区分vue2和vue3下的element UI InputNumber 计数器组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Vue 2 中,Element UI 提供了 el-input-number 组件作为计数器组件,用于处理数字输入。而在 Vue 3 中,Element Plus 同样提供了类似的组件,但可能有一些属性、事件或方法的细微差异。下面我将分别介绍 Vue 2 的 Element UI 和 V…

五月份0day/1day/nday漏洞汇总

0x01 免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删…

ChatGPT的原理

1.ChatGPT的大致原理 ChatGPT使用了GPT-3.5模型,它是一个基于大型神经网络的对话生成模型。该模型是通过大规模的文本数据进行训练,能够生成与用户进行自然对话的响应。在对话中,ChatGPT会根据输入文本生成接下来的回复,其原理类…

Windows通过cmd运行快速启动应用

Windows如何通过cmd运行快速启动应用? 在Windows操作系统中,可以通过配置环境变量的方式将文件的路径配置到环境变量的path中,配置完成后可以在cmd中输入对应的应用名称即可启动应用,具体操作如下: 1. 添加应用程序路径…

C语言数据结构排序、插入排序、希尔排序等的介绍

文章目录 前言打印数组函数一、插入排序二、希尔排序总结 前言 C语言数据结构排序、插入排序、希尔排序等的介绍 打印数组函数 打印数组函数定义 // 打印数组 void PrintArray(int* a, int n) {int i 0;for (i 0; i < n; i){printf("%d ", a[i]);}printf(&qu…

Thinkphp 使用Model来增删改查

这里写目录标题 一、Model部分二、增加三、查询四、删除五、修改 一、Model部分 <?php namespace app\common\model;use think\Model; use think\Request; use think\Db; use traits\model\SoftDelete;class Visit Extends Model {// use SoftDelete;// 开启自动写入时间戳…

掘金AI 商战宝典-高阶班:如何用AI制作视频(11节视频课)

课程目录&#xff1a; 1-第一讲用AI自动做视频&#xff08;上&#xff09;_1.mp4 2-第二讲用AI自动做视频&#xff08;中&#xff09;_1.mp4 3-第四讲A1做视频实战&#xff1a;店铺宣传_1.mp4 4-第五讲Al做视频实战&#xff1a;商品带贷1.mp4 5-第六讲Al做视频实战&#x…

卷积神经网络——为什么卷积哪儿都能用?

两个函数的卷积 本质上就是先将一个函数翻转&#xff0c;然后进行滑动叠加。 在连续情况下&#xff0c;叠加指的是对两个函数的乘积求积分。 在离散情况下就是加权求和。 它在不同的领域有着不同的解释 在热力系统中&#xff0c;卷积通常用来计算持续添加的燃料&#xff0c…

台灯怎么选对眼睛好?六个步骤告诉你台灯怎么选!

在这个信息爆炸的时代&#xff0c;孩子们的学习压力越来越大&#xff0c;视力问题也日益凸显。尽管没有详细的地域数据&#xff0c;但整体而言&#xff0c;中国青少年的近视率已经高居世界第一位&#xff0c;且不同地区的近视率可能存在一定的差异。为了让孩子在学习的道路上走…

Vue中的计算属性和侦听器:提升响应式编程的艺术

引言 Vue.js是一个用于构建用户界面的渐进式框架&#xff0c;它的核心特性之一是响应式编程。Vue通过数据绑定和响应式系统&#xff0c;使得开发者能够以声明式的方式处理数据变化。在Vue中&#xff0c;计算属性&#xff08;Computed Properties&#xff09;和侦听器&#xff…