mcpField
H
hugging-face-datasets

hugging-face-datasets

github.com/sickn33データ・データベース48.7k40 回インストール1 日前に更新
リポジトリ

hugging-face-datasets について

Hugging Face Hub のデータセットを管理するスキルで、データの作成、編集、検索、エクスポートを行う開発者向けです。DuckDB SQL、構造テンプレート、検証機能を備え、HF MCP Server の検索機能を補完します。

主な機能

  1. 01データセットリポジトリの作成と設定
  2. 02行の追加とデータ内容の管理
  3. 03DuckDB SQL による検索と変換
  4. 04結果のエクスポートまたは Hub への送信
  5. 05多様なデータ構造向けテンプレート
  6. 06アップロード時の JSON 検証

活用シーン

  1. 01分類または会話データセットの作成
  2. 02既存データセットからのサブセット抽出
  3. 03スキーマ、分布、固有値の確認
  4. 04検索結果の Parquet または JSONL 出力

MCP 対応

HF MCP Server を補完するスキルです。サーバーがデータセットの発見、検索、メタデータ取得を担い、このスキルは作成、編集、検索、変換を扱います。スキル自体が MCP サーバーを公開するとは README に記載されていません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill hugging-face-datasets

インストール後、Claude Code で/hugging-face-datasetsを入力して読み込まれたか確認します。

詳細

概要

このスキルは、Hugging Face Hub 上のデータセットを管理するためのツールを提供し、作成、設定、コンテンツ管理、SQL ベースのデータ操作に焦点を当てています。既存の Hugging Face MCP サーバーを補完し、データセットの編集およびクエリ機能を提供するように設計されています。

使用する場面

  • Hugging Face Hub 上のデータセットを作成、設定、または更新する必要がある場合。
  • Hub のデータセットに対して SQL スタイルのクエリ、変換、またはエクスポートのフローを実行したい場合。
  • 既存のデータセットを検索するだけでなく、データセットのコンテンツとメタデータを直接管理している場合。

HF MCP サーバーとの連携

  • HF MCP サーバーを使用する場合: データセットの検出、検索、メタデータの取得
  • このスキルを使用する場合: データセットの作成、コンテンツの編集、SQL クエリ、データ変換、構造化データのフォーマット

バージョン

2.1.0

依存関係

このスキルはインライン依存関係管理を備えた PEP 723 スクリプトを使用します

スクリプトは次で実行すると要件を自動インストールします: uv run scripts/script_name.py

  • uv (Python パッケージマネージャー)
  • はじめに: PEP 723 の使用方法については、以下の「使用手順」を参照してください

主要な機能

1. データセットのライフサイクル管理

  • 初期化: 適切な構造を持つ新しいデータセットリポジトリを作成します
  • 設定: システムプロンプトやメタデータを含む詳細な設定を保存します
  • ストリーム更新: データセット全体をダウンロードせずに、行を効率的に追加します

2. SQL ベースのデータセットクエリ (新機能)

scripts/sql_manager.py を介して DuckDB SQL を使用して任意の Hugging Face データセットをクエリします:

  • 直接クエリ: hf:// プロトコルを使用してデータセット上で SQL を実行します
  • スキーマの検出: データセットの構造と列の型を記述します
  • データのサンプリング: 探索用にランダムサンプルを取得します
  • 集計: カウント、ヒストグラム、一意の値の分析
  • 変換: SQL によるデータのフィルタリング、結合、再形成
  • エクスポートとプッシュ: 結果をローカルに保存するか、新しい Hub リポジトリにプッシュします

3. マルチフォーマットのデータセットサポート

テンプレートシステムを通じて多様なデータセットタイプをサポートします:

  • チャット/会話: チャットテンプレート、マルチターンの対話、ツール使用例
  • テキスト分類: 感情分析、意図検出、トピック分類
  • 質問応答: 読解、事実に基づく QA、ナレッジベース
  • テキスト補完: 言語モデリング、コード補完、クリエイティブライティング
  • 表形式データ: 回帰/分類タスク用の構造化データ
  • カスタムフォーマット: 専門的なニーズに対応する柔軟なスキーマ定義

4. 品質保証機能

  • JSON 検証: アップロード中のデータ整合性を確保します
  • バッチ処理: 大規模なデータセットを効率的に処理します
  • エラー回復: アップロードの失敗や競合を適切に処理します

使用手順

このスキルには、PEP 723 インライン依存関係管理を使用する 2 つの Python スクリプトが含まれています:

すべてのパスは、この SKILL.md ファイルを含むディレクトリからの相対パスです。 スクリプトは次で実行します: uv run scripts/script_name.py [arguments]

  • scripts/dataset_manager.py - データセットの作成と管理
  • scripts/sql_manager.py - SQL ベースのデータセットクエリと変換
前提条件
  • uv パッケージマネージャーがインストールされていること
  • HF_TOKEN 環境変数に書き込みアクセストークンを設定する必要があります

SQL データセットクエリ (sql_manager.py)

DuckDB SQL を使用して Hugging Face データセットをクエリ、変換、プッシュします。hf:// プロトコルは、任意の公開データセット (トークンを使用すればプライベートも) への直接アクセスを提供します。

クイックスタート

# Query a dataset
uv run scripts/sql_manager.py query \
  --dataset "cais/mmlu" \
  --sql "SELECT * FROM data WHERE subject='nutrition' LIMIT 10"

# Get dataset schema
uv run scripts/sql_manager.py describe --dataset "cais/mmlu"

# Sample random rows
uv run scripts/sql_manager.py sample --dataset "cais/mmlu" --n 5

# Count rows with filter
uv run scripts/sql_manager.py count --dataset "cais/mmlu" --where "subject='nutrition'"

SQL クエリ構文

SQL ではテーブル名として data を使用します - これは実際の hf:// パスに置き換えられます:

-- Basic select
SELECT * FROM data LIMIT 10

-- Filtering
SELECT * FROM data WHERE subject='nutrition'

-- Aggregations
SELECT subject, COUNT(*) as cnt FROM data GROUP BY subject ORDER BY cnt DESC

-- Column selection and transformation
SELECT question, choices[answer] AS correct_answer FROM data

-- Regex matching
SELECT * FROM data WHERE regexp_matches(question, 'nutrition|diet')

-- String functions
SELECT regexp_replace(question, '\n', '') AS cleaned FROM data

一般的な操作

1. データセット構造の探索
# Get schema
uv run scripts/sql_manager.py describe --dataset "cais/mmlu"

# Get unique values in column
uv run scripts/sql_manager.py unique --dataset "cais/mmlu" --column "subject"

# Get value distribution
uv run scripts/sql_manager.py histogram --dataset "cais/mmlu" --column "subject" --bins 20
2. フィルタリングと変換
# Complex filtering with SQL
uv run scripts/sql_manager.py query \
  --dataset "cais/mmlu" \
  --sql "SELECT subject, COUNT(*) as cnt FROM data GROUP BY subject HAVING cnt > 100"

# Using transform command
uv run scripts/sql_manager.py transform \
  --dataset "cais/mmlu" \
  --select "subject, COUNT(*) as cnt" \
  --group-by "subject" \
  --order-by "cnt DESC" \
  --limit 10
3. サブセットの作成と Hub へのプッシュ
# Query and push to new dataset
uv run scripts/sql_manager.py query \
  --dataset "cais/mmlu" \
  --sql "SELECT * FROM data WHERE subject='nutrition'" \
  --push-to "username/mmlu-nutrition-subset" \
  --private

# Transform and push
uv run scripts/sql_manager.py transform \
  --dataset "ibm/duorc" \
  --config "ParaphraseRC" \
  --select "question, answers" \
  --where "LENGTH(question) > 50" \
  --push-to "username/duorc-long-questions"
4. ローカルファイルへのエクスポート
# Export to Parquet
uv run scripts/sql_manager.py export \
  --dataset "cais/mmlu" \
  --sql "SELECT * FROM data WHERE subject='nutrition'" \
  --output "nutrition.parquet" \
  --format parquet

# Export to JSONL
uv run scripts/sql_manager.py export \
  --dataset "cais/mmlu" \
  --sql "SELECT * FROM data LIMIT 100" \
  --output "sample.jsonl" \
  --format jsonl
5. データセットの設定/分割の操作
# Specify config (subset)
uv run scripts/sql_manager.py query \
  --dataset "ibm/duorc" \
  --config "ParaphraseRC" \
  --sql "SELECT * FROM data LIMIT 5"

# Specify split
uv run scripts/sql_manager.py query \
  --dataset "cais/mmlu" \
  --split "test" \
  --sql "SELECT COUNT(*) FROM data"

# Query all splits
uv run scripts/sql_manager.py query \
  --dataset "cais/mmlu" \
  --split "*" \
  --sql "SELECT * FROM data LIMIT 10"
6. 完全なパスを使用した生の SQL

複雑なクエリやデータセットの結合の場合:

uv run scripts/sql_manager.py raw --sql "
  SELECT a.*, b.* 
  FROM 'hf://datasets/dataset1@~parquet/default/train/*.parquet' a
  JOIN 'hf://datasets/dataset2@~parquet/default/train/*.parquet' b
  ON a.id = b.id
  LIMIT 100
"

Python API の使用

from sql_manager import HFDatasetSQL

sql = HFDatasetSQL()

# Query
results = sql.query("cais/mmlu", "SELECT * FROM data WHERE subject='nutrition' LIMIT 10")

# Get schema
schema = sql.describe("cais/mmlu")

# Sample
samples = sql.sample("cais/mmlu", n=5, seed=42)

# Count
count = sql.count("cais/mmlu", where="subject='nutrition'")

# Histogram
dist = sql.histogram("cais/mmlu", "subject")

# Filter and transform
results = sql.filter_and_transform(
    "cais/mmlu",
    select="subject, COUNT(*) as cnt",
    group_by="subject",
    order_by="cnt DESC",
    limit=10
)

# Push to Hub
url = sql.push_to_hub(
    "cais/mmlu",
    "username/nutrition-subset",
    sql="SELECT * FROM data WHERE subject='nutrition'",
    private=True
)

# Export locally
sql.export_to_parquet("cais/mmlu", "output.parquet", sql="SELECT * FROM data LIMIT 100")

sql.close()

HF パス形式

DuckDB は hf:// プロトコルを使用してデータセットにアクセスします:

hf://datasets/{dataset_id}@{revision}/{config}/{split}/*.parquet

例:

  • hf://datasets/cais/mmlu@~parquet/default/train/*.parquet
  • hf://datasets/ibm/duorc@~parquet/ParaphraseRC/test/*.parquet

@~parquet リビジョンは、あらゆるデータセット形式に対して自動変換された Parquet ファイルを提供します。

便利な DuckDB SQL 関数

-- String functions
LENGTH(column)                    -- String length
regexp_replace(col, '\n', '')     -- Regex replace
regexp_matches(col, 'pattern')    -- Regex match
LOWER(col), UPPER(col)           -- Case conversion

-- Array functions  
choices[0]                        -- Array indexing (0-based)
array_length(choices)             -- Array length
unnest(choices)                   -- Expand array to rows

-- Aggregations
COUNT(*), SUM(col), AVG(col)
GROUP BY col HAVING condition

-- Sampling
USING SAMPLE 10                   -- Random sample
USING SAMPLE 10 (RESERVOIR, 42)   -- Reproducible sample

-- Window functions
ROW_NUMBER() OVER (PARTITION BY col ORDER BY col2)

データセットの作成 (dataset_manager.py)

推奨ワークフロー

1. 検出(HF MCP サーバーを使用):

# Use HF MCP tools to find existing datasets
search_datasets("conversational AI training")
get_dataset_details("username/dataset-name")

2. 作成(このスキルを使用):

# Initialize new dataset
uv run scripts/dataset_manager.py init --repo_id "your-username/dataset-name" [--private]

# Configure with detailed system prompt
uv run scripts/dataset_manager.py config --repo_id "your-username/dataset-name" --system_prompt "$(cat system_prompt.txt)"

3. コンテンツ管理(このスキルを使用):

# Quick setup with any template
uv run scripts/dataset_manager.py quick_setup \
  --repo_id "your-username/dataset-name" \
  --template classification

# Add data with template validation
uv run scripts/dataset_manager.py add_rows \
  --repo_id "your-username/dataset-name" \
  --template qa \
  --rows_json "$(cat your_qa_data.json)"
テンプレートベースのデータ構造

1. チャットテンプレート (--template chat)

{
  "messages": [
    {"role": "user", "content": "Natural user request"},
    {"role": "assistant", "content": "Response with tool usage"},
    {"role": "tool", "content": "Tool response", "tool_call_id": "call_123"}
  ],
  "scenario": "Description of use case",
  "complexity": "simple|intermediate|advanced"
}

2. 分類テンプレート (--template classification)

{
  "text": "Input text to be classified",
  "label": "classification_label",
  "confidence": 0.95,
  "metadata": {"domain": "technology", "language": "en"}
}

3. QA テンプレート (--template qa)

{
  "question": "What is the question being asked?",
  "answer": "The complete answer",
  "context": "Additional context if needed",
  "answer_type": "factual|explanatory|opinion",
  "difficulty": "easy|medium|hard"
}

4. 補完テンプレート (--template completion)

{
  "prompt": "The beginning text or context",
  "completion": "The expected continuation",
  "domain": "code|creative|technical|conversational",
  "style": "description of writing style"
}

5. 表形式テンプレート (--template tabular)

{
  "columns": [
    {"name": "feature1", "type": "numeric", "description": "First feature"},
    {"name": "target", "type": "categorical", "description": "Target variable"}
  ],
  "data": [
    {"feature1": 123, "target": "class_a"},
    {"feature1": 456, "target": "class_b"}
  ]
}
高度なシステムプロンプトテンプレート

高品質なトレーニングデータを生成するために:

You are an AI assistant expert at using MCP tools effectively.

## MCP SERVER DEFINITIONS
[Define available servers and tools]

## TRAINING EXAMPLE STRUCTURE
[Specify exact JSON schema for chat templating]

## QUALITY GUIDELINES
[Detail requirements for realistic scenarios, progressive complexity, proper tool usage]

## EXAMPLE CATEGORIES
[List development workflows, debugging scenarios, data management tasks]
例のカテゴリとテンプレート

このスキルには、MCP の使用法だけでなく多様なトレーニング例が含まれています:

利用可能な例のセット:

  • training_examples.json - MCP ツールの使用例(デバッグ、プロジェクトのセットアップ、データベース分析)
  • diverse_training_examples.json - 以下を含むより幅広いシナリオ:
    • 教育チャット - プログラミング概念の説明、チュートリアル
    • Git ワークフロー - フィーチャーブランチ、バージョン管理のガイダンス
    • コード分析 - パフォーマンス最適化、アーキテクチャレビュー
    • コンテンツ生成 - プロフェッショナルなライティング、創造的なブレインストーミング
    • コードベースのナビゲーション - レガシーコードの探索、体系的な分析
    • 会話サポート - 問題解決、技術的な議論

さまざまな例のセットを使用する:

# Add MCP-focused examples
uv run scripts/dataset_manager.py add_rows --repo_id "your-username/dataset-name" \
  --rows_json "$(cat examples/training_examples.json)"

# Add diverse conversational examples
uv run scripts/dataset_manager.py add_rows --repo_id "your-username/dataset-name" \
  --rows_json "$(cat examples/diverse_training_examples.json)"

# Mix both for comprehensive training data
uv run scripts/dataset_manager.py add_rows --repo_id "your-username/dataset-name" \
  --rows_json "$(jq -s '.[0] + .[1]' examples/training_examples.json examples/diverse_training_examples.json)"
コマンドリファレンス

利用可能なテンプレートの一覧表示:

uv run scripts/dataset_manager.py list_templates

クイックセットアップ(推奨):

uv run scripts/dataset_manager.py quick_setup --repo_id "your-username/dataset-name" --template classification

手動セットアップ:

# Initialize repository
uv run scripts/dataset_manager.py init --repo_id "your-username/dataset-name" [--private]

# Configure with system prompt
uv run scripts/dataset_manager.py config --repo_id "your-username/dataset-name" --system_prompt "Your prompt here"

# Add data with validation
uv run scripts/dataset_manager.py add_rows \
  --repo_id "your-username/dataset-name" \
  --template qa \
  --rows_json '[{"question": "What is AI?", "answer": "Artificial Intelligence..."}]'

データセットの統計を表示:

uv run scripts/dataset_manager.py stats --repo_id "your-username/dataset-name"
エラー処理
  • リポジトリが存在する:スクリプトは通知し、設定を続行します
  • 無効な JSON:解析の詳細を含む明確なエラーメッセージ
  • ネットワークの問題:一時的な障害に対する自動再試行
  • トークンの権限:操作を開始する前に検証

複合ワークフローの例

例 1:既存のデータセットからトレーニングサブセットを作成する

# 1. Explore the source dataset
uv run scripts/sql_manager.py describe --dataset "cais/mmlu"
uv run scripts/sql_manager.py histogram --dataset "cais/mmlu" --column "subject"

# 2. Query and create subset
uv run scripts/sql_manager.py query \
  --dataset "cais/mmlu" \
  --sql "SELECT * FROM data WHERE subject IN ('nutrition', 'anatomy', 'clinical_knowledge')" \
  --push-to "username/mmlu-medical-subset" \
  --private

例 2:データの変換と整形

# Transform MMLU to QA format with correct answers extracted
uv run scripts/sql_manager.py query \
  --dataset "cais/mmlu" \
  --sql "SELECT question, choices[answer] as correct_answer, subject FROM data" \
  --push-to "username/mmlu-qa-format"

例 3:複数のデータセット分割のマージ

# Export multiple splits and combine
uv run scripts/sql_manager.py export \
  --dataset "cais/mmlu" \
  --split "*" \
  --output "mmlu_all.parquet"

例 4:品質フィルタリング

# Filter for high-quality examples
uv run scripts/sql_manager.py query \
  --dataset "squad" \
  --sql "SELECT * FROM data WHERE LENGTH(context) > 500 AND LENGTH(question) > 20" \
  --push-to "username/squad-filtered"

例 5:カスタムトレーニングデータセットの作成

# 1. Query source data
uv run scripts/sql_manager.py export \
  --dataset "cais/mmlu" \
  --sql "SELECT question, subject FROM data WHERE subject='nutrition'" \
  --output "nutrition_source.jsonl" \
  --format jsonl

# 2. Process with your pipeline (add answers, format, etc.)

# 3. Push processed data
uv run scripts/dataset_manager.py init --repo_id "username/nutrition-training"
uv run scripts/dataset_manager.py add_rows \
  --repo_id "username/nutrition-training" \
  --template qa \
  --rows_json "$(cat processed_data.json)"

制限事項

  • このスキルは、タスクが上記で説明した範囲に明確に一致する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代替として扱わないでください。
  • 必要な入力、権限、安全境界、または成功基準が欠けている場合は、停止して確認を求めてください。

コメント