feat(#674): 接入豆包大模型 Phase 1 - 智能标题生成 + 统一AI服务层 #752
Reference in New Issue
Block a user
Delete Branch "feat/doubao-ai-integration-phase1"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
变更说明
#674 接入豆包大模型 Phase 1 完成。
功能清单
1. 统一 AI 服务层 (
apps/api/app/services/ai_service.py)DoubaoAIClient封装豆包 OpenAI 兼容接口is_available返回 false2. 智能标题生成
3. API 接口 (
/api/v1/ai/)POST /ai/titles/generate— 生成智能标题GET /ai/titles/styles— 获取支持的风格列表4. 配置项
DOUBAO_API_KEY— 豆包API密钥(空=降级模式)DOUBAO_MODEL— 模型ID,默认 doubao-seed-1-6-250615DOUBAO_BASE_URL— 方舟平台地址DOUBAO_TIMEOUT— 超时时间,默认30sDOUBAO_MAX_RETRIES— 重试次数,默认2次测试
后续 Phase
代码审查结果 - PR #752
⚠️ 问题(2个需要修改)
apps/api/app/services/ai_service.py 第97行:HTTP客户端使用不当,存在性能隐患。
httpx.post便捷函数发起请求,每次调用都会创建一个新的连接,无法复用连接池。在高并发场景下,会导致频繁建立TCP连接,增加延迟和资源消耗,甚至可能触发文件描述符耗尽。httpx.Client()(同步) 或httpx.AsyncClient()(异步) 作为上下文管理器或单例,以利用连接池。apps/api/app/services/ai_service.py 第317-339行:存在未使用的死代码。
AIService类和get_ai_service单例获取函数,但在routes/ai.py中实际调用的是模块级函数generate_smart_titles,并未使用该类。这增加了代码维护成本,容易引起误导。AIService类及get_ai_service函数,保持代码简洁。💡 建议(2个可选)
apps/api/app/services/ai_service.py 第193行:模块导入位置不规范。
_parse_titles_from_response函数内部进行了import re。虽然 Python 会缓存导入,但将标准库导入放在函数内部不符合 Python 编码规范(PEP 8),应移至文件顶部。apps/api/app/services/ai_service.py 第317行:变量定义顺序存在潜在风险。
get_ai_service函数定义在第317行,但其引用的全局变量_ai_service定义在第326行。虽然 Python 运行时能通过(因为函数体不立即执行),但违反了“先定义后使用”的直观原则,若在模块加载期间有特殊调用可能引发NameError。建议调整顺序,将变量定义移至函数之前。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 03:43:11 | 模型:
🗑️ 预览环境已清理
PR #752 已关闭或合并,对应的预览环境已被清理。