AI Integration - 智能集成
本文档涵盖了 MagicWord 中的 AI 驱动功能,这些功能实现了自动词汇获取和定义生成。该系统使用外部 AI API(主要是通过 SiliconFlow 的 Qwen 模型)提供:
- 单个单词导入: 由全局搜索触发的 AI 驱动的单词定义查找。
- 批量文本导入: 从文本段落中提取和处理多个单词。
- 助记符生成: AI 生成的记忆辅助和例句。
有关使用这些导入单词的间隔重复学习逻辑,请参阅 间隔重复系统 (SM-2)。
系统架构
核心组件
- LibraryViewModel: 协调 AI 操作。
handleGlobalSearch: 编排单词查找和导入。importSingleWord: 单个单词导入。bulkImport: 批量导入。fetchWordDefinitionsFromAi: 获取定义。
- AppConfig: 集中式 AI 配置。
apiKey: API 认证密钥。modelName: 模型标识符 (默认: "Qwen/Qwen2.5-7B-Instruct")。userPersona: 用于个性化示例的用户上下文。serverUrl: AI 服务基础 URL。
Key-Kit 验证系统
支持通过 Key-Kit 机制进行服务器管理的配置,允许用户检索预配置的 API 凭据。
功能:单个单词导入
全局搜索工作流
handleGlobalSearch() 函数实现了一个智能的“搜索或导入”模式:
- 本地搜索: 检查当前和所有其他词库。
- 导航: 如果找到,跳转到该单词。
- 导入: 如果未找到,触发
importSingleWord调用 AI。
AI 提示结构
系统使用精心设计的提示来确保结构化的 JSON 响应。 关键要求:
- LEMMA 形式: 输入 "ran" -> 输出 "run"。
- 严格 JSON: 无 Markdown,无尾随逗号。
- 短语处理: 保留下划线 ("give_up")。
功能:批量文本导入
多阶段处理管道
bulkImport() 函数实现了一个复杂的分块处理系统,具有重试逻辑:
- 单词提取 (Step A): AI 识别可学习单词/短语。
- 温度: 0.1 (确定性)。
- 规则: 短语中的空格替换为下划线。
- 分块并行处理 (Step B):
- 分块: 3 个单词一组。
- 并发: 3 个并行块。
- 重试: 每个块最多重试 3 次。
- 同步: 线程安全的导入跟踪。
性能考量
- 分块策略: 3 个单词 x 3 个批次 = 每个周期处理 9 个单词。
- 网络利用率: 3 个并发 HTTP 请求。
- 温度设置: 提取用 0.1,定义生成用 0.3(平衡创造性)。
错误处理与重试
实施三层重试策略:
- 网络层: OkHttp 重试。
- ViewModel 层: 指数退避。
- 批处理层: 失败块重新排队。
用户反馈
系统通过 importLogs StateFlow 提供实时反馈,UI 显示正在处理的单词和成功/失败状态。