jevreel: haz preguntas sobre videos
jevreel organiza un video en hojas de contacto a un fotograma por segundo y utiliza a Jev, el modelo de decisión rápida de TypeSafe, para examinar cada hoja en paralelo, luego revisa las mejores ventanas en fotogramas completos. Tú (el agente principal) luego observas lo que encontró. Jev proporciona respuestas con tipos y probabilidades, nunca descripciones: leer, describir y concluir es tu trabajo.
Verificación de configuración
TYPESAFE_API_KEYdebe estar configurado para cualquier cosa que consulte a Jev (indexación con línea de tiempo, preguntar, encontrar, localizar, completo, lentes). Zoom, transcripciones y consultas de línea de tiempo funcionan sin ella.ffmpegyffprobedeben estar en el PATH.- Las URLs necesitan
jevreel[url]; los videos sin subtítulos necesitanjevreel[asr]para obtener una transcripción.
Flujo de trabajo
- Indexa una vez. MCP
index_video(source)ojevreel index <archivo-o-url>. Las llamadas posteriores usan eliddevuelto, la ruta o el título ("tears of steel"). Re-indexar un video ya indexado devuelve el resultado de inmediato. - Encuentra momentos.
ask_video(video, consulta)/jevreel ask <id> "<consulta>".- Escribe la consulta como una descripción simple de lo que sería visible o se diría: "un gráfico de barras en una diapositiva", "alguien abre un portátil", "el orador menciona precios".
- Una cosa por consulta. Divide "un coche rojo y un perro" en dos preguntas; Jev es más preciso con preguntas simples.
mode:visual(solo en pantalla),speech(solo transcripción, más barato),both, oauto.- Acota con
start/endcuando el usuario mencione una parte del video.
- Encuentra a partir de una foto.
find_in_video(video, ruta_imagen, nota="persona")/jevreel find <id> foto.jpg --note persona. - Mira antes de responder. Los aciertos son pistas, no hechos. Los aciertos verificados vienen con
frame, una imagen a resolución completa del momento: mírala.zoom_video(video, inicio, fin)/jevreel zoom <id> 12:00 12:10proporciona más fotogramas.locate_in_frame(video, en, destino)encuadra y recorta una cosa en un fotograma para una lectura de cerca. - Lo que se dice.
video_transcript(video, inicio, fin)/jevreel transcript <id> --start 12:00 --end 13:00. - Preguntas sobre el video completo.
ask_whole_video(video, pregunta, tipo, opciones)/jevreel whole <id> "¿Es esto un tutorial?". Usakind=choicecon opciones, okind=scorecon niveles del más bajo al más alto (máximo 10).
Lentes: cuando las mismas preguntas importan a lo largo de todo el video
Cuando al usuario le importan varias cosas a lo largo de un video (quién está en pantalla, reglas de seguridad, marcas, clima, si hay una diapositiva visible), no preguntes cada una por separado. Ejecuta un lente: cada minuto responde todas sus preguntas en una sola solicitud. Luego filtra las respuestas tantas veces como sea necesario, de forma gratuita.
- MCP
run_lens(video, lente)con{"name": "sitio", "questions": [{"name": "casco_quitado", "type": "noul", "ask": "¿Se ve un trabajador sin casco?"}, {"name": "vehiculo", "type": "choice", "ask": "¿Qué vehículo es más visible?", "options": ["coche", "camión", "ninguno"]}, {"name": "multitud", "type": "score", "ask": "¿Qué tan concurrido está?", "levels": ["Vacío", "Algo", "Concurrido"]}]}. CLI:jevreel lens <id> lente.toml. Para incluir un lente mientras se indexa, pásalo aindex_video(ojevreel index --lens); entonces cuesta casi nada adicional. query_timeline(video, "casco_quitado > 0.7")/jevreel query <id> "casco_quitado > 0.7 and vehiculo == camion". Las condiciones soncolumna operador valorunidas porand; entrecomilla un valor que contenga "and" (lugar == 'libros y un escritorio'). Omitewherepara ver cada minuto y sus columnas. Las preguntas de sí/no también dan<nombre>_at, el segundo en que es más visible.- Las columnas predeterminadas de la línea de tiempo también están ahí:
people,talking_to_camera,screen_or_slides,text_on_screen,cut,setting,activity(0-3),keyframe.
Lectura de resultados
probabilityes la probabilidad de "sí" de Jev;strongsignifica al menos 0.7. Para aciertosverifiedproviene de los fotogramas completos,at/timees el fotograma que lo mostró mejor, yscreenedes la probabilidad de la hoja de contacto antes. Los aciertos no verificados provienen solo de la hoja.shownysaidson las preguntas de pantalla y transcripción, preguntadas por separado.alsoenumera otros momentos probables en la misma ventana.- Las probabilidades clasifican bien pero no están garantizadas como calibradas. Mira antes de afirmar algo que no hayas visto, y dilo cuando solo tengas un acierto débil.
- Que no haya aciertos por encima del umbral es una respuesta real, pero primero revisa
weak: ventanas que Jev no descartó, incluidas aquellas que la verificación revocó. Haz zoom en ellas antes de decir "no encontrado". - Cita los momentos por sus tiempos (por ejemplo "a las 12:04"), para que el usuario pueda saltar allí.
Costos
Jev factura solo tokens de entrada, y las solicitudes repetidas idénticas se responden desde la caché de jevreel de forma
gratuita (cached en los resultados). Cada pregunta envía cada hoja en el rango una vez (una hoja por minuto de
video), más una solicitud por ventana verificada, por lo que acotar con start/end hace que las preguntas sean más
baratas y rápidas. Los resultados reportan requests, cached, input_tokens y estimated_usd.