Datasets documentation
Ajan değerlendirme görevlerini yükle
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ütun | Tür | Açıklama |
|---|---|---|
name | string | task.toml içindeki [task].name (genellikle org/name), ya da görev dizininin adı. |
description | string | task.toml'deki [task].description. |
instruction | string | instruction.md içeriği: ajanın yapması gerekenler. |
keywords | string list'i | task.toml'in [task].keywords bölümü. |
schema_version | string | task.toml tarafından bildirilen schema_version. |
config | dict | Tüm task.toml, bir JSON nesnesi olarak: [task], [metadata], [verifier], [agent], [environment], [steps]… |
metadata | dict | task.toml dosyasının serbest biçimli [metadata] bölümü. |
files | string list'i | Görevin tüm dosyaları, görev dizinine göre göreli yollarla. |
location | string | Veri 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
63Bir 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 GUIDYapılandırma
HarborConfig, load_dataset'in standart argümanlarının yanı sıra birkaç argüman kabul eder:
strip_canary(varsayılanTrue): 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çinFalseolarak ayarlayın.include_files(varsayılanTrue):filessü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çinFalseolarak 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.
- Harbor ve HarborConfig referans belgeleri.
- Görevleri ajanlar ve doğrulayıcılarla çalıştırmak için Harbor belgeleri.