jevreel:询问关于视频的问题
jevreel 将视频按每秒一帧的速度铺展在联系表上,并利用 TypeSafe 的快速决策模型 Jev 并行扫描每一张联系表,然后在全帧上重新检查最佳窗口。你(主要代理)随后查看它找到的内容。Jev 提供类型化答案和概率,而不是描述:阅读、描述和得出结论是你的工作。
设置检查
- 任何需要询问 Jev 的操作(使用时间线进行索引、询问、查找、定位、全视频、镜头)都必须设置
TYPESAFE_API_KEY。缩放、字幕和时间线查询无需 API 密钥即可工作。 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>"。- 将查询写为对可见或所说内容的简单描述: “幻灯片上的条形图”、“某人打开笔记本电脑”、“演讲者提到定价”。
- 每个查询只包含一件事。将“一辆红色汽车和一只狗”拆分为两个询问;Jev 在简单问题上最准确。
mode:visual(仅屏幕)、speech(仅字幕,最便宜)、both或auto。- 当用户提到视频的某个部分时,使用
start/end缩小范围。
- 从照片中查找。
find_in_video(video, image_path, note="person")/jevreel find <id> photo.jpg --note person。 - 在回答前先查看。 命中的只是线索,不是事实。已验证的命中会附带
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并附带选项,或kind=score并附带等级(最低优先,最多 10 个)。
镜头:当相同的问题在整个视频中都很重要时
当用户关心整个视频中的多个事物(谁在屏幕上、安全规则、品牌、天气、幻灯片是否出现)时,不要分别询问每个问题。运行一个镜头:每分钟在一个请求中回答所有问题。然后根据需要随时过滤答案,无需额外费用。
- MCP
run_lens(video, lens)使用{"name": "site", "questions": [{"name": "helmet_off", "type": "noul", "ask": "能看到没有戴头盔的工人吗?"}, {"name": "vehicle", "type": "choice", "ask": "哪种车辆最显眼?", "options": ["car", "truck", "none"]}, {"name": "crowd", "type": "score", "ask": "拥挤程度如何?", "levels": ["Empty", "Some", "Busy"]}]}。 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"。 条件是column op value并用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列出同一窗口中的其他可能时刻。- 概率排序良好,但不能保证校准。在声明任何你未亲眼所见的事物之前先查看,并且当你只有弱命中时也要说明。
- 没有超过阈值的命中是一个真正的答案,但先检查
weak:Jev 未排除的窗口,包括那些被验证推翻的。在说“未找到”之前,先放大这些窗口。 - 通过时间引用时刻(例如“在 12:04”),以便用户可以跳转到那里。
成本
Jev 仅对输入令牌收费,重复的相同请求会从 jevreel 的缓存中免费回答(结果中的 cached)。每次询问都会发送范围内的每个联系表一次(每分钟视频一张),再加上每个已验证窗口一个请求,因此使用 start/end 缩小范围会使询问更便宜、更快。结果会报告 requests、cached、input_tokens 和 estimated_usd。