You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载config.yml遇TypeError:yaml.load()缺失Loader参数的解决求助

解决Rasa加载config.yml时的TypeError问题

问题场景

制作Rasa聊天机器人时,执行加载config.yml的代码触发TypeError,核心代码如下:

from rasa_nlu.training_data import load_data
from rasa_nlu.config import RasaNLUModelConfig
from rasa_nlu.model import Trainer
from rasa_nlu import config

# 加载训练数据
training_data = load_data("intent.md")

# 加载配置并初始化训练器
trainer = Trainer(config.load("config.yml"))

# 训练模型
interpreter = trainer.train(training_data)

# 保存模型
model_directory = trainer.persist("./models/nlu")

触发的错误信息:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-77-03eebd55ea43> in <module>
      8 
      9 # Use trainer to load configuration data the needs to be learnt by the model
---> 10 trainer = Trainer(config.load("config.yml"))
     11 
     12 # Train model on training data

~\anaconda3\envs\py36\lib\site-packages\rasa_nlu\config.py in load(filename, **kwargs)
     42     if filename is not None:
     43         try:
---> 44             file_config = utils.read_yaml_file(filename)
     45         except yaml.parser.ParserError as e:
     46             raise InvalidConfigError("Failed to read configuration file "

~\anaconda3\envs\py36\lib\site-packages\rasa_nlu\utils\__init__.py in read_yaml_file(filename)
    234 def read_yaml_file(filename):
    235     fix_yaml_loader()
---> 236     return yaml.load(read_file(filename, "utf-8"))
    237 
    238 

TypeError: load() missing 1 required positional argument: 'Loader'

错误原因

该错误源于PyYAML版本兼容性问题:PyYAML 5.1及以上版本要求调用yaml.load()时必须显式指定Loader参数(如FullLoader),而旧版Rasa NLU的代码中未添加该参数,导致触发TypeError。

解决方案

方案1:降级PyYAML到兼容版本

执行以下命令将PyYAML降级到5.0.1版本,该版本无需强制指定Loader:

pip install pyyaml==5.0.1

方案2:修改Rasa NLU源码中的YAML加载逻辑

找到Python环境中rasa_nlu/utils/__init__.py文件,定位read_yaml_file函数,将原代码:

def read_yaml_file(filename):
    fix_yaml_loader()
    return yaml.load(read_file(filename, "utf-8"))

修改为以下两种方式之一:

  • 使用安全加载器(推荐):
def read_yaml_file(filename):
    fix_yaml_loader()
    return yaml.safe_load(read_file(filename, "utf-8"))
  • 显式指定Loader:
def read_yaml_file(filename):
    fix_yaml_loader()
    return yaml.load(read_file(filename, "utf-8"), Loader=yaml.FullLoader)

方案3:升级Rasa到新版本

较新的Rasa版本已修复该兼容性问题,执行以下命令升级Rasa:

pip install --upgrade rasa

内容的提问来源于stack exchange,提问作者Vibhuti Narayan Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:15:14