From a7cc6af82da81040051c2657b404b862d12330e4 Mon Sep 17 00:00:00 2001 From: shijin Date: Fri, 12 Jun 2026 14:23:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20EvaluatorRuleArgs=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E8=87=AA=E7=94=B1=E6=8B=93=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dingo/config/input_args.py | 3 +-- dingo/model/rule/rule_common.py | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/dingo/config/input_args.py b/dingo/config/input_args.py index d31232d2..ba3e3c73 100644 --- a/dingo/config/input_args.py +++ b/dingo/config/input_args.py @@ -114,13 +114,12 @@ class ExecutorArgs(BaseModel): class EvaluatorRuleArgs(BaseModel): - model_config = {"extra": "forbid"} + model_config = {"extra": "allow"} threshold: Optional[float] = None pattern: Optional[str] = None key_list: Optional[List[str]] = None refer_path: Optional[List[str]] = None - parameters: Optional[dict] = None class EmbeddingConfigArgs(BaseModel): diff --git a/dingo/model/rule/rule_common.py b/dingo/model/rule/rule_common.py index f9627584..4ab70635 100644 --- a/dingo/model/rule/rule_common.py +++ b/dingo/model/rule/rule_common.py @@ -2691,7 +2691,7 @@ class RuleDictConsistency(BaseRule): } _required_fields = [RequiredField.METADATA, RequiredField.CONTEXT] - dynamic_config = EvaluatorRuleArgs(parameters={"ignore_order": True}) + dynamic_config = EvaluatorRuleArgs(ignore_order=True) @classmethod def _normalize_value(cls, value, ignore_order: bool): @@ -2719,8 +2719,7 @@ def eval(cls, input_data: Data) -> EvalDetail: res = EvalDetail(metric=cls.__name__) left_dict = getattr(input_data, "metadata", None) right_dict = getattr(input_data, "context", None) - parameters = cls.dynamic_config.parameters or {} - ignore_order = parameters.get("ignore_order", True) + ignore_order = getattr(cls.dynamic_config, "ignore_order", True) if not isinstance(left_dict, dict) or not isinstance(right_dict, dict): res.status = True From f86c7e1a97a00374c0d7ce69ca7fb7ddd9db0539 Mon Sep 17 00:00:00 2001 From: shijin Date: Fri, 12 Jun 2026 14:26:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20md=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/config.md | 3 ++- docs/technical/technical_all.md | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/config.md b/docs/config.md index b98dba4a..2e6104f2 100644 --- a/docs/config.md +++ b/docs/config.md @@ -110,7 +110,7 @@ HuggingFace 特定配置: #### EvaluatorRuleArgs 配置 (evaluator.rule_config.[rule_name]) -规则配置: +规则配置(支持额外字段,规则可按需读取自定义参数): | Parameter | Type | Default | Required | Description | |-----------|------|---------|----------|-------------| @@ -118,6 +118,7 @@ HuggingFace 特定配置: | pattern | str | null | No | 匹配模式字符串 | | key_list | list | null | No | 匹配关键词列表 | | refer_path | list | null | No | 参考文件路径或小模型路径 | +| *其他字段* | any | - | No | 规则自定义扩展字段(如 `ignore_order`) | #### EvaluatorLLMArgs 配置 (evaluator.llm_config.[llm_name]) diff --git a/docs/technical/technical_all.md b/docs/technical/technical_all.md index 6aafdc58..3655c39f 100644 --- a/docs/technical/technical_all.md +++ b/docs/technical/technical_all.md @@ -325,7 +325,7 @@ class RuleColonEnd(BaseRule): + metric_type: 函数 rule_register 执行时赋值 + group: 函数 rule_register 执行时赋值 -+ dynamic_config: 开放的自定义接口 ++ dynamic_config: 开放的自定义接口(支持 `EvaluatorRuleArgs` 额外字段扩展,不需要 `parameters` 包裹) 其次,所有的规则都需要执行注册操作,即 Model.rule_register 函数,并指明 metric_type 与 group。 @@ -342,6 +342,12 @@ class RuleColonEnd(BaseRule): dynamic_config = EvaluatorRuleArgs() ``` +例如需要自定义参数时,可直接写为: + +```python +dynamic_config = EvaluatorRuleArgs(ignore_order=True) +``` + 最后,实现 eval 类函数,需要注意接收变量与返回值的类型 ```python