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