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