首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AI办公自动化:用通义千问Qwen-Long批量总结PDF长文档内容

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

作者头像
AIGC部落
发布于 2024-06-24 11:28:00
发布于 2024-06-24 11:28:00
1.4K0
举报
文章被收录于专栏:Dance with GenAIDance with GenAI

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.")

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Dance with GenAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
课前准备-单细胞新版velocity(cellrank 2)
默认情况下,使用确定性模式来计算transiton matrix。如果要传播速率向量中的不确定性,查看随机模式和蒙特卡罗模式。随机模式使用KNN图估计速率向量上的分布,并使用分析近似将该分布传播到过渡矩阵中。
追风少年i
2024/06/17
9340
课前准备-单细胞新版velocity(cellrank 2)
scanpy读取空转Visum HD数据&基础分析
上一期我们学习了使用python读取单细胞和空转数据(10X visum低分辨率):
生信技能树
2025/03/06
1K0
scanpy读取空转Visum HD数据&基础分析
空间邻域分析 Neighborhood analysis:Squidpy(IF=32.09)
前面我们分享过空间邻域的概念,见:空间转录组细胞邻域(Cellular Neighborhood)分析。今天来看看实战,使用Squidpy工具进行分析,该软件于2022年1月31号发表在 Nature Methods 杂志上,文献标题为《Squidpy: a scalable framework for spatial omics analysis》。学习的参考教程如下:
生信菜鸟团
2025/08/04
950
空间邻域分析 Neighborhood analysis:Squidpy(IF=32.09)
通用代码:python中的h5、h5ad文件批量转为seuart对象 通用代码:python中的h5、h5ad文件批量转为seu
大家好,今天我们来聊聊python中anndata对象(scanpy)和seurat对象的转化。
生信小博士
2024/02/23
1.6K0
通用代码:python中的h5、h5ad文件批量转为seuart对象

通用代码:python中的h5、h5ad文件批量转为seu
单细胞转录组分析RNA velocity-STAR solo
STAR较CellRanger有着更快的运行速度和更广泛的运用场景。单细胞转录组的比对可以通过STAR-solo来实现,在solo Features 可以同时获取Gene expression和RNA velocity 信息,帮助我们进行拟时序分析。
旋转木马
2023/12/01
1.9K0
单细胞空间多组学揭示肿瘤相关成纤维细胞的保守空间亚型和细胞邻域-空间细胞亚群细分代码实现
CAF 是肿瘤微环境中的关键成分,能够通过细胞间相互作用影响免疫逃逸、药物耐受和转移。然而,CAF 的空间异质性与其生物功能尚未完全理解。癌症相关成纤维细胞(CAF)在肿瘤微环境(TME)中发挥着关键作用。2025年3月27日,Cancer Cell上在线发表了题为Conserved spatial subtypes and cellular neighborhoods of cancer-associated fibroblasts revealed by single-cell spatial multi-omics的最新研究成果,该研究通过整合来自10种癌症、7个空间转录组及蛋白组学平台的超过1400万个细胞的单细胞空间多组学数据中的肿瘤相关成纤维细胞(CAFs),成功识别出四种具有不同空间分布、细胞组成和功能特征的CAFs亚型。这些亚型在不同癌症类型中普遍存在,并且与肿瘤微环境特性、免疫细胞浸润及患者生存期密切相关。为理解CAFs在肿瘤中的作用以及开发针对CAFs的治疗策略提供了重要依据。
生信大杂烩
2025/07/20
1280
单细胞空间多组学揭示肿瘤相关成纤维细胞的保守空间亚型和细胞邻域-空间细胞亚群细分代码实现
细胞邻域分析
追风少年i
2024/12/24
1870
细胞邻域分析
python读取空间转录组数据
上一期我们学习了使用python读取不同的单细胞数据:python版读取不同的单细胞数据格式(单样本与多样本),今天来看看使用python读取空间转录组的数据。
生信技能树
2025/03/06
1980
python读取空间转录组数据
内容复习--重新认识一下banksy
追风少年i
2025/05/02
1110
内容复习--重新认识一下banksy
课前准备--高精度空转(Xenium、CosMx)等空间邻域通讯
追风少年i
2025/07/29
840
课前准备--高精度空转(Xenium、CosMx)等空间邻域通讯
做单细胞和空转必须了解的AnnData数据结构
图解如下:https://anndata.readthedocs.io/en/stable/index.html
生信技能树
2025/04/09
4550
做单细胞和空转必须了解的AnnData数据结构
scanpy教程:PAGA轨迹推断
如果说单细胞转录组数据分析中的分群是寻找细胞的离散属性,那么轨迹推断就是寻找细胞分化连续性的尝试。为什么细胞的分化既有离散性又有连续性呢?这是一个历史问题,细胞的分化当然是连续的,之所以用分群的方法来解释异质性,实在是一种无奈之举。每一个细胞都是独一无二的,没有一个细胞是孤岛,这是我们的口号,但是理想与现实总是不能统一。
生信技能树jimmy
2020/04/08
7.6K0
scanpy教程:PAGA轨迹推断
基于python的scanpy模块的乳腺癌单细胞数据分析
这次我们来复现一篇单细胞的文章。这篇我们只来复现细胞图谱和拟时序分析 像细胞通讯,还有富集分析还是很简单的。大家可以继续走下去,然后我们来交流讨论! 这篇全篇基于python复现。
生信技能树
2021/10/12
4.1K1
scanpy怎么分开读取GEO数据库的10X单细胞3个文件
就会发现,matrix.mtx文件里面的33694、2049、1878957数值,分别是细胞数量,基因数量,以及有表达量的值的数量(全部的值应该是33694X2049接近7000万,但是有值的仅仅是不到200万,所以单细胞矩阵里面只有3%左右的值大于0 )。每个10X样本都是走流程拿到10x单细胞转录组数据的3个文件的表达矩阵。
生信技能树jimmy
2024/02/22
1.3K0
scanpy怎么分开读取GEO数据库的10X单细胞3个文件
空间转录组网络图的分步绘制(Xenium)
追风少年i
2024/06/05
2270
空间转录组网络图的分步绘制(Xenium)
python: 使用tangram进行空间转录组映射表达量分析
tangram是一种映射单细胞表达量数据到空间转录组数据的方法,它可以将单细胞中的表达量数据映射到空间转录组的每一个cell中。这对于一些gene panel数量较少的空间转录组技术如Xenium、CosMx等可以起到扩充基因数量的作用,因为tangram基因映射后的客观结果是使得每一个Xenium/CosMx数据集的细胞中的基因panel数量将和使用的单细胞数据集的panel数量保持一致,而单细胞数据集panel数量是可以轻松到2万+的。
生信菜鸟团
2024/01/25
6050
python: 使用tangram进行空间转录组映射表达量分析
Xenium多样本分析实战-代码分享
最近陆陆续续完成了几个Xenium项目的数据分析,主要集中在肿瘤样本研究,每个项目由于实验设计的不同,老师关心的科学问题不同,都做了许多个性化的分析,有时间闲下来后自己做了一些总结,将自己在Xenium, Visium HD 以及CosMx这些高精度空间数据分析过程中用到的一些分析方法及代码(这里分享的主要是基于python实现的各种方法,之前一直使用的是R进行分析,数据量大了之后非常慢,于是乎转向了python
生信大杂烩
2025/06/15
1460
Xenium多样本分析实战-代码分享
高精度空间转录组分析之squidpy和空间网络图
追风少年i
2024/05/31
5060
高精度空间转录组分析之squidpy和空间网络图
脚本更新----空间转录组信号流COMMOT与空间inferCNV(封装版)
追风少年i
2024/11/19
1380
脚本更新----空间转录组信号流COMMOT与空间inferCNV(封装版)
单细胞转录组实战02: 数据整理与之质控
从cellranger的输出目录中读取filtered_feature_bc_matrix.h5表达量矩阵,并把多个样本合并为1个anndata对象。
生信探索
2023/02/09
8460
推荐阅读
相关推荐
课前准备-单细胞新版velocity(cellrank 2)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档