现在文件夹中有很多docx英文文档,想用AI大模型批量翻译成中文,可以用硅基流动SiliconCloud来实现,不花一分钱,效果还很好。
翻译可以选择Qwen/Qwen2.5-7B-Instruct,上下文长度32K,可以处理的中文汉字数量大约在2.5万到4万之间,大约3.2万个英文单词或短语。
首先生成API密钥:在“API 密钥”页签 点击“创建新 API 密钥”,并点击复制,以在您的 API 场景中进行使用。
安装 Python 3.7.1 或更高版本并设置虚拟环境后,即可安装 OpenAI Python 库。从终端/命令行运行:pip install --upgrade openai
注意:模型有限速,RPM=1K TPM=50K
在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 字符),模型将无法处理整个文档。为了解决这个问题,我们可以将文档分块处理,确保每个块的长度不超过模型的上下文长度限制。
每一步都要输出信息到屏幕上
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)