Datasets documentation

Ajan değerlendirme görevlerini yükle

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ajan değerlendirme görevlerini yükle

Bir Harbor veri seti, yapay zeka ajanlarını değerlendirmek için kullanılan görevlerin bir koleksiyonudur: her görev, bir ajana bir talimat, çalışmak için kumandalı bir ortam ve işini puanlayan bir doğrulayıcı sağlar.

Tablo veri setlerinin aksine, bir Harbor veri seti örnek başına bir satır içeren bir dosya değildir: her görev bir dizindir. harbor oluşturucu, bu tür bir depoyu okur ve görev başına bir satır üretir; böylece bir benchmark, herhangi bir veri seti gibi keşfedilebilir, filtrelenir ve paylaşılabilir:

>>> from datasets import load_dataset
>>> dataset = load_dataset("harborframework/terminal-bench")
>>> dataset
DatasetDict({
    test: Dataset({
        features: ['name', 'instruction', 'description', 'keywords', 'schema_version', 'config', 'metadata', 'files', 'location'],
        num_rows: 66
    })
})

Bir Harbor veri seti yüklemek yalnızca görevleri okur: bir ajan çalıştırmaz, bir görüntü oluşturmaz veya doğrulayıcıyı çalıştırmaz ve Harbor'ın kurulu olmasını gerektirmez. Görevleri gerçekten çalıştırmak için Harbor kütüphanesini kullanın.

Harbor görev yapılandırmaları TOML dosyalarıdır. Python 3.11 ve sonraki sürümler bunları standart kitaplık (tomllib) ile okur; Python 3.10'da ise bir TOML ayrıştırıcısını ek bir bağımlılık olarak yüklemeniz gerekir. Nasıl yükleyeceğinizi öğrenmek için kurulum kılavuzuna göz atın.

Depo yapısı

Bir görev dizini, task.toml ve instruction.md dosyalarıyla tanımlanır ve genellikle ortam tanımını, doğrulayıcıyı ve bir oracle çözümünü de içerir:

my-harbor-dataset/
├── README.md
└── tasks/
    ├── task-a/
    │   ├── task.toml          # configuration: metadata, resources, timeouts...
    │   ├── instruction.md     # what the agent is asked to do
    │   ├── README.md          # optional human-readable description
    │   ├── environment/       # Dockerfile / docker-compose.yaml + files of the sandbox
    │   ├── tests/             # verifier
    │   └── solution/          # oracle solution
    └── task-b/
        └── ...

Bir dizin, alt dizinlerinden herhangi biri (ne kadar derin olursa olsun) bir görev dizini (yan yana bir task.toml dosyası ve bir instruction.md dosyası) olarak tanımlandığı anda bir Harbor veri seti olarak tanınır: görevler, herhangi bir dosya listelemeye gerek kalmadan otomatik olarak bulunur.

Görevleri yükle

Harbor veri setleri veri dosyalarından değil dizinlerden oluştuğu için path ile yüklenir — data_files argümanı gerekmez:

>>> from datasets import load_dataset

>>> # a dataset repository on the Hub
>>> dataset = load_dataset("harborframework/terminal-bench")
>>> # a local directory of tasks
>>> dataset = load_dataset("/path/to/my-harbor-dataset")
>>> # the tasks of a repository that are in a sub-directory
>>> dataset = load_dataset("harborframework/terminal-bench", data_dir="tasks")

data_files parametresinin açıkça geçirilmesi de desteklenir; desen task.toml ve instruction.md dosyalarını içerdiği sürece — eşleşen her dosya çifti bir satır oluşturur:

>>> dataset = load_dataset(
...     "/path/to/my-harbor-dataset",
...     data_files={"test": ["my-tasks-dir/*/task.toml", "my-tasks-dir/*/instruction.md"]},
... )

Sütunlar

Her satır bir görevi açıklar:

SütunTürAçıklama
namestringtask.toml içindeki [task].name (genellikle org/name), ya da görev dizininin adı.
descriptionstringtask.toml'deki [task].description.
instructionstringinstruction.md içeriği: ajanın yapması gerekenler.
keywordsstring list'itask.toml'in [task].keywords bölümü.
schema_versionstringtask.toml tarafından bildirilen schema_version.
configdictTüm task.toml, bir JSON nesnesi olarak: [task], [metadata], [verifier], [agent], [environment], [steps]…
metadatadicttask.toml dosyasının serbest biçimli [metadata] bölümü.
filesstring list'iGörevin tüm dosyaları, görev dizinine göre göreli yollarla.
locationstringVeri setindeki görev dizininin konumu.
>>> dataset = load_dataset("harborframework/terminal-bench", split="test")
>>> dataset[0]["name"]
'terminal-bench/atrx-vep-crispr'
>>> dataset[0]["instruction"][:90]
'You are provided with a region of genomic DNA representing the human ATRX locus plus sequence'
>>> dataset[0]["config"]["task"]["authors"]
[{'name': 'ScaleAI', 'email': '[email protected]'}]
>>> dataset[0]["metadata"]["category"]
'Science'
>>> dataset[0]["config"]["environment"]
{'build_timeout_sec': 1800.0, 'cpus': 2, 'memory_mb': 4096, 'storage_mb': 10240, 'gpus': 0}
>>> dataset[0]["files"][:4]
['LICENSE.md', 'README.md', 'environment/Dockerfile', 'environment/data/CDS-information.txt']
>>> dataset[0]["location"]
'tasks/atrx-vep-crispr'

Tüm task.toml dosyası config içinde mevcut olduğundan, bir görev kendi sütununa yükseltilmemiş alanları kullandığında hiçbir şey kaybolmaz:

>>> dataset = dataset.map(lambda task: {"timeout_min": task["config"]["verifier"]["timeout_sec"] / 60})
>>> sorted(set(dataset["timeout_min"]))[:6]
[1.0, 2.0, 3.0, 4.0, 5.0, 7.0]

Bir benchmark'ı filtrele

Görev meta verileri bir sözlük olarak yüklendiği için, bir benchmark filter() ve map() yöntemleriyle incelenebilir:

>>> security_tasks = dataset.filter(lambda task: task["metadata"].get("category") == "Security")
>>> [task["name"] for task in security_tasks]
['terminal-bench/formal-crypto', 'terminal-bench/html-js-filter', 'terminal-bench/interleaved-vigenere', 'terminal-bench/shadow-relay', 'terminal-bench/uefi-bootkit']

files sütunu, görevle birlikte gelen her şeyi listeler; bir görevin nasıl doğrulandığına bakmak için kullanışlıdır:

>>> pytest_verifiers = dataset.filter(lambda task: any(f.startswith("tests/") and f.endswith(".py") for f in task["files"]))
>>> pytest_verifiers.num_rows
63

Bir görevin diğer dosyalarını okuyun

Yalnızca talimat ve bir görevin yapılandırması sütunlar olarak yüklenir: ortamı, doğrulayıcısı ve çözüm dosyaları, görev dizinine göre göreli yollar olarak files sütununda listelenir. Bunlardan herhangi birini fsspec ile açmak için task_id ve files değerlerini birleştirin:

>>> from huggingface_hub import hffs
>>> dataset_path = "hf://datasets/harborframework/terminal-bench"
>>> with hffs.open(f"{dataset_path}/tasks/cumulative-layout-shift/environment/Dockerfile", "r") as f:
...     print(f.read()[:20])
'# harbor-canary GUID

Yapılandırma

HarborConfig, load_dataset'in standart argümanlarının yanı sıra birkaç argüman kabul eder:

  • strip_canary (varsayılan True): talimatlardan, Harbor'un bir acente (agent) ile paylaşırken yaptığı gibi, baştaki “benchmark data canary” yorum satırlarını kaldırır. Orijinal dosya içeriğini korumak için False olarak ayarlayın.
  • include_files (varsayılan True): files sütununda her görevin tüm dosyalarını listeler. Veri seti uzak bir dosya sistemindeyse veya görev başına binlerce dosya varsa, görev dizinlerini listelemeyi atlamak için False olarak ayarlayın; bu işlem daha hızlıdır.

Görevler ayrıca akış olarak da işlenebilir; bu, tüm benchmark'ı önceden indirmekten kaçınmanızı sağlar:

>>> from datasets import load_dataset
>>> dataset = load_dataset("harborframework/terminal-bench", streaming=True)
>>> for task in dataset["test"]:
...     print(task["name"])

Bkz.

Update on GitHub