模型交付

ML Kit Translation 语言模型的下载、关闭与删除边界

只讲 ML Kit Translation Android SDK 管理的语言模型及其公开生命周期 API;不套用 Cove 自有下载器,不声称 Cove 集成了 ML Kit Translator。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-08 · Fact IDs: ARCH-01, PRIVACY-01, MLKIT-TRANSLATION-MODELS-2026-10

直接回答

ML Kit Translation 有两个相关但不同的生命周期。Translator 是按源语言和目标语言配置的客户端对象;官方 Android 指南要求调用 downloadModelIfNeeded 并等待任务完成,再调用 translate。另一个 RemoteModelManager 可枚举已下载的 TranslateRemoteModel、查询指定模型是否已下载,并删除指定远程模型。应把下载任务成功、模型登记状态和实际翻译结果作为不同观察:前两者都不能证明输出符合任务验收标准。 官方文档将翻译资源描述为按语言关联、按需下载的模型。TranslateRemoteModel 表示与一种语言相关的模型;其官方参考明确说明 English 是内置的,不应作为可下载或可删除模型。不要推断每个源语言/目标语言组合一定对应两个独立文件,也不要用一个登记项证明翻译方向可用。应检查实际登记状态,再用准确的 TranslatorOptions 翻译一条新样本。 客户端清理不是模型管理 API。ML Kit 要求 Translator 对象不再使用时调用 close;删除远程模型则是独立的 RemoteModelManager.deleteDownloadedModel 操作。不能用 close 证明语言模型已删除,也不应仅因界面或客户端关闭就删模型。如果存储策略确实要求删除,应明确执行模型删除并重新查询登记状态。不要删除 English,因为 TranslateRemoteModel 官方参考说明它是内置模型。 严谨流程记录源/目标语言、TranslatorOptions、DownloadConditions、downloadModelIfNeeded 的结果或异常,以及删除前后的 RemoteModelManager 登记状态。之后关闭普通网络连接,用一条新的、非缓存的翻译请求检查已准备好的流程。模型出现在登记表中,不等于证明语言质量、语言对支持或离线任务成功。删除模型后,应在预期网络条件下测试下一次翻译的行为;没有观察前,不承诺自动重下载或固定错误提示。 公开模型 API 提供操作及与语言关联的模型对象,不是应用可用的私有模型文件路径或密码摘要接口。不要读取 ML Kit 的私有目录,也不要依据这些 API 将其资源标成已通过哈希验证。ARCH-01 定义推理执行位置;PRIVACY-01 提醒,本地推理不证明应用没有其他网络请求。模型准备下载、应用遥测与翻译请求是不同的数据流,应分别测试和说明。 本方法仅适用于引用的 ML Kit Translation Android API 及其当前文档,不描述 Cove 自有 ModelDownloader、LiteRT-LM 模型文件,也不声称 Cove 集成了 Translator。检查公开客户端与远程模型操作,验证所需模型状态,断网后完成一条新的翻译任务,并记录限制。不要仅凭 API 表面发布通用模型大小、语言覆盖、翻译质量或设备兼容结论。

Translator 界面关闭后语言资源仍然存在

Android 团队用 ML Kit Translation 开发文本翻译界面。Fragment 为一个语言方向创建 Translator,在 Wi-Fi 下准备模型、翻译新句子,并在界面结束时关闭客户端。存储审查询问:模型是否也因此删除,以及重新打开界面后同一离线任务能否继续工作。

决策

分别跟踪 Translator 客户端生命周期与 SDK 管理的模型状态。检查已下载模型登记;只有明确需要移除模型时才调用文档化删除操作;重新打开后在预期网络条件下运行一条新翻译。

预期结果

团队可以分别报告客户端关闭、模型登记状态和翻译任务结果;不从 close 推断模型已删除,也不从登记表推断离线任务已通过。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • ARCH-01:端侧 AI 指推理在用户设备执行;下载阶段与任务推理仍应分别记录。
  • PRIVACY-01:本地推理不证明应用没有其他网络请求,语言资源下载和翻译请求不能混成一个网络结论。
  • MLKIT-TRANSLATION-MODELS-2026-10:官方文档区分 Translator 客户端、按需模型下载和 RemoteModelManager 的资产操作。

收到完整字节流还不够;最终落盘、完整性、运行时加载和恢复路径也必须验证。

实施流程

  1. 固定库版本与任务配置. 记录准确的 ML Kit Translation 依赖、Android 构建、源语言和目标语言以及 TranslatorOptions。针对该 API 版本使用官方文档;不要把 LiteRT-LM 或其他 Google 模型服务的行为移植过来。
  2. 准备所需翻译资源. 创建 Translator 并以选定的 DownloadConditions 调用 downloadModelIfNeeded。只有记录任务成功或失败后才开始翻译;进度界面消失或上一次会话成功都不能代替准备状态核验。
  3. 检查 SDK 的模型登记. 用 RemoteModelManager.getDownloadedModels 查询 TranslateRemoteModel,并在需要时对某个远程模型调用 isModelDownloaded。记录与语言关联的对象;English 是内置模型,不要将它列为可下载资源。
  4. 运行一条新的翻译任务. 确定预期网络状态后,用准确 TranslatorOptions 提交新的合成文本。分别记录翻译成功、异常和任务验收,不把下载任务完成或模型登记当成翻译结果。
  5. 关闭客户端并复核模型状态. 客户端不再使用时调用 Translator.close,随后再次查询模型登记。不要把关闭客户端当作模型删除;检查 SDK 模型是仍存在还是发生了其他已观察到的状态变化。
  6. 只通过模型管理器删除目标资源. 若存储策略明确要求移除模型,针对目标非 English 模型调用 RemoteModelManager.deleteDownloadedModel,等待完成并再次查询登记状态。随后在断网和联网条件下分别测试新翻译;不要假设自动下载行为或固定修复提示。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 记录 ML Kit Translation 依赖、TranslatorOptions、DownloadConditions 与准确任务,而不只写一个笼统语言对。
  • 下载任务完成、RemoteModelManager 登记、Translator.close、显式模型删除和新翻译成功分别记录。
  • 依官方 TranslateRemoteModel 参考把 English 视作内置模型;不从源/目标标签推算资产数量,也不承诺所有语言对都受支持。
  • 没有额外证据时不声称私有模型路径、哈希验证、通用模型大小、语言兼容、翻译质量或 Cove 集成 ML Kit Translator。

决策对照表

维度选择或证据解读方式
Translator 客户端针对所选 TranslatorOptions 创建,不再使用时关闭管理客户端/会话资源;不能将 close 等同删除语言模型文件。
远程模型登记查询 TranslateRemoteModel 对象及具体模型状态显示 SDK 报告的已下载模型状态;不证明翻译任务或质量。
显式删除模型对目标模型调用 RemoteModelManager.deleteDownloadedModel这是独立于客户端生命周期的管理动作;应等待完成并复核登记。
新的离线翻译资源准备后断网并提交一条新文本验证所选配置的真实工作流;既有模型状态或缓存翻译本身不足以证明。

需要避免的失败模式

  • 把 Translator.close 当成语言模型已从设备删除的证据。
  • 仅凭 Source/Target 标签推算下载了几个模型文件,或把 English 当作普通可下载模型。
  • 把模型登记状态等同于新翻译任务可离线完成或具有某种质量。

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

Translator.close 会删除已下载语言模型吗?

文档把 close 作为 Translator 对象的清理方式,并另行通过 RemoteModelManager.deleteDownloadedModel 提供模型删除操作。应把两者分开记录,查询登记状态,而不是从客户端关闭推断删除。

每个源语言和目标语言组合都需要下载两个文件吗?

不要从语言对推算文件数量。API 提供与语言关联的 TranslateRemoteModel 对象,并说明 English 是内置模型。查看 SDK 实际登记状态,再测试所配置的翻译方向。

模型已下载是否证明离线翻译成功?

不能。登记状态只是一个观察点。准备好对应 Translator 后断网、提交新文本,单独记录翻译成功或失败;不要把旧缓存结果计作新任务。

我能读取或计算 ML Kit 私有模型文件的哈希吗?

引用的公开模型管理 API 提供已下载状态和删除操作,没有公开的私有文件路径或摘要契约。不要访问 SDK 私有目录,也不要把登记状态称作密码学完整性验证。