4.5 KiB
4.5 KiB
简化版 Supabase 自动翻译服务
这是一个简化版的自动翻译脚本,专门用于翻译 ak_contents 表的内容,使用 Supabase 和 RageFlow 接口。
功能特点
- ✅ 直接连接 Supabase 数据库
- ✅ 使用 RageFlow API 调用大模型翻译
- ✅ 支持批量翻译多种语言
- ✅ 自动保存翻译结果到
ak_content_translations表 - ✅ 简单的质量评估
- ✅ 避重复翻译
- ✅ 错误处理和日志记录
快速开始
1. 安装依赖
pip install aiohttp asyncio
2. 配置参数
复制 .env.example 为 .env 并填入您的配置:
cp .env.example .env
编辑 .env 文件:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-supabase-anon-key
RAGEFLOW_API_KEY=your-rageflow-api-key
3. 使用脚本
方法1:直接修改脚本配置
编辑 simple_translation_service.py 中的配置:
config = TranslationConfig(
supabase_url="YOUR_SUPABASE_URL",
supabase_key="YOUR_SUPABASE_KEY",
rageflow_api_key="YOUR_RAGEFLOW_KEY"
)
然后运行:
python simple_translation_service.py
方法2:作为模块使用
import asyncio
from simple_translation_service import SimpleTranslationService, TranslationConfig
async def translate_contents():
config = TranslationConfig(
supabase_url="YOUR_SUPABASE_URL",
supabase_key="YOUR_SUPABASE_KEY",
rageflow_api_key="YOUR_RAGEFLOW_KEY"
)
async with SimpleTranslationService(config) as service:
# 翻译为英文和日文,限制5条记录
results = await service.batch_translate(
target_languages=["en", "ja"],
limit=5
)
print(f"翻译完成: {results['summary']}")
# 运行
asyncio.run(translate_contents())
数据库要求
确保您的 Supabase 数据库中存在以下表:
ak_contents 表(源内容)
CREATE TABLE ak_contents (
id UUID PRIMARY KEY,
title TEXT,
content TEXT,
category_id UUID,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
ak_content_translations 表(翻译结果)
CREATE TABLE ak_content_translations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
content_id UUID REFERENCES ak_contents(id),
language VARCHAR(10) NOT NULL,
title TEXT,
content TEXT,
quality_score FLOAT DEFAULT 0.0,
translated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
translation_source VARCHAR(50) DEFAULT 'manual',
UNIQUE(content_id, language)
);
API 使用方法
获取待翻译内容
contents = await service.get_contents_to_translate(limit=10)
翻译单个内容
translation = await service.translate_content_item(content, "en")
批量翻译
results = await service.batch_translate(
target_languages=["en", "ja", "fr"],
limit=20
)
支持的语言
en: English (英文)ja: Japanese (日文)fr: French (法文)de: German (德文)es: Spanish (西班牙文)
输出示例
{
"total_contents": 5,
"target_languages": ["en", "ja"],
"results": {
"content-uuid-1": {
"en": {
"success": true,
"quality_score": 0.9,
"title_preview": "Translated title preview..."
},
"ja": {
"success": true,
"quality_score": 0.85,
"title_preview": "翻訳されたタイトルのプレビュー..."
}
}
},
"summary": {
"successful": 8,
"failed": 2,
"skipped": 0
}
}
注意事项
- API 限制: 脚本会在每次翻译请求之间添加1秒延迟,避免触发API限制
- 避免重复: 自动检查是否已存在翻译,避免重复翻译
- 错误处理: 包含完整的错误处理和日志记录
- 质量评估: 提供基于长度比例的简单质量评分
扩展功能
如果需要更多功能,可以考虑:
- 添加更多翻译提供商(OpenAI、Google Translate等)
- 实现更复杂的质量评估算法
- 添加人工审核工作流
- 支持增量翻译(定时任务)
- 添加翻译缓存机制
故障排除
常见错误
- 连接错误: 检查 Supabase URL 和 API Key 是否正确
- 权限错误: 确保 Supabase API Key 有读写权限
- 翻译失败: 检查 RageFlow API Key 和网络连接
- 数据库错误: 确保表结构正确且存在
调试模式
将日志级别设置为 DEBUG:
logging.basicConfig(level=logging.DEBUG)