jevreel: Fragen zu Videos stellen
jevreel legt ein Video auf Kontaktabzügen mit einem Frame pro Sekunde aus und lässt Jev, TypeSafes schnelles Entscheidungsmodell, jeden Abzug parallel scannen, anschließend werden die besten Fenster auf Vollbildern erneut geprüft. Du (der Hauptagent) wertest dann die Funde aus. Jev liefert typisierte Antworten und Wahrscheinlichkeiten, niemals Beschreibungen: Lesen, Beschreiben und Schließen ist deine Aufgabe.
Einrichtung prüfen
TYPESAFE_API_KEYmuss gesetzt sein für alles, was Jev fragt (Indizieren mit einer Zeitleiste, ask, find, locate, whole, lenses). Zoom, Transkripte und Zeitleistenabfragen funktionieren ohne.ffmpegundffprobemüssen im PATH sein.- URLs benötigen
jevreel[url]; Videos ohne Untertitel benötigenjevreel[asr]für ein Transkript.
Arbeitsablauf
- Einmalig indizieren. MCP
index_video(source)oderjevreel index <datei-oder-url>. Spätere Aufrufe verwenden die zurückgegebeneid, den Pfad oder den Titel („tears of steel“). Die erneute Indizierung eines bereits indizierten Videos erfolgt sofort. - Momente finden.
ask_video(video, query)/jevreel ask <id> "<abfrage>".- Schreibe die Abfrage als einfache Beschreibung dessen, was sichtbar oder gesagt wäre: „ein Balkendiagramm auf einer Folie“, „jemand öffnet einen Laptop“, „der Sprecher erwähnt Preise“.
- Eine Sache pro Abfrage. Teile „ein rotes Auto und ein Hund“ in zwei Anfragen; Jev ist bei einfachen Fragen am genauesten.
mode:visual(nur auf dem Bildschirm),speech(nur Transkript, am günstigsten),bothoderauto.- Eingrenzen mit
start/end, wenn der Nutzer einen Teil des Videos nennt.
- Anhand eines Fotos finden.
find_in_video(video, image_path, note="person")/jevreel find <id> foto.jpg --note person. - Vor dem Antworten ansehen. Treffer sind Hinweise, keine Tatsachen. Bestätigte Treffer enthalten
frame, ein Vollbild des Moments: sieh es dir an.zoom_video(video, start, end)/jevreel zoom <id> 12:00 12:10liefert mehr Bilder.locate_in_frame(video, at, target)rahmt und beschneidet eine Sache in einem Bild für eine genaue Betrachtung. - Was gesagt wird.
video_transcript(video, start, end)/jevreel transcript <id> --start 12:00 --end 13:00. - Fragen zum gesamten Video.
ask_whole_video(video, question, kind, options)/jevreel whole <id> "Ist das ein Tutorial?". Verwendekind=choicemit Optionen oderkind=scoremit abgestuften Niveaus (höchstens 10), beginnend mit dem niedrigsten.
Lenses: wenn dieselben Fragen für das gesamte Video relevant sind
Wenn der Nutzer sich für mehrere Aspekte in einem Video interessiert (wer zu sehen ist, Sicherheitsregeln, Marken, Wetter, ob eine Folie eingeblendet ist), frage nicht jede einzeln ab. Führe eine Linse aus: Jede Minute beantwortet alle ihre Fragen in einer einzigen Anfrage. Anschließend filterst du die Antworten so oft wie nötig, kostenlos.
- MCP
run_lens(video, lens)mit{"name": "site", "questions": [{"name": "helm_ab", "type": "noul", "ask": "Ist ein Arbeiter ohne Helm sichtbar?"}, {"name": "fahrzeug", "type": "choice", "ask": "Welches Fahrzeug ist am sichtbarsten?", "options": ["auto", "lastwagen", "kein"]}, {"name": "menschenmenge", "type": "score", "ask": "Wie voll ist es?", "levels": ["Leer", "Etwas", "Voll"]}]}. CLI:jevreel lens <id> lens.toml. Um eine Linse während der Indizierung einzubeziehen, übergib sie anindex_video(oderjevreel index --lens); sie kostet dann fast nichts extra. query_timeline(video, "helm_ab > 0.7")/jevreel query <id> "helm_ab > 0.7 and fahrzeug == lastwagen". Bedingungen sindspalte operator wert, verbunden mitand; setze einen Wert in Anführungszeichen, der „and“ enthält (platz == 'bücher und ein schreibtisch'). Lasswhereweg, um jede Minute und ihre Spalten zu sehen. Ja/Nein-Fragen liefern auch<name>_at, die Sekunde, zu der es am sichtbarsten ist.- Die Standard-Zeitleistenspalten sind ebenfalls vorhanden:
people,talking_to_camera,screen_or_slides,text_on_screen,cut,setting,activity(0-3),keyframe.
Ergebnisse lesen
probabilityist Jevs Ja-Wahrscheinlichkeit;strongbedeutet mindestens 0,7. BeiverifiedTreffern stammt sie aus den Vollbildern,at/timeist der Frame, der es am besten zeigte, undscreenedist die Kontaktabzug-Wahrscheinlichkeit davor. Unbestätigte Treffer stammen allein vom Abzug.shownundsaidsind die Bildschirm- und Transkriptfragen, getrennt gestellt.alsolistet andere wahrscheinliche Momente im selben Fenster auf.- Wahrscheinlichkeiten sind gut zur Einordnung, aber nicht garantiert kalibriert. Sieh selbst nach, bevor du etwas behauptest, das du nicht gesehen hast, und sage dies, wenn du nur einen schwachen Treffer hast.
- Keine Treffer über dem Schwellenwert ist eine echte Antwort, aber überprüfe zuerst
weak: Fenster, die Jev nicht ausgeschlossen hat, einschließlich solcher, die durch die Überprüfung umgestoßen wurden. Zoome hinein, bevor du sagst „nicht gefunden“. - Zitiere Momente mit ihren Zeitangaben (z. B. „bei 12:04“), damit der Nutzer dorthin springen kann.
Kosten
Jev berechnet nur Input-Tokens, und wiederholte identische Anfragen werden aus dem Cache von jevreel beantwortet (cached in den Ergebnissen). Jede Frage sendet jeden Abzug im Bereich einmal (ein Abzug pro Minute Video) plus eine Anfrage pro bestätigtem Fenster. Die Eingrenzung mit start/end macht Fragen günstiger und schneller. Ergebnisse berichten requests, cached, input_tokens und estimated_usd.