Kılavuzlar
Görüntü, ses ve video
Oloproof görüntü, ses ve video alan ya da üreten sistemleri değerlendirir ve dosyalar sisteminizin onları tuttuğu yerden hiç ayrılmaz. Bir çalıştırma her dosyayı başvuruyla kaydeder; deterministik denetimler baytları ölçer; bir hakem görüntüleri, video karelerini ve sesi görebilir; çalışma tezgâhı onları her hükmün yanında gösterir. Eğitim, çalıştırılabilir bir örnek üzerinde görüntüleri adım adım gösterir.
Medyayı kaydetmek
Sisteminiz bir vakanın aldığı ya da ürettiği dosyaları current_case().media(...) ile, her çağrı için bir media/v1 yapıtı olarak kaydeder:
from oloproof import current_case, media_file, system
@system(name="captioner", version="v2", records=("media/v1",))
def caption(case):
image = render(case["prompt"]) # your system writes its own file
current_case().media([
media_file(case["photo"], role="input"),
media_file(image), # role="output" by default
])
return {"caption": describe(image)}oloproof.yaml içinde bir callable sistem records: [media/v1] bildirir. Her öğe şunları tutar:
| Alan | Anlamı |
|---|---|
| kind | MIME türünden image, audio ya da video |
| mime_type | image/png, audio/wav, video/mp4 ve benzerleri |
| uri | dosyanın nerede olduğu: bir file:// yolu, bir https:// URL'si ya da projeye göreli bir yol |
| digest | baytların sha256 değeri, sha256:... |
| size_bytes | bayt cinsinden boyut |
| role | input, output (varsayılan) ya da context |
| name | bir istemin ya da bir sayfanın ona verdiği ad; media_file dosyanın adını kullanır |
| width, height, duration_s | isteğe bağlı, sisteminizin bildirdiği gibi |
media_file(path) bunları yerel bir dosyadan doldurur. Oloproof'un deposuna hiçbir şey kopyalanmaz. Dosyayı sonradan okuyan her şey, bir denetim, bir hakem ya da çalışma tezgâhı, onu read_media üzerinden okur; bu da boyutu ya da sha256 değeri kayıttan farklı olan baytları reddeder: değişmiş içerik çalıştırmayı durdurur, kaybolmuş bir dosya ise vakayı eksik bırakır. Bir çalıştırmanın dosyalarını, çalıştırmayı tuttuğunuz sürece değiştirmeden tutun; her sürümün çıktılarını kendi yerine yazın. Kendi @evaluator değerlendiricinizde read_media(item) denetlenmiş baytları döndürür.
Model gerektirmeyen denetimler
media_check bir rolün kaydedilmiş her öğesini ölçer ve her biri bildirilen her koşulu karşıladığında geçer:
- type: media_check
criterion: thumbnail_fits
kind: image
formats: [png, jpeg, webp]
max_width: 256
max_height: 256
max_bytes: 50000Biçim dosyanın ilk baytlarından okunur, bu yüzden .png olarak kaydedilmiş bir JPEG kalır; görüntü boyutları ve WAV süreleri başlıklarından okunur; bir videonun boyutu ya da bir MP3'ün uzunluğu ffprobe ile ölçülür. Süre sınırları sese ve videoya, boyut sınırları görüntülere ve videoya uygulanır.
image_matches_reference, her görüntü bir referansa benzediğinde geçer: 64 bitlik algısal hash'leri en fazla max_distance bit farklıdır (varsayılan olarak 8). Yeniden boyutlandırılmış ya da yeniden sıkıştırılmış bir kopya birkaç bit içinde kalır; boş bir görüntü, bozuk bir dosya ya da farklı bir sahne kalmaz. Referans, her vaka için tek bir reference_file ya da her vakanın expected değerinin reference_field ile adlandırdığı bir yoldur. Hash rengi değil, yerleşimi ve ışığı okur; bu yüzden aynı şekilde fotoğraflanmış iki ürünü birbirinden ayıramaz ve geniş boş alanları olan düz grafikler onu fotoğraflardan daha çok oynatır. Pillow gerektirir: pip install 'oloproof[media]'.
Her alan yapılandırma başvurusunda bulunur. İki denetim de model çağırmadığı için ilk çalıştırmadan itibaren karar verir.
Medyayı gören hakemler
media ile bir rubric_judge hakemine, vakanın o roldeki (input, output ya da all) kaydedilmiş medyası gösterilir; hakemin bir girdiyi bir çıktıdan ayırabilmesi için her biri isteminde adlandırılır:
- type: rubric_judge
criterion: caption_matches
provider: openai_compatible
base_url: http://localhost:11434/v1
model: qwen2.5vl
rubric_text: Pass only if the caption truthfully describes the attached image.
media: output
video_frames: 4
transcriber:
model: whisper-1- Görüntüler olduğu gibi eklenir, her biri en fazla 5 MB ve yargı başına en fazla 20.
- Video, hakemi çalıştıran makinede ffmpeg ile alınan durağan kareler olarak eklenir: video_frames: 4 dört eşit aralığın her birinin ortasını alır, [0.5, 2.0] o anları alır.
- Ses transcriber tarafından yazıya dökülür (OpenAI uyumlu bir /audio/transcriptions uç noktası; base_url verilmezse OpenAI'ınki) ve döküm isteme girer; ya da audio: native ile, duyabilen bir model için ses olarak eklenir (wav ve mp3; Anthropic'inki için değil).
Medyanın özetleri bir yargının anahtarının parçasıdır; bu yüzden değişen medya yeniden değerlendirilir, değişmeyen medya önbellekten gelir. Döküm aracı ve kare zamanları hakemin sürümünün parçasıdır ve her yargı kendi dökümlerini ve ffmpeg sürümünü saklar. Döküm aracı olmadan ses için ya da ffmpeg olmayan bir makinede video için bildirilmiş bir hakem, o vakaları eksik bırakmak yerine çalıştırmayı durdurur. Barındırılan bir model her kelimeyi olduğu gibi her görüntüyü de faturalar.
Bir medya hakemini doğrulamak
Medyayı gören bir hakem, insanların etiketleri onlarla uyuştuğunu gösterene kadar hiçbir şeye karar vermez; tıpkı metin okuyan bir hakem gibi: rastgele bir örneklemi etiketleyin, sonra oloproof evaluators validate (Hakemler). Barındırılan bir çalışma alanında inceleme kuyruğu her vakanın medyasını inceleyiciye gösterir. Modeli, rubriği, media değerini, kareleri ya da döküm aracını değiştirmek, kendi doğrulamasına ihtiyaç duyan yeni bir hakem oluşturur.
Çalışma tezgâhında medya
Bir vakanın medyası, vakanın sayfasında ve inceleme kuyruğunda, çıktısının ve hükümlerinin yanında, her dosyanın türü, boyutu ve özetiyle birlikte görünür.
- Yerel bir çalışma tezgâhı her dosyayı çalıştırmanın onu kaydettiği yerden, makinenizde okur ve onu yalnızca sha256 değeri hâlâ eşleştiği sürece gösterir.
- Barındırılan bir çalışma alanı medyayı asla almaz. Görüntüleyenin tarayıcısı her dosyayı ağınızdaki oloproof collect üzerinden, inceleme kuyruğunun vaka içeriği için kullandığı aynı kısa ömürlü biletle getirir (Hakemler) ve göstermeden önce sha256 değerini denetler. Bir toplayıcı olmadan sayfa her dosyanın olgularını listeler ve neden gösterilmediğini söyler.
Push edilen bir çalıştırma, her dosyanın nerede tutulduğuyla birlikte media/v1 kayıtlarını artifacts çıkış (egress) kategorisi altında taşır; artifacts kategorisini alıkoyan bir politika bu konumları da sizin tarafınızda tutar.
Desteklenmeyenler
- Medya üretmek: dosyalarını sisteminiz üretir, Oloproof onları değerlendirir.
- Oloproof'a medya yüklemek: barındırılan ya da yerel, hiçbir yükleme yoktur.
- Anthropic'in API'si üzerinden bütün bir videoyu izleyen ya da ses duyan bir model: orada video karelerden, ses ise bir döküm üzerinden değerlendirilir.
- Ses ya da videonun içeriğinin deterministik denetimleri (kelime hata oranı, sahne tespiti): @evaluator ve read_media ile bir tane yazın.
- Ses ya da videonun algısal hash'lenmesi: image_matches_reference yalnızca görüntüleri okur.