本项目为AI学术论文日报系统集成了大模型翻译功能,支持将英文学术论文标题和摘要翻译为中文,并提供翻译质量检测、错误处理和服务监控等完整功能。
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ 前端界面 │ │ ArXiv爬虫 │ │ 大模型API │ │ (中英对照) │◄───│ (集成翻译) │◄───│ (Qwen/DeepSeek)│ └─────────────────┘ └──────────────────┘ └─────────────────┘ │ ▼ ┌──────────────────┐ │ 翻译服务层 │ │ ┌──────────────┐ │ │ │ 质量检测器 │ │ │ └──────────────┘ │ │ ┌──────────────┐ │ │ │ 错误处理器 │ │ │ └──────────────┘ │ │ ┌──────────────┐ │ │ │ 熔断器 │ │ │ └──────────────┘ │ └──────────────────┘
pip install langchain openai requests python-dotenv
复制环境变量模板:
cp .env.example .env
编辑 .env 文件,填入实际的API密钥:
# Qwen API配置 QWEN_API_KEY=your_qwen_api_key_here QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 QWEN_MODEL=qwen-turbo # DeepSeek API配置 DEEPSEEK_API_KEY=your_deepseek_api_key_here DEEPSEEK_BASE_URL=https://api.deepseek.com DEEPSEEK_MODEL=deepseek-chat
编辑 translation_config.json:
{
"providers": ["qwen", "deepseek"],
"default_provider": "qwen",
"qwen": {
"model": "qwen-turbo",
"temperature": 0.3,
"max_tokens": 2000,
"timeout": 30,
"max_retries": 3
},
"deepseek": {
"model": "deepseek-chat",
"temperature": 0.3,
"max_tokens": 2000,
"timeout": 30,
"max_retries": 3
}
}
# 测试翻译功能
python test_translation_mock.py
# 测试错误处理
python test_error_handling.py
# 监控服务健康状态
python translation_monitor.py --mode report
# 启动前端服务
npm run dev
# 运行爬虫(包含翻译功能)
python arxiv_crawler.py
| 等级 | 分数范围 | 描述 |
|---|---|---|
| 优秀 | 90-100 | 翻译准确,语言流畅 |
| 良好 | 75-89 | 翻译基本准确,略有瑕疵 |
| 一般 | 60-74 | 翻译可理解,存在明显问题 |
| 较差 | < 60 | 翻译质量不佳,需要改进 |
| 错误类型 | 重试策略 | 处理方式 |
|---|---|---|
| 网络错误 | 指数退避重试 | 最多3次重试 |
| 认证错误 | 不重试 | 立即失败 |
| 频率限制 | 延迟重试 | 等待指定时间 |
| 配额超限 | 不重试 | 切换提供商 |
| 超时错误 | 重试 | 增加超时时间 |
from llm_translator import LLMTranslator
from translation_config import TranslationConfig
# 加载配置
config = TranslationConfig.load_from_file('translation_config.json')
# 创建翻译器
translator = LLMTranslator('qwen', config.get_provider_config('qwen'))
# 执行翻译
result = translator.translate_text(
text="Artificial Intelligence in Healthcare",
source_lang="en",
target_lang="zh"
)
print(f"翻译结果: {result['translated_text']}")
print(f"质量等级: {result['quality_level']}")
print(f"质量分数: {result['quality_score']}")
# 翻译整篇论文
paper_result = translator.translate_paper({
'title': 'Deep Learning for Natural Language Processing',
'abstract': 'This paper presents a comprehensive survey...'
})
print(f"中文标题: {paper_result['title_zh']}")
print(f"中文摘要: {paper_result['abstract_zh']}")
print(f"翻译质量: {paper_result['translation_quality']}")
from translation_monitor import TranslationMonitor
# 创建监控器
monitor = TranslationMonitor()
# 检查服务健康状态
health_status = monitor.monitor_all_services()
print(f"总体状态: {health_status['overall_status']}")
# 获取统计信息
stats = monitor.get_service_statistics()
print(f"服务可用性: {stats['services']['qwen']['availability']}")
# 生成健康报告
report = monitor.generate_health_report()
print(report)
ai-daily/ ├── llm_translator.py # 大模型翻译器 ├── translation_config.py # 翻译配置管理 ├── translation_quality.py # 翻译质量检测 ├── translation_error_handler.py # 错误处理机制 ├── translation_monitor.py # 服务监控工具 ├── arxiv_crawler.py # ArXiv爬虫(集成翻译) ├── translation_config.json # 翻译配置文件 ├── .env.example # 环境变量模板 ├── test_translation_mock.py # 模拟测试脚本 ├── test_error_handling.py # 错误处理测试 └── README_LLM_INTEGRATION.md # 本文档
前端接收的论文数据格式:
{
"title": "英文标题",
"title_zh": "中文标题",
"abstract": "英文摘要",
"abstract_zh": "中文摘要",
"translation_quality": "优",
"authors": ["作者列表"],
"published": "2024-01-01",
"url": "论文链接"
}
Q: 翻译失败,提示API密钥无效
A: 检查 .env 文件中的API密钥是否正确配置
Q: 翻译质量评分过低
A: 调整 translation_quality.py 中的评分标准,或优化翻译提示词
Q: 服务频繁触发熔断器 A: 检查网络连接,调整重试策略和熔断器阈值
Q: 前端不显示中文翻译
A: 确认 papers.json 文件格式正确,包含 title_zh 和 abstract_zh 字段
查看详细日志:
# 查看翻译日志
tail -f translation.log
# 查看错误日志
grep "ERROR" translation.log
# 查看性能统计
grep "performance" translation.log
llm_translator.py 中添加新的客户端初始化逻辑translation_config.py 支持新的配置参数translation_config.json 中添加新提供商配置.env.example修改 translation_quality.py 中的 detect_quality 方法:
def detect_quality(self, original_text: str, translated_text: str,
source_lang: str, target_lang: str) -> QualityResult:
# 实现自定义质量检测逻辑
pass
在 translation_error_handler.py 中添加新的错误类型和处理策略:
class ErrorType(Enum):
# 添加新的错误类型
CUSTOM_ERROR = "custom_error"
本项目采用 MIT 许可证,详见 LICENSE 文件。
欢迎提交 Issue 和 Pull Request 来改进本项目。
如有问题,请联系开发团队或提交Issue。