使用越南语运行Rasa X出现charmap编码错误及运行告警问题
相关问题排查与说明
初始启动rasa x的编码报错
这个报错不属于Rasa X对越南语的适配缺陷,根因是Windows系统的默认文件编码不兼容:
- 报错链路中,Rasa X加载训练故事数据时,会先把内容写入系统临时文件再读取解析。Windows下Python进程默认使用cp1252(西欧字符集)编码处理临时文件写入,这个字符集不包含越南语的带声调字符(报错里的
\u1ee7就是越南语常用字符ử),写入时就会触发编码异常。 - 之前测试英语功能正常,是因为所有英文字符都在cp1252的编码覆盖范围内,不会触发写入报错,和Rasa X的多语言支持能力没有关联。
彻底解决这类编码问题的方案:
- 激活对应的conda虚拟环境后,配置环境变量
PYTHONUTF8=1,强制Python全局使用UTF-8编码处理所有文件读写,从根源上避免临时文件、日志输出环节的编码不匹配问题。
启动成功后的运行异常告警
启动阶段的编码问题修复后,日志中出现的两类告警也和越南语适配无关,可对应排查处理:
Saving event failed due to an 'IntegrityError'
这是Rasa X本地部署时内置SQLite数据库的写入完整性校验失败,一般是旧版本残留的本地交互记录数据和当前版本的表结构不兼容,或是写入事件时触发了主键重复校验。- 处理方式:停掉Rasa X进程,删除项目目录下的
rasa_x.db数据库文件(该文件仅存储本地交互记录,删除后重启会自动重建),再重新启动rasa x即可解决。
- 处理方式:停掉Rasa X进程,删除项目目录下的
- 遥测事件上报失败的网络告警
这是Rasa X内置的匿名遥测上报功能无法连接外部上报接口导致的,完全不会影响核心对话流程。报错中的代理连接失败、500隧道错误都是网络层面无法连通遥测服务的正常表现。- 处理方式:不需要遥测上报的话,启动
rasa x时追加参数--no-telemetry,直接关闭该功能即可消除这类告警。
- 处理方式:不需要遥测上报的话,启动
关于越南语的适配能力:Rasa Open Source与Rasa X本身不存在针对越南语的支持缺陷,只要所有训练数据、Domain文件统一使用UTF-8编码,即可正常加载、解析越南语的训练样本、交互记录。问题场景下出现的所有启动报错、运行异常,本质都是Windows默认编码不匹配、本地数据库配置问题、遥测功能网络不通导致的,和语言适配能力无关。
内容的提问来源于stack exchange,提问作者Phúc Nguyễn
相关产品推荐
相关产品推荐

