Dingo MCP Server

by DataEval
Apache 2.0
141

Integrations

  • Offers community support through Discord channel

  • References GitHub for project hosting, stars, forks, and issue tracking

  • Supports interaction with Hugging Face datasets, enabling evaluation of data quality for datasets hosted on the platform

Английский |简体中文

Журнал изменений

  • 2024/12/27: Инициализация проекта

Введение

Dingo — это инструмент оценки качества данных, который помогает вам автоматически обнаруживать проблемы с качеством данных в ваших наборах данных. Dingo предоставляет множество встроенных правил и методов оценки моделей, а также поддерживает пользовательские методы оценки. Dingo поддерживает часто используемые текстовые наборы данных и мультимодальные наборы данных, включая наборы данных предварительной подготовки, наборы данных тонкой настройки и наборы данных оценки. Кроме того, Dingo поддерживает несколько методов использования, включая локальный CLI и SDK, что упрощает интеграцию в различные платформы оценки, такие как OpenCompass .

Архитектурная схема

Быстрый старт

Установка

pip install dingo-python

Примеры использования

1. Оценить локальный текстовый файл (открытый текст)

from dingo.io import InputArgs from dingo.exec import Executor # Evaluate a plaintext file input_data = { "eval_group": "sft", # Rule set for SFT data "input_path": "data.txt", # Path to local text file "dataset": "local", "data_format": "plaintext", # Format: plaintext "save_data": True # Save evaluation results } input_args = InputArgs(**input_data) executor = Executor.exec_map["local"](input_args) result = executor.execute() print(result)

2. Оцените набор данных «Обнимающееся лицо»

from dingo.io import InputArgs from dingo.exec import Executor # Evaluate a dataset from Hugging Face input_data = { "eval_group": "sft", # Rule set for SFT data "input_path": "tatsu-lab/alpaca", # Dataset from Hugging Face "data_format": "plaintext", # Format: plaintext "save_data": True # Save evaluation results } input_args = InputArgs(**input_data) executor = Executor.exec_map["local"](input_args) result = executor.execute() print(result)

3. Оцените формат JSON/JSONL

from dingo.io import InputArgs from dingo.exec import Executor # Evaluate a JSON file input_data = { "eval_group": "default", # Default rule set "input_path": "data.json", # Path to local JSON file "dataset": "local", "data_format": "json", # Format: json "column_content": "text", # Column containing the text to evaluate "save_data": True # Save evaluation results } input_args = InputArgs(**input_data) executor = Executor.exec_map["local"](input_args) result = executor.execute() print(result)

4. Использование LLM для оценки

from dingo.io import InputArgs from dingo.exec import Executor # Evaluate using GPT model input_data = { "input_path": "data.jsonl", # Path to local JSONL file "dataset": "local", "data_format": "jsonl", "column_content": "content", "custom_config": { "prompt_list": ["PromptRepeat"], # Prompt to use "llm_config": { "detect_text_quality": { "model": "gpt-4o", "key": "YOUR_API_KEY", "api_url": "https://api.openai.com/v1/chat/completions" } } } } input_args = InputArgs(**input_data) executor = Executor.exec_map["local"](input_args) result = executor.execute() print(result)

Интерфейс командной строки

Оценка с помощью наборов правил

python -m dingo.run.cli --input_path data.txt --dataset local -e sft --data_format plaintext --save_data True

Оцените с помощью LLM (например, GPT-4o)

python -m dingo.run.cli --input_path data.json --dataset local -e openai --data_format json --column_content text --custom_config config_gpt.json --save_data True

Пример config_gpt.json :

{ "llm_config": { "openai": { "model": "gpt-4o", "key": "YOUR_API_KEY", "api_url": "https://api.openai.com/v1/chat/completions" } } }

Визуализация графического интерфейса

После оценки (с save_data=True ) будет автоматически сгенерирована страница frontend. Чтобы вручную запустить frontend:

python -m dingo.run.vsl --input output_directory

Где output_directory содержит результаты оценки с файлом summary.json .

Онлайн-демонстрация

Попробуйте Dingo в нашей онлайн-демонстрации: (Обнимающее лицо)🤗

Показатели качества данных

Dingo классифицирует проблемы качества данных по 7 измерениям метрик качества. Каждое измерение можно оценить с помощью как методов на основе правил, так и подсказок LLM:

Метрика качестваОписаниеПримеры правилПримеры подсказок LLM
ПОЛНОТАПроверяет, являются ли данные неполными или отсутствуютRuleColonEnd , RuleContentNullПроверяет, заканчивается ли текст двоеточием или многоточием, содержит ли он непарные скобки или отсутствуют ли в нем критические компоненты.
ЭФФЕКТИВНОСТЬПроверяет, являются ли данные значимыми и правильно ли они отформатированы.RuleAbnormalChar , RuleHtmlEntity , RuleSpecialCharacterОбнаруживает искаженный текст, слова, слипшиеся без пробелов, и текст с отсутствующими знаками препинания.
БЕГЛОСТЬПроверяет грамматическую правильность текста и его естественность при чтенииRuleAbnormalNumber , RuleNoPunc , RuleWordStuckОпределяет слишком длинные слова, фрагменты текста без знаков препинания или контент с хаотичным порядком чтения
АКТУАЛЬНОСТЬОбнаруживает нерелевантный контент в данныхВарианты RuleHeadWord для разных языковПроверяет на наличие нерелевантной информации, такой как сведения о цитатах, верхние/нижние колонтитулы, маркеры сущностей, HTML-теги
БЕЗОПАСНОСТЬВыявляет конфиденциальную информацию или конфликты ценностейRuleIDCard , RuleUnsafeWordsПроверяет персональные данные и контент, связанный с азартными играми, порнографией, политическими вопросами
СХОДСТВООбнаруживает повторяющийся или очень похожий контентRuleDocRepeatОценивает текст на предмет последовательно повторяющегося содержимого или многократного использования специальных символов.
ПОНЯТНОСТЬОценивает, насколько легко интерпретировать данныеRuleCapitalWordsОбеспечивает правильное форматирование формул LaTeX и Markdown с правильной сегментацией и переносами строк.

Оценка качества LLM

Dingo предоставляет несколько методов оценки на основе LLM, определенных подсказками в каталоге dingo/model/prompt . Эти подсказки регистрируются с помощью декоратора prompt_register и могут быть объединены с моделями LLM для оценки качества:

Подсказки по оценке качества текста

Тип подсказкиМетрическаяОписание
TEXT_QUALITY_V2 , TEXT_QUALITY_V3Различные качественные параметрыКомплексная оценка качества текста, охватывающая эффективность, релевантность, полноту, понятность, схожесть, беглость и безопасность
QUALITY_BAD_EFFECTIVENESSЭффективностьОбнаруживает искаженный текст и антисканирующий контент
QUALITY_BAD_SIMILARITYСходствоВыявляет проблемы повторения текста
WORD_STICKБеглостьПроверяет слова на наличие слипшихся слов без надлежащего интервала
CODE_LIST_ISSUEПолнотаОценивает блоки кода и проблемы форматирования списков
UNREAD_ISSUEЭффективностьОбнаруживает нечитаемые символы из-за проблем с кодировкой

Подсказки по оценке 3H (честные, полезные, безвредные)

Тип подсказкиМетрическаяОписание
QUALITY_HONESTЧестностьОценивает, содержат ли ответы точную информацию без фальсификаций или обмана.
QUALITY_HELPFULПолезностьОценивает, отвечают ли ответы непосредственно на вопросы и следуют ли они соответствующим инструкциям
QUALITY_HARMLESSБезвредностьПроверяет, не содержат ли ответы вредоносного контента, дискриминационного языка и опасной помощи

Подсказки для оценки предметной области

Тип подсказкиМетрическаяОписание
TEXT_QUALITY_KAOTIКачество экзаменационных вопросовСпециализированная оценка качества экзаменационных вопросов, уделяющая особое внимание отображению формул, форматированию таблиц, структуре абзацев и форматированию ответов.
Html_AbstractКачество извлечения HTMLСравнивает различные методы извлечения Markdown из HTML, оценивая полноту, точность форматирования и семантическую согласованность.

Подсказки по классификации

Тип подсказкиМетрическаяОписание
CLASSIFY_TOPICКатегоризация темКлассифицирует текст по таким категориям, как языковая обработка, письмо, код, математика, ролевая игра или вопросы и ответы по знанию
CLASSIFY_QRКлассификация изображенийРаспознает изображения как CAPTCHA, QR-код или обычные изображения

Подсказки по оценке изображения

Тип подсказкиМетрическаяОписание
IMAGE_RELEVANCEРелевантность изображенияОценивает, соответствует ли изображение эталонному изображению по количеству лиц, деталям и визуальным элементам.

Использование оценки LLM при оценке

Чтобы использовать эти подсказки для оценки в своих оценках, укажите их в своей конфигурации:

input_data = { # Other parameters... "custom_config": { "prompt_list": ["QUALITY_BAD_SIMILARITY"], # Specific prompt to use "llm_config": { "detect_text_quality": { # LLM model to use "model": "gpt-4o", "key": "YOUR_API_KEY", "api_url": "https://api.openai.com/v1/chat/completions" } } } }

Вы можете настроить эти подсказки, чтобы сосредоточиться на определенных измерениях качества или адаптироваться к определенным требованиям домена. В сочетании с соответствующими моделями LLM эти подсказки позволяют проводить комплексную оценку качества данных по нескольким измерениям.

Группы правил

Dingo предоставляет предварительно настроенные группы правил для различных типов наборов данных:

ГруппаВариант использованияПримеры правил
defaultОбщее качество текстаRuleColonEnd , RuleContentNull , RuleDocRepeat и т. д.
sftТонкая настройка наборов данныхПравила по default плюс RuleLineStartWithBulletpoint
pretrainНаборы данных для предварительного обученияПолный набор из более чем 20 правил, включая RuleAlphaWords , RuleCapitalWords и т. д.

Чтобы использовать определенную группу правил:

input_data = { "eval_group": "sft", # Use "default", "sft", or "pretrain" # other parameters... }

Основные характеристики

Поддержка из разных источников и в разных режимах

  • Источники данных : локальные файлы, наборы данных Hugging Face, хранилище S3
  • Типы данных : наборы данных для предварительного обучения, тонкой настройки и оценки.
  • Модальности данных : Текст и изображение

Оценка на основе правил и моделей

  • Встроенные правила : более 20 общих эвристических правил оценки
  • Интеграция LLM : OpenAI, Kimi и локальные модели (например, Llama3)
  • Пользовательские правила : легко расширяйте свои собственные правила и модели.
  • Оценка безопасности : интеграция API Perspective

Гибкое использование

  • Интерфейсы : CLI и SDK-опции
  • Интеграция : Простая интеграция с другими платформами
  • Движки исполнения : локальные и Spark

Комплексная отчетность

  • Метрики качества : 7-мерная оценка качества
  • Прослеживаемость : подробные отчеты для отслеживания аномалий

Руководство пользователя

Пользовательские правила, подсказки и модели

Если встроенные правила не соответствуют вашим требованиям, вы можете создать собственные:

Пример пользовательского правила

from dingo.model import Model from dingo.model.rule.base import BaseRule from dingo.config.config import DynamicRuleConfig from dingo.io import MetaData from dingo.model.modelres import ModelRes @Model.rule_register('QUALITY_BAD_RELEVANCE', ['default']) class MyCustomRule(BaseRule): """Check for custom pattern in text""" dynamic_config = DynamicRuleConfig(pattern=r'your_pattern_here') @classmethod def eval(cls, input_data: MetaData) -> ModelRes: res = ModelRes() # Your rule implementation here 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): # Custom implementation here pass

Больше примеров смотрите в:

Двигатели исполнения

Местное исполнение

from dingo.io import InputArgs from dingo.exec import Executor input_args = InputArgs(**input_data) executor = Executor.exec_map["local"](input_args) result = executor.execute() # Get results summary = executor.get_summary() # Overall evaluation summary bad_data = executor.get_bad_info_list() # List of problematic data good_data = executor.get_good_info_list() # List of high-quality data

Исполнение Искры

from dingo.io import InputArgs from dingo.exec import Executor from pyspark.sql import SparkSession # Initialize Spark spark = SparkSession.builder.appName("Dingo").getOrCreate() spark_rdd = spark.sparkContext.parallelize([...]) # Your data as MetaData objects input_args = InputArgs(eval_group="default", save_data=True) executor = Executor.exec_map["spark"](input_args, spark_session=spark, spark_rdd=spark_rdd) result = executor.execute()

Отчеты об оценке

После оценки Dingo генерирует:

  1. Сводный отчет ( summary.json ): общие показатели и оценки
  2. Подробные отчеты : конкретные проблемы по каждому нарушению правил

Пример резюме:

{ "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 Open Source .

Цитата

Если вы считаете этот проект полезным, пожалуйста, рассмотрите возможность цитирования нашего инструмента:

@misc{dingo, title={Dingo: A Comprehensive Data Quality Evaluation Tool for Large Models}, author={Dingo Contributors}, howpublished={\url{https://github.com/DataEval/dingo}}, year={2024} }
ID: ryqs541su0