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

如何用Yamale验证YAML文件中MODELS_TO_TRY的引用合法性?

用Yamale验证MODELS_TO_TRY与MODEL_OPTIONS的关联

完全可以实现,核心是利用Yamale的自定义验证器功能,确保MODELS_TO_TRY中的每个元素都必须是MODEL_OPTIONS中已定义的键。

实现步骤:

  1. 编写Yamale Schema文件
    先定义基础结构,同时为MODELS_TO_TRY的元素指定自定义验证器标签:

    MODEL_OPTIONS: map(str, str)  # 定义模型选项为字符串键值对
    MODELS_TO_TRY: list(include('model_ref'))  # 列表元素引用自定义验证规则
    
    ---
    model_ref: custom(model_exists)  # 绑定自定义验证器标签
    
  2. 实现自定义验证器类
    继承Yamale的Validator类,重写validate方法,通过上下文获取MODEL_OPTIONS的键集合,检查当前元素是否合法:

    from yamale.validators import Validator
    
    class ModelExistsValidator(Validator):
        tag = 'model_exists'  # 对应schema中的标签
    
        def validate(self, value, path):
            # 从上下文获取整个YAML数据,提取MODEL_OPTIONS的键
            model_options = self.context.get('MODEL_OPTIONS', {})
            valid_model_names = set(model_options.keys())
            
            # 检查当前模型名是否在有效集合中
            if value not in valid_model_names:
                raise ValueError(f"模型 '{value}' 未在MODEL_OPTIONS中定义(路径:{path})")
    
  3. 执行验证逻辑
    加载schema和待验证的YAML文件,注册自定义验证器并传入上下文(把整个YAML数据传递给验证器):

    import yamale
    from yamale.schema import Schema
    
    # 加载schema和待验证数据
    schema = Schema('schema.yaml')
    data = yamale.make_data('your_config.yaml')
    
    # 注册自定义验证器
    custom_validators = {'model_exists': ModelExistsValidator}
    
    # 执行验证,传入上下文让验证器能获取MODEL_OPTIONS
    yamale.validate(schema, data, validators=custom_validators, context=data[0])
    

验证效果:

如果MODELS_TO_TRY中出现MODEL_OPTIONS里没有的模型(比如MODEL_4),验证会直接抛出ValueError,提示该模型未定义。

内容的提问来源于stack exchange,提问作者starfisher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:19:57