jevreel: 비디오에 대해 질문하기
jevreel은 비디오를 초당 한 프레임씩 연속 사진 시트에 펼쳐놓고, TypeSafe의 고속 결정 모델인 Jev가 모든 시트를 병렬로 스크리닝한 후, 가장 좋은 윈도우를 전체 프레임에서 다시 확인합니다. 그러면 당신(메인 에이전트)이 찾은 내용을 살펴봅니다. Jev는 설명이 아닌, 타입이 지정된 답변과 확률을 제공합니다. 읽고, 설명하고, 결론을 내리는 것은 당신의 역할입니다.
설정 확인
TYPESAFE_API_KEY는 Jev에게 질문하는 모든 작업(타임라인을 사용한 인덱싱, ask, find, locate, whole, lenses)에 설정되어 있어야 합니다. 확대, 대본 및 타임라인 쿼리는 이것 없이도 작동합니다.ffmpeg와ffprobe가 PATH에 있어야 합니다.- URL에는
jevreel[url]이 필요합니다. 자막이 없는 비디오는 대본을 위해jevreel[asr]이 필요합니다.
워크플로우
- 한 번 인덱싱합니다. MCP
index_video(source)또는jevreel index <file-or-url>. 이후 호출은 반환된id, 경로 또는 제목("tears of steel")을 사용합니다. 이미 인덱싱된 비디오를 다시 인덱싱하면 즉시 반환됩니다. - 순간을 찾습니다.
ask_video(video, query)/jevreel ask <id> "<query>".- 쿼리를 화면에 보이거나 말해지는 내용에 대한 평범한 설명으로 작성하십시오: "슬라이드의 막대 차트", "누군가 노트북을 엽니다", "발표자가 가격을 언급합니다".
- 쿼리당 한 가지. "빨간 차와 개"는 두 개의 ask로 나누십시오. Jev는 간단한 질문에 가장 정확합니다.
mode:visual(화면만),speech(대본만, 가장 저렴),both, 또는auto.- 사용자가 비디오의 일부를 언급할 때
start/end로 범위를 좁히십시오.
- 사진에서 찾습니다.
find_in_video(video, image_path, note="person")/jevreel find <id> photo.jpg --note person. - 답변하기 전에 살펴보십시오. 히트(hits)는 단서일 뿐, 사실이 아닙니다. 확인된 히트는
frame과 함께 제공되며, 순간의 전체 해상도 이미지입니다: 그것을 보십시오.zoom_video(video, start, end)/jevreel zoom <id> 12:00 12:10은 더 많은 프레임을 제공합니다.locate_in_frame(video, at, target)은 한 프레임에서 한 대상을 박스로 표시하고 잘라내어 자세히 읽을 수 있게 합니다. - 말해진 내용.
video_transcript(video, start, end)/jevreel transcript <id> --start 12:00 --end 13:00. - 전체 비디오 질문.
ask_whole_video(video, question, kind, options)/jevreel whole <id> "이것은 튜토리얼입니까?".kind=choice와 함께 options을 사용하거나,kind=score와 함께 레벨을 낮은 순서로 사용하십시오(최대 10개).
렌즈(Lenses): 동일한 질문이 비디오 전체에 걸쳐 중요할 때
사용자가 비디오 전반에 걸쳐 여러 사항(누가 화면에 있는지, 안전 규칙, 브랜드, 날씨, 슬라이드가 올라와 있는지 등)에 관심이 있을 때, 각각을 개별적으로 묻지 마십시오. 렌즈를 실행하십시오: 매 분마다 한 번의 요청으로 모든 질문에 답합니다. 그런 다음 필요에 따라 답변을 필터링할 수 있으며, 추가 비용은 없습니다.
- MCP
run_lens(video, lens)with{"name": "site", "questions": [{"name": "helmet_off", "type": "bool", "ask": "안전모를 쓰지 않은 작업자가 보입니까?"}, {"name": "vehicle", "type": "choice", "ask": "가장 잘 보이는 차량은 무엇입니까?", "options": ["car", "truck", "none"]}, {"name": "crowd", "type": "score", "ask": "얼마나 붐빕니까?", "levels": ["비어 있음", "약간", "혼잡"]}]}. CLI:jevreel lens <id> lens.toml. 인덱싱 중에 렌즈를 포함하려면index_video에 전달하십시오 (또는jevreel index --lens). 그러면 거의 추가 비용이 들지 않습니다. query_timeline(video, "helmet_off > 0.7")/jevreel query <id> "helmet_off > 0.7 and vehicle == truck". 조건은열 연산자 값형식이며and로 연결됩니다. "and"가 포함된 값은 따옴표로 묶으십시오 (place == 'books and a desk').where를 생략하면 매 분과 해당 열을 모두 볼 수 있습니다. 예/아니오 질문은<name>_at도 제공하며, 이는 가장 잘 보이는 초 단위 시간입니다.- 기본 타임라인 열도 있습니다:
people,talking_to_camera,screen_or_slides,text_on_screen,cut,setting,activity(0-3),keyframe.
결과 읽기
probability는 Jev의 예-확률입니다.strong은 최소 0.7을 의미합니다.verified히트의 경우 전체 프레임에서 나온 확률이며,at/time은 이를 가장 잘 보여준 프레임의 시간이고,screened는 그 이전의 연속 사진 시트 확률입니다. 확인되지 않은 히트는 시트에서만 나옵니다.shown과said는 각각 화면 및 대본 질문에 대한 별도 결과입니다.also는 동일한 윈도우 내의 다른 가능성 있는 순간들을 나열합니다.- 확률은 순위를 잘 매기지만 보정(calibrated)이 보장되지는 않습니다. 직접 보지 않은 것은 말하기 전에 살펴보고, 약한 히트만 있는 경우 그렇게 말하십시오.
- 임계값 이상의 히트가 없다는 것은 실제 답변이지만, 먼저
weak를 확인하십시오: Jev가 배제하지 않은 윈도우로, 확인 결과 뒤집힌 것들을 포함합니다. "찾을 수 없음"이라고 말하기 전에 이 윈도우들을 확대하여 살펴보십시오. - 순간들을 시간(예: "12:04초에")으로 인용하여 사용자가 해당 지점으로 이동할 수 있게 하십시오.
비용
Jev는 입력 토큰에 대해서만 비용을 청구하며, 동일한 요청이 반복되면 jevreel의 캐시에서 무료로 응답됩니다(결과에 cached로 표시됨). 각 ask는 범위 내의 각 시트를 한 번(비디오 1분당 1시트) 전송하고, 확인된 각 윈도우에 대해 한 번의 요청을 추가로 전송하므로, start/end로 범위를 좁히면 ask가 더 저렴하고 빨라집니다. 결과는 requests, cached, input_tokens 및 estimated_usd를 보고합니다.