Files
akmon/trans_LLM/SIMPLE_TRANSLATION_README.md
2026-01-20 08:04:15 +08:00

196 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 简化版 Supabase 自动翻译服务
这是一个简化版的自动翻译脚本,专门用于翻译 `ak_contents` 表的内容,使用 Supabase 和 RageFlow 接口。
## 功能特点
- ✅ 直接连接 Supabase 数据库
- ✅ 使用 RageFlow API 调用大模型翻译
- ✅ 支持批量翻译多种语言
- ✅ 自动保存翻译结果到 `ak_content_translations`
- ✅ 简单的质量评估
- ✅ 避重复翻译
- ✅ 错误处理和日志记录
## 快速开始
### 1. 安装依赖
```bash
pip install aiohttp asyncio
```
### 2. 配置参数
复制 `.env.example``.env` 并填入您的配置:
```bash
cp .env.example .env
```
编辑 `.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` 中的配置:
```python
config = TranslationConfig(
supabase_url="YOUR_SUPABASE_URL",
supabase_key="YOUR_SUPABASE_KEY",
rageflow_api_key="YOUR_RAGEFLOW_KEY"
)
```
然后运行:
```bash
python simple_translation_service.py
```
#### 方法2作为模块使用
```python
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 表(源内容)
```sql
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 表(翻译结果)
```sql
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 使用方法
### 获取待翻译内容
```python
contents = await service.get_contents_to_translate(limit=10)
```
### 翻译单个内容
```python
translation = await service.translate_content_item(content, "en")
```
### 批量翻译
```python
results = await service.batch_translate(
target_languages=["en", "ja", "fr"],
limit=20
)
```
## 支持的语言
- `en`: English (英文)
- `ja`: Japanese (日文)
- `fr`: French (法文)
- `de`: German (德文)
- `es`: Spanish (西班牙文)
## 输出示例
```json
{
"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
}
}
```
## 注意事项
1. **API 限制**: 脚本会在每次翻译请求之间添加1秒延迟避免触发API限制
2. **避免重复**: 自动检查是否已存在翻译,避免重复翻译
3. **错误处理**: 包含完整的错误处理和日志记录
4. **质量评估**: 提供基于长度比例的简单质量评分
## 扩展功能
如果需要更多功能,可以考虑:
- 添加更多翻译提供商OpenAI、Google Translate等
- 实现更复杂的质量评估算法
- 添加人工审核工作流
- 支持增量翻译(定时任务)
- 添加翻译缓存机制
## 故障排除
### 常见错误
1. **连接错误**: 检查 Supabase URL 和 API Key 是否正确
2. **权限错误**: 确保 Supabase API Key 有读写权限
3. **翻译失败**: 检查 RageFlow API Key 和网络连接
4. **数据库错误**: 确保表结构正确且存在
### 调试模式
将日志级别设置为 DEBUG
```python
logging.basicConfig(level=logging.DEBUG)
```