MigoXLab/dingo

Dingo: A Comprehensive AI Data, Model and Application Quality Evaluation Tool

Dingo – AI 数据质量评估平台

是什么 – Dingo 是一个开源的 Python 库(以及支持 SaaS 的产品),可自动评估 AI 训练数据、微调数据集,甚至生产环境中 LLM 或检索增强生成(RAG)系统的输出质量。它结合了快速的规则检查与可选的 LLM 驱动的深度评估,并支持本地运行、通过 Spark 集群运行,或通过内置的模型上下文协议(MCP)服务器实现 IDE 风格集成。


核心功能

功能 Dingo 的实现方式
多源数据摄入 支持读取本地文件(JSONL、CSV、Parquet、TXT)、Hugging Face 数据集、S3 存储桶、SQL 数据库(PostgreSQL、MySQL、SQLite、Oracle、SQL Server),使用流式游标,即使数十亿行数据也能在内存中处理。
字段级流水线 可为不同列配置不同的质量检查(例如在 isbn 上应用 ISBN 规则,在 title 上应用文本质量 LLM)。框架会隔离每个字段的结果,避免上下文泄露。
规则驱动检查 内置 30 多种启发式规则(正则表达式、字符集、PII 检测、格式验证等),以近乎零成本对每条记录执行。可通过简单装饰器注册自定义规则。
LLM 驱动评估 可选的深度检查(如 LLMTextQualityV4/V5)可调用 OpenAI、DeepSeek、Kimi 或本地模型(Llama 3、Qwen)。提示词位于 dingo/model/llm/ 下,易于替换以满足特定领域需求。
代理驱动推理 内置代理(FactCheck、Hallucination)可调用外部工具(网页搜索、Tavily)并执行多步验证。支持两种模式——LangChain ReAct 代理和手动编写的流程以实现细粒度控制。
RAG 评估 提供五项学术验证的指标(忠实度、答案相关性、上下文精确率/召回率、上下文相关性),可用于基准测试检索增强型管道。
可扩展执行 支持 CLI、Python SDK 或 Spark 执行器。并发和批处理大小可配置;Spark 执行器可将任务分发到集群,处理超大规模数据集。
报告生成 提供 JSON 摘要、字段级分解、每条规则违规详情及统计聚合(均值、最小值、最大值、标准差)。SaaS 版本额外提供带交互图表、趋势分析和导出选项的 Web UI。
MCP 服务器 启动轻量级 SSE 或 stdio 服务器(dingo serve),使 Cursor 或 Claude Desktop 等 IDE 可将评估器作为工具调用。

快速开始(本地)

# 安装核心包
pip install dingo-python
# 可选扩展 – 幻觉检测、检索基准测试,或全部
pip install "dingo-python[hhem]"          # 添加 HHEM 模型
pip install "dingo-python[retrieval]"    # 添加 MTEB + pytrec-eval
pip install "dingo-python[all]"          # 所有可选功能

示例 – 单条记录的规则 + LLM 检查

from dingo.io.input import Data
from dingo.model.rule.rule_common import RuleSpecialCharacter
from dingo.model.llm.text_quality.llm_text_quality_v4 import LLMTextQualityV4
from dingo.config.input_args import EvaluatorLLMArgs

sample = Data(data_id='123', prompt='hello', content='I am 8 years old. ^I love apple because:')

# 快速规则检查
print(RuleSpecialCharacter().eval(sample))

# LLM 检查(需要 OpenAI 密钥)
LLMTextQualityV4.dynamic_config = EvaluatorLLMArgs(
    key='YOUR_API_KEY',
    api_url='https://api.openai.com/v1/chat/completions',
    model='gpt-4o',
)
print(LLMTextQualityV4.eval(sample))

示例 – 整体 Hugging Face 数据集评估

from dingo.config import InputArgs
from dingo.exec import Executor

cfg = {
    "input_path": "tatsu-lab/alpaca",
    "dataset": {"source": "hugging_face", "format": "plaintext"},
    "executor": {"result_save": {"bad": True}},
    "evaluator": [{"evals": [{"name": "RuleColonEnd"}, {"name": "RuleSpecialCharacter"}]}]
}
args = InputArgs(**cfg)
executor = Executor.exec_map["local"](args)
result = executor.execute()
print(result)

CLI 使用

# 仅运行规则评估
 dingo eval --input .github/env/local_plaintext.json

# 运行 LLM 支持的评估(例如 GPT‑4o)
 dingo eval --input .github/env/local_json.json

扩展 Dingo

  • 自定义规则 – 继承 BaseRule 并使用 @Model.rule_register('QUALITY_BAD_CUSTOM', ['default']) 注册。
  • 自定义 LLM 评估器 – 继承 BaseOpenAI(或任意 BaseLLM)并使用 @Model.llm_register('custom_evaluator') 注册。
  • 自定义代理 – 使用基于 LangChain 的 AgentFactCheck 模式,或编写手动工作流(参见 examples/register/)。

何时使用 SaaS 版本

若需要无代码 UI、基于角色的访问(JWT + Google OAuth)、可视化仪表板或下游系统的 RESTful API,企业级 SaaS 版本(https://dingo.openxlab.org.cn)在相同评估引擎基础上提供这些功能。


谁应该考虑 Dingo?

  • 必须在将数据输入 LLM 前验证大规模预训练语料库的数据工程师
  • 构建指令微调数据集并希望实现自动化 3H(诚实-有用-无害)检查的ML 研究人员
  • 运行 RAG 管道并需要系统性忠实度与相关性指标的产品团队
  • 寻找生产输出中 PII、毒性或幻觉检测的合规官

许可与社区

  • 许可:Apache‑2.0(基于 README 元数据)。
  • 社区:Discord、WeChat,以及带问题追踪、pre-commit 钩子和 CI 标记的公开 GitHub 仓库。欢迎通过插件注册系统贡献代码。

总结:Dingo 为您提供一个生产级、可扩展的工具箱,用于衡量和提升任何 AI 相关数据的质量——无论其存在于文件、数据库,还是大型语言模型的输出中。

相关

  • 项目
  • Dispatch
  • 项目
  • 项目
  • Dispatch