用硅基流动SiliconCloud免费AI模型批量翻译word长文档

大模型数据库算法

现在文件夹中有很多docx英文文档,想用AI大模型批量翻译成中文,可以用硅基流动SiliconCloud来实现,不花一分钱,效果还很好。

翻译可以选择Qwen/Qwen2.5-7B-Instruct,上下文长度32K,可以处理的中文汉字数量大约在2.5万到4万之间,大约3.2万个英文单词或短语。

首先生成API密钥:在“API 密钥”页签 点击“创建新 API 密钥”,并点击复制,以在您的 API 场景中进行使用。

picture.image

安装 Python 3.7.1 或更高版本并设置虚拟环境后,即可安装 OpenAI Python 库。从终端/命令行运行:pip install --upgrade openai

picture.image

注意:模型有限速,RPM=1K TPM=50K

picture.image

在deepseek中输入提示词:

你现在是一个Python编程专家,要调用siliconflow平台的Qwen2.5-7B-Instruct模型来翻译文档,具体步骤如下:

打开文件夹:F:\AI英语学习\openai

读取里面所有的docx文档,里面是英文;

用Qwen2.5-7B-Instruct模型将docx文档翻译成中文;

翻译完后保存为一个新的docx文档,文件名在原docx文件名后面加上“_中文翻译版”

siliconflow平台的基础URL: https://api.siliconflow.cn/v1

API密钥为:XXX

模型为:Qwen/Qwen2.5-7B-Instruct,上下文长度32K;

提示词为:将下面的英文内容翻译成中文

代码示例:

from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.siliconflow.cn/v1")

response = client.chat.completions.create(

model='alibaba/Qwen1.5-110B-Chat',

messages=[

{'role': 'user', 'content': "抛砖引玉是什么意思呀"}

],

stream=True

)

for chunk in response:

print(chunk.choices[0].delta.content, end='')

注意:模型有限速,RPM=1K TPM=50K

如果 .docx 文档的内容超过模型的上下文长度(32K 字符),模型将无法处理整个文档。为了解决这个问题,我们可以将文档分块处理,确保每个块的长度不超过模型的上下文长度限制。

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

picture.image

Deepseek生成的Python代码:

import os

from openai import OpenAI

from docx import Document

设置API密钥和基础URL

api_key = "XXX"

base_url = "https://api.siliconflow.cn/v1"

初始化OpenAI客户端

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

定义文件夹路径

folder_path = r"F:\AI英语学习\openai"

定义模型的上下文长度限制

MAX_CONTEXT_LENGTH = 32000 # 32K characters

遍历文件夹中的所有docx文件

for filename in os.listdir(folder_path):

if filename.endswith(".docx"):

读取文档

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

print(f"正在读取文档: {doc_path}")

doc = Document(doc_path)

提取文档中的所有段落

paragraphs = [p.text for p in doc.paragraphs]

将段落内容拼接成一个字符串

content = "\n".join(paragraphs)

分块处理

chunks = []

current_chunk = ""

current_length = 0

for paragraph in paragraphs:

if current_length + len(paragraph) + 1 > MAX_CONTEXT_LENGTH:

chunks.append(current_chunk.strip())

current_chunk = paragraph

current_length = len(paragraph)

else:

if current_chunk:

current_chunk += "\n" + paragraph

else:

current_chunk = paragraph

current_length += len(paragraph) + 1

if current_chunk:

chunks.append(current_chunk.strip())

翻译每个块

translated_chunks = []

for i, chunk in enumerate(chunks):

print(f"正在翻译文档: {filename} 的第 {i+1}/{len(chunks)} 块")

response = client.chat.completions.create(

model='Qwen/Qwen2.5-7B-Instruct',

messages=[

{'role': 'user', 'content': f"将下面的英文内容翻译成中文\n{chunk}"}

],

stream=False

)

translated_chunks.append(response.choices[0].message.content)

拼接翻译后的内容

translated_content = "\n".join(translated_chunks)

创建新的文档并写入翻译后的内容

new_doc = Document()

for line in translated_content.split("\n"):

new_doc.add_paragraph(line)

保存翻译后的文档

new_filename = filename.replace(".docx", "_中文版.docx")

new_doc_path = os.path.join(folder_path, new_filename)

new_doc.save(new_doc_path)

print(f"翻译完成,保存为: {new_doc_path}")

print("所有文档翻译完成!")

代码解释

分块处理: 我们将文档内容分成多个块,每个块的长度不超过 32K 字符。我们通过遍历文档的每个段落,将段落内容逐步添加到当前块中,直到当前块的长度接近 32K 字符,然后将当前块保存为一个块,并开始一个新的块。

翻译每个块: 对每个块分别进行翻译,并将翻译后的内容保存到一个列表中。

拼接翻译后的内容: 将所有翻译后的块拼接成一个完整的字符串,并写入新的 .docx 文档。

picture.image

程序运行成功:

picture.image

硅基流动SiliconCloud上现在有很多很好的免费大模型,真正实现大模型自由。picture.image现在在硅基流动SiliconCloud网站注册,不仅可以免费使用各种大模型,还可以通过以下地址注册获得免费的2000万Tokens:

https://cloud.siliconflow.cn/i/Do9fPK0j

也可以点击左下角阅读原文链接来注册

Do9fPK0j

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
VikingDB:大规模云原生向量数据库的前沿实践与应用
本次演讲将重点介绍 VikingDB 解决各类应用中极限性能、规模、精度问题上的探索实践,并通过落地的案例向听众介绍如何在多模态信息检索、RAG 与知识库等领域进行合理的技术选型和规划。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论