关于 Dingo MCP Server
Dingo MCP 服务把 Dingo 数据质量评估工具暴露给 AI Agent,可调用基于规则和基于 LLM 的评估能力,并列出规则与提示词。Dingo 面向 AI 数据、模型和应用质量评估,适合机器学习工程师和数据工程师。
主要功能
- 01调用基于规则的数据质量评估
- 02调用基于 LLM 的评估能力
- 03列出可用的规则与提示词
- 04支持 SSE 与 stdio 传输方式
- 05支持多种数据源接入
适用场景
- 01在 IDE 中让 Agent 检查训练数据质量
- 02通过 Agent 评估 RAG 系统的检索与生成质量
MCP 相关
Dingo MCP 服务作为 MCP 服务器运行,向 MCP 客户端提供数据质量评估相关的工具、规则和提示词列表。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
如果你喜欢 Dingo,请在 GitHub 上给我们点个 ⭐!
简介
Dingo 是一款全面的 AI 数据、模型和应用质量评估工具,专为 ML 从业者、数据工程师和 AI 研究人员打造。它能帮助你系统地评估和提升训练数据、微调数据集以及生产环境 AI 系统的质量。
🚀 企业版 Dingo SaaS
需要生产级数据质量平台?试试 Dingo SaaS 企业版!
✨ 与开源版本相比,SaaS 提供:
- 🌐 Web UI - 可视化评估界面,无需编写代码
- 🔐 访问控制 - JWT + Google OAuth 2.0
- 📊 可视化报告 - 交互式图表、趋势分析和导出功能
- 🔌 RESTful API - 与现有系统无缝集成
SaaS — 控制面板
SaaS — Playground
SaaS — 评估结果
📝 如何获取免费的 SaaS 代码
审核时间:1-5 个工作日 | 适用于企业数据治理和团队协作
为什么选择 Dingo?
🎯 生产级质量检查 - 从预训练数据集到 RAG 系统,确保 AI 使用高质量数据
🗄️ 多源数据集成 - 无缝连接本地文件、SQL 数据库(PostgreSQL/MySQL/SQLite)、HuggingFace 数据集和 S3 存储
🔍 多字段评估 - 并行地为不同字段应用不同质量规则(例如,为 isbn 验证 ISBN,为 title 检查文本质量)
🤖 RAG 系统评估 - 使用 5 项基于学术研究的指标,全面评估检索和生成质量
🧠 LLM、规则与 Agent 混合评估 - 将快速启发式规则(内置 30+ 项)与基于 LLM 的深度评估结合起来
🚀 灵活执行 - 可在本地运行以快速迭代,也可借助 Spark 扩展至十亿级数据集
📊 丰富的报告 - 提供详细的质量报告、GUI 可视化和字段级洞察
架构图

快速开始
安装
# Core package (includes rule evaluation, LLM evaluation, MCP server, datasource support)
pip install dingo-python
# With HHEM hallucination detection model (requires transformers + torch)
pip install "dingo-python[hhem]"
# With retrieval benchmark evaluation (MTEB + pytrec-eval-terrier)
pip install "dingo-python[retrieval]"
# With all features (HHEM + Agent + Retrieval)
pip install "dingo-python[all]"
Dingo 示例用例
1. 评估 LLM 聊天数据
from dingo.config.input_args import EvaluatorLLMArgs
from dingo.io.input import Data
from dingo.model.llm.text_quality.llm_text_quality_v4 import LLMTextQualityV4
from dingo.model.rule.rule_common import RuleSpecialCharacter
data = Data(
data_id='123',
prompt="hello, introduce the world",
content="�I am 8 years old. ^I love apple because:"
)
def llm():
LLMTextQualityV4.dynamic_config = EvaluatorLLMArgs(
key='YOUR_API_KEY',
api_url='https://api.openai.com/v1/chat/completions',
model='gpt-4o',
)
res = LLMTextQualityV4.eval(data)
print(res)
def rule():
res = RuleSpecialCharacter().eval(data)
print(res)
rule()
2. 评估数据集
from dingo.config import InputArgs
from dingo.exec import Executor
# Evaluate a dataset from Hugging Face
if __name__ == '__main__':
input_data = {
"input_path": "tatsu-lab/alpaca", # Dataset from Hugging Face
"dataset": {
"source": "hugging_face",
"format": "plaintext" # Format: plaintext
},
"executor": {
"result_save": {
"bad": True # Save evaluation results
}
},
"evaluator": [
{
"evals": [
{"name": "RuleColonEnd"},
{"name": "RuleSpecialCharacter"}
]
}
]
}
input_args = InputArgs(**input_data)
executor = Executor.exec_map["local"](input_args)
result = executor.execute()
print(result)
命令行界面
使用规则集进行评估
dingo eval --input .github/env/local_plaintext.json
使用 LLM 进行评估(例如 GPT-4o)
dingo eval --input .github/env/local_json.json
MCP 服务
Dingo 内置 Model Context Protocol (MCP) 服务,可用于集成 AI Agent:
# Start MCP server (SSE transport, default port 8000)
dingo serve
# Custom port
dingo serve --port 9000
# stdio transport (for Claude Desktop)
dingo serve --transport stdio
有关详细设置以及与 Cursor/Claude Desktop 的集成说明,请参阅专门的文档:
视频演示
为帮助你快速上手 Dingo MCP,我们制作了视频指南:
https://github.com/user-attachments/assets/aca26f4c-3f2e-445e-9ef9-9331c4d7a37b
本视频逐步演示如何在 Cursor 中使用 Dingo MCP 服务。
📚 数据质量指标
Dingo 在多个维度提供 100+ 项评估指标,兼顾基于规则的速度与基于 LLM 的深度评估。
指标类别
| 类别 | 示例 | 用例 |
|---|---|---|
| 预训练文本质量 | 完整性、有效性、相似度、安全性 | 大模型预训练数据筛选 |
| SFT 数据质量 | 诚实、有帮助、无害(3H) | 指令微调数据 |
| RAG 评估 | 忠实度、上下文精确率、答案相关性 | RAG 系统评估 |
| 幻觉检测 | HHEM-2.1-Open、事实性检查 | 生产环境中的 AI 可靠性 |
| 分类 | 主题分类、内容标注 | 数据整理 |
| 多模态 | 图文相关性、VLM 质量、OCR 视觉评估 | 视觉语言数据 |
| 安全性 | PII 检测、Perspective API 毒性检测 | 隐私与安全 |
📊 查看完整指标文档 →
📖 RAG 评估指南 → | 中文版
🔍 幻觉检测指南 → | 中文版
✅ 事实性评估指南 → | 中文版
👁️ VLM 渲染评判指南 → | 中文版
大多数指标都有学术研究作为依据,以确保科学严谨性。
快速使用指标
llm_config = {
"model": "gpt-4o",
"key": "YOUR_API_KEY",
"api_url": "https://api.openai.com/v1/chat/completions"
}
input_data = {
"evaluator": [
{
"fields": {"content": "content"},
"evals": [
{"name": "RuleAbnormalChar"}, # Rule-based (fast)
{"name": "LLMTextQualityV5", "config": llm_config} # LLM-based (deep)
]
}
]
}
自定义:所有提示词都定义在 dingo/model/llm/ 目录中(按类别组织:text_quality/、rag/、hhh/ 等)。可根据特定领域的需求扩展或修改这些提示词。
🎓 从业者关键概念
Dingo 如何满足生产环境要求?
1. 多字段评估流水线
在单次运行中对不同字段应用不同的质量检查:
"evaluator": [
{"fields": {"content": "isbn"}, "evals": [{"name": "RuleIsbn"}]},
{"fields": {"content": "title"}, "evals": [{"name": "RuleAbnormalChar"}]},
{"fields": {"content": "description"}, "evals": [{"name": "LLMTextQualityV5"}]}
]
重要性:无需为每个字段单独编写脚本,即可评估结构化数据(例如数据库表)。
2. 大型数据集的流式处理
SQL 数据源使用 SQLAlchemy 的服务端游标:
# Handles billions of rows without OOM
for data in dataset.get_data(): # Yields one row at a time
result = evaluator.eval(data)
重要性:无需导出到中间文件,即可处理生产数据库。
3. 内存中的字段隔离
RAG 评估可防止不同字段组合之间发生上下文串扰:
outputs/
├── user_input,response,retrieved_contexts/ # Faithfulness group
└── user_input,response/ # Answer Relevancy group
重要性:评估多个字段组合时,确保指标计算准确。
4. 规则与大模型混合策略
结合快速规则(覆盖率为 100%)与抽样大模型检查(覆盖率为 10%):
"evals": [
{"name": "RuleAbnormalChar"}, # Fast, runs on all data
{"name": "LLMTextQualityV5"} # Expensive, sample if needed
]
重要性:在生产级评估中平衡成本与覆盖率。
5. 通过注册机制实现可扩展性
为自定义规则、提示词和模型提供简洁的插件架构:
@Model.rule_register('QUALITY_BAD_CUSTOM', ['default'])
class MyCustomRule(BaseRule):
@classmethod
def eval(cls, input_data: Data) -> EvalDetail:
# Example: check if content is empty
if not input_data.content:
return EvalDetail(
metric=cls.__name__,
status=True, # Found an issue
label=[f'{cls.metric_type}.{cls.__name__}'],
reason=["Content is empty"]
)
return EvalDetail(
metric=cls.__name__,
status=False, # No issue found
label=['QUALITY_GOOD']
)
重要性:无需分叉代码库,即可适应特定领域的需求。
🌟 功能亮点
📊 多源数据集成
多样化数据源 - 连接到数据所在位置
✅ 本地文件:JSONL、CSV、TXT、Parquet
✅ SQL 数据库:PostgreSQL、MySQL、SQLite、Oracle、SQL Server(支持流式处理)
✅ 云存储:S3 和兼容 S3 的存储
✅ ML 平台:直接集成 HuggingFace 数据集
面向企业的 SQL 支持 - 集成生产数据库
✅ 为十亿级数据集提供高效的内存流式处理
✅ 连接池和自动资源清理
✅ 复杂 SQL 查询(JOIN、WHERE、聚合)
✅ 借助 SQLAlchemy 支持多种方言
多字段质量检查 - 针对不同字段应用不同规则
✅ 并行评估流水线(例如,同时进行 ISBN 验证和文本质量评估)
✅ 字段别名和嵌套字段提取(user.profile.name)
✅ 为每个字段独立生成结果报告
✅ 采用 ETL 流水线架构,实现灵活的数据转换
🤖 RAG 系统评估
5 项有学术研究支持的指标 - 基于 RAGAS、DeepEval、TruLens 的研究
✅ 忠实度:答案与上下文的一致性(幻觉检测)
✅ 答案相关性:答案与查询的匹配程度
✅ 上下文精确率:检索精确率
✅ 上下文召回率:检索召回率
✅ 上下文相关性:上下文与查询的相关性
全面的报告 - 自动汇总统计数据
✅ 每项指标的平均值、最小值、最大值和标准差
✅ 按字段分组的结果
✅ 批量和单次评估模式
🧠 混合评估系统
基于规则 - 快速、确定且经济高效
✅ 30 多项内置规则(文本质量、格式、PII 检测)
✅ 正则表达式、启发式方法、统计检查
✅ 自定义规则注册
基于 LLM - 深入的语义理解
✅ OpenAI(GPT-4o、GPT-3.5)、DeepSeek、Kimi
✅ 本地模型(Llama3、Qwen)
✅ 视觉语言模型(InternVL、Gemini)
✅ 自定义提示词注册
基于 Agent - 使用工具进行多步推理
✅ 集成网络搜索(Tavily)
✅ 自适应上下文收集
✅ 多源事实核验
✅ 自定义 Agent 和工具注册
可扩展架构
✅ 基于插件的规则/提示词/模型注册
✅ 清晰划分职责(Agent、工具、编排)
✅ 特定领域定制
🚀 灵活的执行与集成
多种接口
✅ 用于快速检查的 CLI
✅ 用于集成的 Python SDK
✅ 面向 IDE(Cursor 等)的 MCP(模型上下文协议)服务
可扩展的执行能力
✅ 用于快速迭代的本地执行器
✅ 用于分布式处理的 Spark 执行器
✅ 可配置的并发和批处理
数据源
✅ 本地文件:JSONL、CSV、TXT、Parquet 格式
✅ Hugging Face:直接集成 HF 数据集中心
✅ S3 存储:AWS S3 和兼容 S3 的存储
✅ SQL 数据库:PostgreSQL、MySQL、SQLite、Oracle、SQL Server(面向大规模数据的流式处理)
模态
✅ 文本(聊天、文档、代码)
✅ 图像(支持 VLM)
✅ 多模态(文本 + 图像一致性)
📈 丰富的报告与可视化
多层级报告
✅ 包含总体评分的摘要 JSON
✅ 字段级细分
✅ 各规则的违规详情
✅ 类型和名称分布
GUI 可视化(通过 Dingo SaaS)
✅ 支持交互式数据探索的 Web UI
✅ 带趋势分析的可视化报告
✅ 异常跟踪
指标汇总
✅ 自动统计(平均值、最小值、最大值、标准差)
✅ 按字段分组的指标
✅ 总体质量评分
📖 用户指南
🔧 可扩展性
Dingo 采用简洁的插件架构,支持针对特定领域进行定制:
自定义规则注册
from dingo.model import Model
from dingo.model.rule.base import BaseRule
from dingo.io import Data
from dingo.io.output.eval_detail import EvalDetail
@Model.rule_register('QUALITY_BAD_CUSTOM', ['default'])
class DomainSpecificRule(BaseRule):
"""Check domain-specific patterns"""
@classmethod
def eval(cls, input_data: Data) -> EvalDetail:
text = input_data.content
# Your custom logic
is_valid = your_validation_logic(text)
return EvalDetail(
metric=cls.__name__,
status=not is_valid, # False = good, True = bad
label=['QUALITY_GOOD' if is_valid else 'QUALITY_BAD_CUSTOM'],
reason=["Validation details..."]
)
自定义 LLM/提示词注册
from dingo.model import Model
from dingo.model.llm.base_openai import BaseOpenAI
@Model.llm_register('custom_evaluator')
class CustomEvaluator(BaseOpenAI):
"""Custom LLM evaluator with specialized prompts"""
_metric_info = {
"metric_name": "CustomEvaluator",
"metric_type": "LLM-Based Quality",
"category": "Custom Category"
}
prompt = """Your custom prompt here..."""
示例:
基于 Agent 的评估与工具
Dingo 支持基于 Agent 的评估器,可使用外部工具进行多步推理和自适应上下文收集。提供两种实现模式:
模式 1:基于 LangChain(例如 AgentFactCheck)
- 由框架驱动,支持自主多步推理
- 使用 LangChain 1.0 的
create_agent和 ReAct 模式 - 适用于:复杂推理任务、快速原型开发
- 代码更少,声明式程度更高
模式 2:自定义工作流(例如 AgentHallucination)
- 由开发者驱动,可显式控制工作流
- 手动调用工具并与 LLM 交互
- 适用于:组合现有评估器、特定领域的工作流
- 全面掌控,行为明确
两种模式使用相同的配置接口,对用户完全透明。
内置 Agent:
AgentFactCheck:基于 LangChain 的事实核查,可自主控制搜索AgentHallucination:通过自适应上下文收集进行幻觉检测的自定义工作流ArticleFactChecker:两阶段文章事实核查——先提取可验证的主张,再使用网络搜索和 Arxiv 并行核查每项主张,并可配置并发控制
快速示例:
from dingo.io import Data
from dingo.io.output.eval_detail import EvalDetail
from dingo.model import Model
from dingo.model.llm.agent.base_agent import BaseAgent
@Model.llm_register('MyAgent')
class MyAgent(BaseAgent):
"""Custom agent with tool support"""
available_tools = ["tavily_search", "my_custom_tool"]
max_iterations = 5
@classmethod
def eval(cls, input_data: Data) -> EvalDetail:
# Use tools for fact-checking
search_result = cls.execute_tool('tavily_search', query=input_data.content)
# Multi-step reasoning with LLM
result = cls.send_messages([...])
return EvalDetail(...)
有关如何选择和实现 Agent 模式的详细指南,请参阅 Agent 开发指南。
配置示例:
{
"evaluator": [{
"evals": [{
"name": "AgentHallucination",
"config": {
"key": "openai-api-key",
"model": "gpt-4",
"parameters": {
"agent_config": {
"max_iterations": 5,
"tools": {
"tavily_search": {"api_key": "tavily-key"}
}
}
}
}
}]
}]
}
了解更多:
- Agent 开发指南 - 创建自定义 Agent 和工具的综合指南
- AgentHallucination 示例 - 生产级 Agent 示例
- AgentFactCheck 示例 - LangChain Agent 示例
- ArticleFactChecker 示例 - 文章规模的两阶段事实核查
⚙️ 执行模式
本地执行器(开发与小规模场景)
from dingo.config import InputArgs
from dingo.exec import Executor
input_args = InputArgs(**input_data)
executor = Executor.exec_map["local"](input_args)
result = executor.execute()
# Access results
summary = executor.get_summary() # Overall metrics
bad_data = executor.get_bad_info_list() # Quality issues
good_data = executor.get_good_info_list() # High-quality data
适用场景:快速迭代、调试、数据集 < 100K 行
Spark 执行器(生产与大规模场景)
from pyspark.sql import SparkSession
from dingo.exec import Executor
spark = SparkSession.builder.appName("Dingo").getOrCreate()
spark_rdd = spark.sparkContext.parallelize(your_data)
executor = Executor.exec_map["spark"](
input_args,
spark_session=spark,
spark_rdd=spark_rdd
)
result = executor.execute()
适用场景:生产流水线、分布式处理、数据集 > 1M 行
检索基准测试执行器
使用 NDCG、Recall 和 MRR 等指标,根据 MTEB 标准检索基准(SciFact、SCIDOCS 等)评估搜索 API。
命令行:
pip install dingo-python[retrieval]
dingo eval-retrieval --backend agentic --tasks SciFact \
--api-url https://api.sciverse.space \
--api-token YOUR_TOKEN --limit 100 --max-workers 8
dingo eval-retrieval --backend meta_search --tasks SciFact \
--api-url https://api.sciverse.space \
--api-token YOUR_TOKEN --limit 100 --rate-limit 1.0 \
--freshness-boost MILD \
--filters-json '[{"field": "publication_published_year", "operator": "FILTER_OP_GTE", "value": 2010}]'
dingo eval-retrieval --backend google_scholar --tasks SciFact \
--api-token YOUR_SERPAPI_KEY --limit 100 --rate-limit 1.0
dingo eval-retrieval --backend openalex --tasks SciFact \
--api-token YOUR_OPENALEX_API_KEY --limit 100
dingo eval-retrieval --backend openalex --tasks SciFact \
--api-token YOUR_OPENALEX_API_KEY --limit 50 \
--search-type semantic --rate-limit 1.0 --max-workers 1
SDK:
from dingo.config import InputArgs
from dingo.exec import Executor
input_data = {
"input_path": "SciFact",
"output_path": "outputs/retrieval_eval",
"executor": {
"retrieval": {
"backend": "agentic",
"api_url": "https://api.sciverse.space",
"api_token": "YOUR_TOKEN",
"limit": 100,
"max_workers": 8,
}
},
}
input_args = InputArgs(**input_data)
executor = Executor.exec_map["retrieval"](input_args)
result = executor.execute()
print(result)
适用场景:根据学术基准评估搜索/检索 API、比较检索后端
评估报告
评估完成后,Dingo 会生成:
- 摘要报告(
summary.json):总体指标和分数 - 详细报告:每项规则违规对应的具体问题
报告说明:
- score:
num_good/total - type_ratio:类型数量 / 总数,例如:
QUALITY_BAD_COMPLETENESS/total
摘要示例:
{
"task_id": "d6c922ec-981c-11ef-b723-7c10c9512fac",
"task_name": "dingo",
"eval_group": "default",
"input_path": "test/data/test_local_jsonl.jsonl",
"output_path": "outputs/d6c921ac-981c-11ef-b723-7c10c9512fac",
"create_time": "20241101_144510",
"score": 50.0,
"num_good": 1,
"num_bad": 1,
"total": 2,
"type_ratio": {
"content": {
"QUALITY_BAD_COMPLETENESS.RuleColonEnd": 0.5,
"QUALITY_BAD_RELEVANCE.RuleSpecialCharacter": 0.5
}
}
}
🚀 路线图与贡献
未来计划
- Agent-as-a-Judge - 通过多 Agent 辩论模式减少偏见并处理复杂推理
- SaaS 平台 - 提供 API 访问和仪表板的托管评估服务
- 音频与视频模态 - 扩展文本/图像以外的模态
- 多样性指标 - 统计多样性评估
- 实时监控 - 在生产流水线中持续进行质量检查
局限性
当前内置的检测规则和模型方法主要针对常见的数据质量问题。对于特殊评估需求,我们建议自定义检测规则。
致谢
贡献
感谢所有贡献者为改进和完善 Dingo 所付出的努力。有关如何为项目贡献代码,请参阅贡献指南。
许可证
本项目采用 Apache 2.0 开源许可证。
本项目使用 fasttext 实现语言检测等部分功能。fasttext 采用 MIT License,与我们的 Apache 2.0 许可证兼容,并为各种使用场景提供灵活性。
引用
如果您觉得本项目有用,请考虑引用我们的工具:
@misc{dingo,
title={Dingo: A Comprehensive AI Data Quality Evaluation Tool for Large Models},
author={Dingo Contributors},
howpublished={\url{https://github.com/MigoXLab/dingo}},
year={2024}
}
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。