Config

May 29, 2026 · View on GitHub

Dingo 为不同模块设置了各自的配置,让用户可以更加自由地使用项目完成自身的质检需求。

CLI Config

用户在命令行输入指令启动项目时只需要指定配置文件路径:

ParameterTypeDefaultRequiredDescription
--input / -istrNoneYes配置文件路径

配置文件结构

配置文件采用 JSON 格式,包含以下主要结构:

InputArgs 根配置

ParameterTypeDefaultRequiredDescription
task_namestr"dingo"No任务名称
input_pathstr"test/data/test_local_json.json"Yes要检查的文件或目录路径
output_pathstr"outputs/"No结果输出路径
log_levelstr"WARNING"No日志级别,可选值:['DEBUG', 'INFO', 'WARNING', 'ERROR']

Dataset 配置 (dataset)

数据集相关配置:

ParameterTypeDefaultRequiredDescription
sourcestr"hugging_face"Yes数据源类型,可选值:['hugging_face', 'local']
formatstr"json"Yes数据格式,可选值:['json', 'jsonl', 'plaintext', 'listjson', 'csv', 'parquet', 'mineru', 'mineru_v2']
fieldobject-Yes字段映射配置
hf_configobject-NoHuggingFace 特定配置
mineru_configobject-NoMinerU 格式特定配置(仅 mineru / mineru_v2 格式使用)

DatasetMinerUConfig 配置 (dataset.mineru_config)

MinerU 格式特定配置,用于过滤 block 类型:

ParameterTypeDefaultRequiredDescription
include_typeslist[str]nullNo只保留指定的 block 类型(如 ["text", "table", "image"]),null 表示保留全部类型

MinerU 支持的 block 类型包括:text, title, image, table, equation, code, list, header, page_footer, page_footnote, chart 等。

格式说明:

  • mineru:对应 MinerU 的 content_list.json,顶层为 block 数组
  • mineru_v2:对应 MinerU 的 content_list_v2.json,顶层为页面数组,每页包含 block 数组

每个 block 会被转换为一条 Data 记录。block 的 typebboxpage_idx 等原始字段会通过 Pydantic extra="allow" 保留在 Data 对象上。

DatasetField 配置 (dataset.field)

字段映射配置:

ParameterTypeDefaultRequiredDescription
idstr""DependsID 字段名,多级用 '.' 分隔
promptstr""Dependsprompt 字段名,多级用 '.' 分隔
contentstr""Yes内容字段名,多级用 '.' 分隔
contextstr""Depends上下文字段名,多级用 '.' 分隔
imagestr""Depends图像字段名,多级用 '.' 分隔

DatasetHFConfig 配置 (dataset.hf_config)

HuggingFace 特定配置:

ParameterTypeDefaultRequiredDescription
huggingface_splitstr""NoHuggingFace 数据集分割
huggingface_config_namestrnullNoHuggingFace 配置名称

Executor 配置 (executor)

执行器相关配置:

ParameterTypeDefaultRequiredDescription
eval_groupstr""Yes评估模型组
rule_listlist[]Depends规则函数列表
prompt_listlist[]Dependsprompt 列表
start_indexint0No开始检查的数据索引
end_indexint-1No结束检查的数据索引
max_workersint1No最大并发工作线程数
batch_sizeint1No并发检查的最大数据量
multi_turn_modestrnullNo多轮对话解析模式
result_saveobject-No结果保存配置

ExecutorResultSave 配置 (executor.result_save)

结果保存配置:

ParameterTypeDefaultRequiredDescription
badboolfalseNo是否保存错误结果
goodboolfalseNo是否保存正确结果
all_labelsboolfalseNo是否保存所有标签
rawboolfalseNo是否保存原始数据

Evaluator 配置 (evaluator)

评估器相关配置:

ParameterTypeDefaultRequiredDescription
rule_configobject{}Depends规则配置
llm_configobject{}DependsLLM 配置

EvaluatorRuleArgs 配置 (evaluator.rule_config.[rule_name])

规则配置:

ParameterTypeDefaultRequiredDescription
thresholdfloatnullNo规则决策阈值
patternstrnullNo匹配模式字符串
key_listlistnullNo匹配关键词列表
refer_pathlistnullNo参考文件路径或小模型路径

EvaluatorLLMArgs 配置 (evaluator.llm_config.[llm_name])

LLM 配置(支持额外字段,所有额外字段会直接透传给 LLM API):

ParameterTypeDefaultRequiredDescription
modelstrnullNo使用的模型名称
keystrnullNoAPI 密钥
api_urlstrnullNoAPI URL
embedding_configobjectnullNoEmbedding 模型独立配置(RAG 评估器使用)
其他字段any-No所有额外字段直接透传给 LLM API

配置文件示例

{
  "task_name": "dingo",
  "input_path": "test/data/test_local_json.json",
  "output_path": "outputs/",
  "log_level": "WARNING",
  "use_browser": false,

  "dataset": {
    "source": "hugging_face",
    "format": "json",
    "field": {
      "id": "",
      "prompt": "",
      "content": "",
      "context": "",
      "image": ""
    },
    "hf_config": {
      "huggingface_split": "",
      "huggingface_config_name": null
    }
  },

  "executor": {
    "eval_group": "",
    "rule_list": [],
    "prompt_list": [],
    "start_index": 0,
    "end_index": -1,
    "max_workers": 1,
    "batch_size": 1,
    "multi_turn_mode": null,
    "result_save": {
      "bad": false,
      "good": false,
      "raw": false
    }
  },

  "evaluator": {
    "rule_config": {
      "rule_name": {
        "threshold": 0.5,
        "pattern": ".*",
        "key_list": ["key1", "key2"],
        "refer_path": ["path/to/reference"]
      }
    },
    "llm_config": {
      "openai": {
        "model": "gpt-3.5-turbo",
        "key": "your-api-key",
        "api_url": "https://api.openai.com/v1/chat/completions",
        "temperature": 1,
        "top_p": 1,
        "max_tokens": 4000,
        "presence_penalty": 0,
        "frequency_penalty": 0
      }
    }
  }
}

使用方式

CLI 方式

dingo --input config.json

SDK 方式

from dingo import InputArgs, run

# 从文件加载配置
config = InputArgs.parse_file("config.json")
run(config)

# 或从字典创建配置
config_dict = {
    "task_name": "my_task",
    "input_path": "data.json",
    # ... 其他配置
}
config = InputArgs(**config_dict)
run(config)

MinerU 文档解析数据评估

Dingo 原生支持 MinerU 的输出格式(content_list.jsoncontent_list_v2.json),可直接对文档解析结果进行质量评估。

MinerU V1 配置示例

{
  "input_path": "/path/to/content_list.json",
  "dataset": {
    "source": "local",
    "format": "mineru"
  },
  "evaluator": [
    {
      "fields": {"content": "content"},
      "evals": [
        {"name": "RuleColonEnd"},
        {"name": "RuleAbnormalChar"}
      ]
    }
  ]
}

MinerU V2 配置示例(带类型过滤)

{
  "input_path": "/path/to/content_list_v2.json",
  "dataset": {
    "source": "local",
    "format": "mineru_v2",
    "mineru_config": {
      "include_types": ["text", "title", "table"]
    }
  },
  "evaluator": [
    {
      "fields": {"content": "content"},
      "evals": [
        {"name": "RuleContentNull"},
        {"name": "RuleDocRepeat"}
      ]
    }
  ]
}

更多示例参考: examples/document_parser/sdk_mineru_content_list.py

多轮对话模式

Dingo 支持多轮对话数据质检,如MT-Bench、MT-Bench++和MT-Bench101:

ModeDescription
all拼接多轮对话中的所有回合

具体使用方法请参考相关示例文件: sdk_mtbench101_rule_all.pysdk_mtbench101_llm.pysdk_mtbench_rule_all.pysdk_mtbench_llm.py