返回市场
野狗服务器

野狗服务器

作者:MigoXLab564 星标更新:2025-11-24

项目介绍

<!-- SEO 元信息和结构化数据 --> <div itemscope itemtype="https://schema.org/SoftwareApplication" align="center" xmlns="http://www.w3.org/1999/html"> <meta itemprop="name" content="Dingo:一个全面的AI数据质量评估工具"> <meta itemprop="description" content="用于机器学习数据集、大语言模型训练数据验证、幻觉检测和RAG系统评估的全面AI驱动的数据质量评估平台"> <meta itemprop="applicationCategory" content="数据质量软件"> <meta itemprop="operatingSystem" content="跨平台"> <meta itemprop="programmingLanguage" content="Python"> <meta itemprop="url" content="https://github.com/MigoXLab/dingo"> <meta itemprop="downloadUrl" content="https://pypi.org/project/dingo-python/"> <meta itemprop="softwareVersion" content="最新"> <meta itemprop="license" content="Apache-2.0"> <!-- logo --> <p align="center"> <img src="docs/assets/dingo-logo.png" width="300px" style="vertical-align:middle;" alt="Dingo AI 数据质量评估工具Logo"> </p> <!-- 徽章 --> <p align="center"> <a href="https://github.com/pre-commit/pre-commit"><img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white" alt="pre-commit"></a> <a href="https://pypi.org/project/dingo-python/"><img src="https://img.shields.io/pypi/v/dingo-python.svg" alt="PyPI 版本"></a> <a href="https://pypi.org/project/dingo-python/"><img src="https://img.shields.io/pypi/pyversions/dingo-python.svg" alt="Python 版本"></a> <a href="https://github.com/DataEval/dingo/blob/main/LICENSE"><img src="https://img.shields.io/github/license/DataEval/dingo" alt="许可证"></a> <a href="https://github.com/DataEval/dingo/stargazers"><img src="https://img.shields.io/github/stars/DataEval/dingo" alt="GitHub 星数"></a> <a href="https://github.com/DataEval/dingo/network/members"><img src="https://img.shields.io/github/forks/DataEval/dingo" alt="GitHub 分支"></a> <a href="https://github.com/DataEval/dingo/issues"><img src="https://img.shields.io/github/issues/DataEval/dingo" alt="GitHub 问题"></a> <a href="https://mseep.ai/app/dataeval-dingo"><img src="https://mseep.net/pr/dataeval-dingo-badge.png" alt="MseeP.ai 安全评估徽章" height="20"></a> <a href="https://deepwiki.com/MigoXLab/dingo"><img src="https://deepwiki.com/badge.svg" alt="询问DeepWiki"></a> <a href="https://archestra.ai/mcp-catalog/dataeval__dingo"><img src="https://archestra.ai/mcp-catalog/api/badge/quality/DataEval/dingo" alt="信任评分"></a> </p> </div> <div align="center">

English · 简体中文 · 日语

</div> <!-- 加入我们 --> <p align="center"> 👋 加入我们的 <a href="https://discord.gg/Jhgb2eKWh8" target="_blank">Discord</a> 和 <a href="./docs/assets/wechat.jpg" target="_blank">微信</a> </p> <p align="center"> 如果你喜欢Dingo,请在GitHub上给我们一颗⭐! <br/> <a href="https://github.com/DataEval/dingo/stargazers" target="_blank"> <img src="docs/assets/clickstar_2.gif" alt="点击星" width="480"> </a> </p>

Dingo简介

Dingo是一个数据质量评估工具,帮助您自动检测数据集中的数据质量问题。Dingo提供了多种内置规则和模型评估方法,并支持自定义评估方法。Dingo支持常用的文本数据集和多模态数据集,包括预训练数据集、微调数据集和评估数据集。此外,Dingo支持多种使用方式,包括本地CLI和SDK,使其易于集成到各种评估平台中,如OpenCompass

架构图

Dingo架构

快速开始

安装

pip install dingo-python

Dingo用例示例

1. 评估LLM聊天数据

from dingo.config.input_args import EvaluatorLLMArgs
from dingo.io.input import Data
from dingo.model.llm.llm_text_quality_model_base import LLMTextQualityModelBase
from dingo.model.rule.rule_common import RuleEnterAndSpace

data = Data(
    data_id='123',
    prompt="你好,介绍一下这个世界",
    content="你好!世界是一个广阔而多样的地方,充满了奇迹、文化和令人惊叹的自然美景。"
)


def llm():
    LLMTextQualityModelBase.dynamic_config = EvaluatorLLMArgs(
        key='YOUR_API_KEY',
        api_url='https://api.openai.com/v1/chat/completions',
        model='gpt-4o',
    )
    res = LLMTextQualityModelBase.eval(data)
    print(res)


def rule():
    res = RuleEnterAndSpace().eval(data)
    print(res)

2. 评估数据集

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

# 从Hugging Face评估数据集
input_data = {
    "input_path": "tatsu-lab/alpaca",  # 来自Hugging Face的数据集
    "dataset": {
        "source": "hugging_face",
        "format": "plaintext"  # 格式:纯文本
    },
    "executor": {
        "eval_group": "sft",  # SFT数据的规则集
        "result_save": {
            "bad": True  # 保存评估结果
        }
    }
}

input_args = InputArgs(**input_data)
executor = Executor.exec_map["local"](input_args)
result = executor.execute()
print(result)

命令行界面

使用规则集进行评估

python -m dingo.run.cli --input test/env/local_plaintext.json

使用LLM(例如GPT-4o)进行评估

python -m dingo.run.cli --input test/env/local_json.json

GUI可视化

评估后(当result_save.bad=True时),会自动生成前端页面。要手动启动前端:

python -m dingo.run.vsl --input 输出目录

其中输出目录包含评估结果,且包含一个summary.json文件。

GUI输出

在线演示

在我们的在线演示中尝试Dingo:(Hugging Face) 🤗

本地演示

在本地尝试Dingo:

cd app_gradio
python app.py

Gradio演示

Google Colab演示

通过Google Colab笔记本交互体验Dingo:在Colab中打开

MCP服务器

Dingo包含一个实验性的模型上下文协议(MCP)服务器。关于运行服务器并与Cursor等客户端集成的详细信息,请参阅专用文档:

英文 · 简体中文 · 日语

视频演示

为了帮助您快速开始使用Dingo MCP,我们制作了一个视频教程:

https://github.com/user-attachments/assets/aca26f4c-3f2e-445e-9ef9-9331c4d7a37b

该视频逐步演示了如何使用Dingo MCP服务器与Cursor。

数据质量指标

Dingo通过基于规则和提示的评估指标提供全面的数据质量评估。这些指标涵盖了多个质量维度,包括有效性、完整性、相似性、安全性等。

📊 查看完整的指标文档 →

我们的评估系统包括:

  • 预训练文本质量评估指标:使用DataMan方法论和增强的多维评估对预训练数据质量进行评估
  • SFT数据评估指标:对监督微调数据进行诚实、有用、无害的评估
  • 分类指标:主题分类和内容分类
  • 多模态评估指标:图像分类和相关性评估
  • 基于规则的质量指标:使用启发式规则进行自动化质量检查,以检测有效性和相似性
  • 事实性评估指标:基于GPT-5系统卡的两阶段事实性评估
  • 等等

大多数指标都有学术来源的支持,以确保客观性和科学严谨性。

在评估中使用LLM评估

要在您的评估中使用这些评估提示,请在配置中指定它们:

input_data = {
    # 其他参数...
    "executor": {
        "prompt_list": ["QUALITY_BAD_SIMILARITY"],  # 要使用的特定提示
    },
    "evaluator": {
        "llm_config": {
            "LLMTextQualityPromptBase": {  # 要使用的LLM模型
                "model": "gpt-4o",
                "key": "YOUR_API_KEY",
                "api_url": "https://api.openai.com/v1/chat/completions"
            }
        }
    }
}

您可以自定义这些提示,以专注于特定的质量维度或适应特定领域的需求。结合适当的LLM模型,这些提示可以实现跨多个维度的全面数据质量评估。

幻觉检测及RAG系统评估

有关使用Dingo的幻觉检测能力的详细指南,包括HHEM-2.1-Open本地推理和基于LLM的评估:

📖 查看幻觉检测指南 →

事实性评估

有关使用Dingo的两阶段事实性评估系统的综合指南:

📖 查看事实性评估指南 →

规则组

Dingo为不同类型的数据集提供了预配置的规则组:

组别使用场景示例规则
default通用文本质量RuleColonEndRuleContentNullRuleDocRepeat等。
sft微调数据集包含default规则以及用于幻觉检测的RuleHallucinationHHEM
ragRAG系统评估RuleHallucinationHHEMPromptHallucination用于响应一致性
hallucination幻觉检测PromptHallucination结合基于LLM的评估
pretrain预训练数据集包含20多个规则,如RuleAlphaWordsRuleCapitalWords等。

要使用特定的规则组:

input_data = {
    "executor": {
        "eval_group": "sft",  # 使用"default","sft","rag","hallucination"或"pretrain"
    }
    # 其他参数...
}

功能亮点

多源及多模态支持

  • 数据源:本地文件、Hugging Face数据集、S3存储
  • 数据类型:预训练、微调和评估数据集
  • 数据模态:文本和图像

基于规则和模型的评估

  • 内置规则:20多个通用启发式评估规则
  • LLM集成:OpenAI、Kimi和本地模型(例如Llama3)
  • 幻觉检测:HHEM-2.1-Open本地模型和基于GPT的评估
  • RAG系统评估:响应一致性和上下文对齐评估
  • 自定义规则:轻松扩展自己的规则和模型
  • 安全评估:Perspective API集成

灵活使用

  • 接口:CLI和SDK选项
  • 集成:易于与其他平台集成
  • 执行引擎:本地和Spark

综合报告

  • 质量指标:7维质量评估
  • 可追溯性:详细的异常跟踪报告

用户指南

自定义规则、提示和模型

如果内置规则不满足您的需求,您可以创建自定义规则:

自定义规则示例

from dingo.model import Model
from dingo.model.rule.base import BaseRule
from dingo.config.input_args import EvaluatorRuleArgs
from dingo.io import Data
from dingo.model.modelres import ModelRes

@Model.rule_register('QUALITY_BAD_RELEVANCE', ['default'])
class MyCustomRule(BaseRule):
    """检查文本中的自定义模式"""

    dynamic_config = EvaluatorRuleArgs(pattern=r'your_pattern_here')

    @classmethod
    def eval(cls, input_data: Data) -> ModelRes:
        res = ModelRes()
        # 您的规则实现在这里
        return res

自定义LLM集成

from dingo.model import Model
from dingo.model.llm.base_openai import BaseOpenAI

@Model.llm_register('my_custom_model')
class MyCustomModel(BaseOpenAI):
    # 自定义实现在这里
    pass

更多示例见:

执行引擎

本地执行

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()

# 获取结果
summary = executor.get_summary()        # 总体评估摘要
bad_data = executor.get_bad_info_list() # 有问题的数据列表
good_data = executor.get_good_info_list() # 高质量数据列表

Spark执行

from dingo.config import InputArgs
from dingo.exec import Executor
from pyspark.sql import SparkSession

# 初始化Spark
spark = SparkSession.builder.appName("Dingo").getOrCreate()
spark_rdd = spark.sparkContext.parallelize([...])  # 您的数据作为Data对象

input_data = {
    "executor": {
        "eval_group": "default",
        "result_save": {"bad": True}
    }
}
input_args = InputArgs(**input_data)
executor = Executor.exec_map["spark"](input_args, spark_session=spark, spark_rdd=spark_rdd)
result = executor.execute()

评估报告

评估后,Dingo生成:

  1. 汇总报告summary.json):总体指标和分数
  2. 详细报告:每个规则违规的具体问题

报告描述:

  1. scorenum_good / total
  2. type_ratio:类型计数 / 总数,例如:QUALITY_BAD_COMPLETENESS / total
  3. name_ratio:名称计数 / 总数,例如:QUALITY_BAD_COMPLETENESS-RuleColonEnd / 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": {
        "QUALITY_BAD_COMPLETENESS": 0.5,
        "QUALITY_BAD_RELEVANCE": 0.5
    },
    "name_ratio": {
        "QUALITY_BAD_COMPLETENESS-RuleColonEnd": 0.5,
        "QUALITY_BAD_RELEVANCE-RuleSpecialCharacter": 0.5
    }
}

未来计划

  • [ ] 更丰富的图形和文本评估指标
  • [ ] 音频和视频数据模态评估
  • [ ] 小模型评估(fasttext,Qurating)
  • [ ] 数据多样性评估

局限性

当前内置的检测规则和模型方法侧重于常见的数据质量问题。对于专门的评估需求,我们建议定制检测规则。

致谢

贡献

我们感谢所有贡献者为改进和增强Dingo所做的努力。请参考贡献指南了解如何为项目做出贡献。

许可证

该项目使用Apache 2.0 开源许可证

该项目使用fasttext进行某些功能,包括语言检测。fasttext根据MIT许可证发布,这与我们的Apache 2.0许可证兼容,并为各种使用场景提供了灵活性。

引用

如果您发现此项目有用,请考虑引用我们的工具:

@misc{dingo,
  title={Dingo:一个全面的AI数据质量评估工具,适用于大型模型},
  author={Dingo 贡献者},
  howpublished={\url{https://github.com/MigoXLab/dingo}},
  year={2024