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