oh-my-pi snapcompact 图像问答评测:解析 qa-image 提示词模板如何让视觉模型从位图帧中抽取答案

发布时间:2026/9/12 15:38:47
oh-my-pi snapcompact 图像问答评测:解析 qa-image 提示词模板如何让视觉模型从位图帧中抽取答案
oh-my-pi snapcompact 图像问答评测解析 qa-image 提示词模板如何让视觉模型从位图帧中抽取答案【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi本文聚焦于 oh-my-pi代号 ⌥仓库中 snapcompact 位图压缩研究的一份核心评测提示词模板 —— packages/snapcompact/research/prompts/qa-image.md。它定义了视觉模型如何从点阵像素字体的位图帧中只读图内文本、并以严格格式作答的完整评测协议是驱动 snapcompact 各字体/形状方案 SQuAD 召回率对比实验的评测前导语。读完本文你将掌握该模板每一行约束的设计意图、它与 native 渲染器及 EM/F1 打分管线的调用关系以及如何在自己的实验中复现这一位图抽取式问答评测方法。一、qa-image.md 是什么一份刻意精简的 6 行评测协议该文档全文只有 6 行位于仓库的 snapcompact 研究目录下。它不是给最终用户看的说明而是程序化评测管线中的一个可渲染提示词模板——在实验运行时由 Python 脚本读取、用占位符填充后与位图帧、问题块一起组装成发给视觉模型的 user 消息。其完整内容如下{cols}、{rows}为运行时填充的帧几何参数The attached image contains encyclopedia passages rendered as a bitmap: monospace pixel font, {cols} characters per row, {rows} rows, read left-to-right then top-to-bottom. Original paragraph breaks were collapsed to spaces. Questions follow after the image. Answer them using ONLY text you can read in the image. - Give short extractive answers: a word or phrase copied from the text. - If you cannot read the relevant region well enough to answer, reply exactly UNREADABLE for that question. - Output a numbered list, one answer per line, no commentary.从文档本身提炼模板规定了四件事图像内容的先验描述告知模型图片是以等宽像素字体渲染的百科段落位图每行{cols}字符、共{rows}行阅读顺序为从左到右、从上到下且原始段落换行已被折叠成空格——这一句让模型做好连续文本流而非排版文本的心理预期避免它按换行推断句子边界答案来源约束只能用图像中能读到的文本作答禁止依赖模型参数记忆或常识补全答案形式约束必须是从原文逐字复制的短抽取式答案一个词或短语这保证了评测的是位图可读性而非模型推理能力失败模式与输出格式区域不可读时必须原样回复UNREADABLE弃权协议最终以编号列表逐行输出、每行一个答案、不做任何注释——这种机器友好的格式让 squad.py 的parse_numbered()可以直接正则解析。二、提示词在评测管线中的位置从位图渲染到 EM/F1 打分qa-image.md 不是孤立文件它嵌在research/目录的完整评测流程中。核心驱动脚本是 packages/snapcompact/research/final.py其run_cell_chunk()函数以(模型, 渲染条件, 文本块)为单位执行构造载体 → QA → 打分先用 snapcompact.rs 的原生渲染器把一段被丢弃的对话/百科文本栅格化为 PNG 位图帧然后按帧的几何信息填充提示词load_prompt(qa-image.md).format(colscols, rowsrows)columns 1时改用双栏变体qa-image-cols.md组装成[{text: preamble}, {image_path: png}, {text: q_block}]的 user 消息发给视觉模型模型输出经squad.parse_numbered()解析后用 SQuAD v1.1 官方的 EM精确匹配与 F1 指标打分。数据流大致为SQuAD v1.1 dev 段落流 ──► 按 chunk 切块 ──► 原生渲染器栅格化为 PNG 位图帧 ▲ │ │ ▼ EM/F1 打分 ◄── parse_numbered 解析编号列表 ◄── 视觉模型 ◄── qa-image.md 前导语 问题块其中 SQuAD 语料与打分逻辑在 squad.py 中load_paragraphs()拉取并缓存 SQuAD v1.1 dev 集sample_chunk_questions()保证跨块边界的段落被跳过答案可能被切断的样本不参与而exact_match()/f1()实现了官方归一化——小写化、去标点、去除 a/an/the 冠词后做分词级重叠计算。score()还会额外统计abstained答案中含 unreadable 的比例这正是 qa-image.md 中UNREADABLE弃权协议在指标层的落点弃权率本身是位图可读性的重要信号——一个大量弃权的方案说明渲染几何低于模型的 OCR 分辨地板。三、位图帧从何而来native 渲染器、像素字体与形状参数qa-image.md 中描述的monospace pixel font位图由原生渲染模块 crates/pi-natives/src/snapcompact.rs 生成。该模块只做text - PNG bytes一条热路径内部内置了五种公版像素字体字体来源用途5x8X.org BDF 字体旧版 legacy 形状8x8unscii-8 hex 字体Latin-1 子集方形单元格SQuAD 评测优胜者之一6x12/8x13X.org misc BDF 字体高密度评测优胜形状silver内置 TrueTypeSilver.ttfCJK 等非拉丁文本的逐字回退渲染渲染受形状Shape参数控制这些参数全部经research/的 SQuAD 评测验证过直接决定 qa-image.md 中{cols}、{rows}的值variantsent在句子边界循环六种色相的墨水对应调色板中 HLS l0.22、s0.95 的六色bw为纯黑墨水Anthropic 阅读器最优lineRepeat每行文本重复打印 N 次副本落在浅色高亮条带上8x8r 冗余编码形状cellWidth/cellHeight目标单元格与字体自然格不同时经 Lanczos3 重采样得到抗锯齿 RGB 帧如 OpenAI 最优的 6x6ustretch: false则保持字形自然尺寸8on16 / 8on22 形状columns2 表示双栏报纸式排版qa-image-cols.md 对应的 doc 形状dim spans文本流中的U000E/U000F零宽开关切换工具输出区域的灰色淡墨line breaksU2588FULL BLOCK填满整个单元格normalizer 把连续换行折叠成它让行结构在空白折叠后以单格代价保留。四、提示词的变体矩阵从单图到双栏、多图与纯文本对照qa-image.md 不是唯一的评测前导语research/prompts/下围绕它生长出一个完整的对照变体家族每个变体只改一处阅读假设从而隔离出不同的影响因素qa-image-cols.md报纸式双栏布局左栏自上而下读完再读右栏栏间有垂直沟槽线——对应columns: 2的 doc 形状用于验证多栏排版是否提升字符密度而不损失可读性qa-image-multi.md连续多图{k}张文本跨图流动按图序连续阅读——对应长文本切分为多个帧的场景mono.py 的 200k token 单块评测即用它qa-text.md纯文本对照组把同一段参考材料以reference标签给出其余约束抽取式、UNREADABLE、编号列表完全一致——用于分离位图载体的损失与模型本身抽取能力的基线exp06-qa-image.md对话记录变体用字形颜色编码发言者深蓝user、深绿assistant、深红tool消息边界即颜色变化处用于验证角色可辨识性exp19-qa-doc.md文档排版变体双栏内词级换行单词不跨行跨栏、文章标题为粗体大写、段间空行——模拟真实文档阅读qa-remote-compact.md远程压缩方案的前导语。此外exp13_extractive.py 记录了与位图载体竞争的文本抽取式压缩基线同样要求逐字复制承载信息的句子预算按光学载体的成本对齐约 2000 token ≈ 每 40716 字符块 8000 字符。其注释明确指出叙事式摘要对抽取式问答是敌对的——Gemini 在叙事摘要上会直接弃权UNREADABLEF10这反过来说明 qa-image 系提示词坚持抽取式 可弃权设计的必要性。五、评测结论如何回灌生产提供商感知的形状选择qa-image.md 支撑的评测不只是研究产物其结论直接决定了生产管线 packages/snapcompact/src/snapcompact.ts 中的默认形状Shape。按 README 与源码注释中的基准数据各阅读器的优胜形状为阅读器默认形状说明来自 tool-result 可读性基准Anthropic11on16-bw8x13 字形 11px 字距opus-4.8 上 F1 .806 vs8on16-bw的 .755Google8on22-bw20488x13 字形 22px 行距gemini-3.5-flash 上 F1 .934 vs .807OpenAI8on22-bw行距增益同样生效detail: original发送未知提供商8on22-bwAnthropic 计费按模型 id 而非仅按线路匹配Claude 经 Vertex/OpenRouter 转发仍保持其形状resolveShape({api, id})依据模型 id 而非线路 API 选择形状——例如idealShapeVariant()中 Opus 4.7 与 Fable/Mythos 走 1932px 高分辨率帧(1932/28)²4761 ≤ 4784 视觉 token 上限Gemini 3.x 因固定 1120 token/图的计费而用 2048px 帧。形状计算还依赖familyBilling()Anthropic 按 28px patch 计费封顶 4784 token、OpenAI 按 32px patch×1.2 计费、Gemini 固定预算——这意味着 qa-image.md 中{cols}×{rows}的帧几何与每帧能装多少字符最终由提供商计费模型反向约束评测与成本是一体两面。六、在生产压缩管线中的落地compact() 与 preserveData评测验证的形状与提示词协议最终服务于 snapcompact 的上下文压缩不再要求 LLM 摘要被丢弃的历史而是把序列化的对话渲染成点阵帧让视觉模型直接读图回放。核心入口compact(preparation, { model })返回result.summary简短的resume prior conversation前导语、阅读指南与 FILES 段result.preserveData有界存档源 渲染出的图像中间段——帧以 base64 PNG 持久化在压缩条目中每次重建上下文时重新挂载到摘要消息上。整个流程本地且确定性无 LLM 调用、无 API key、除渲染外无额外延迟。序列化端serializeConversation为每个工具结果默认 2000 字符、每个参数值默认 500 字符设字符上限normalize负责剥离 ANSI、折叠空白、把换行折叠为全块字形工具输出默认以U000E/U000F淡墨包裹使存档对话比存档工具噪声更响亮——这些细节最终都决定了一张位图帧里印了什么也就决定了 qa-image.md 评测出的可读性分数。七、如何复现这套评测从安装到跑通一条 QA 链路如果你想在自己的环境复现这套位图抽取式问答评测仓库提供了两条路径1. 直接使用渲染 API 生成位图帧无需跑完整评测snapcompact 作为独立包发布TypeScript 源码直接随包分发无需构建步骤要求 Bun ≥ 1.3.14bun add oh-my-pi/snapcompactimport { renderMany, frames, resolveShape } from oh-my-pi/snapcompact; const images renderMany(longText, { model }); // ImageContent[]首页在前 const count frames(longText, { model }); // 不渲染即可预估帧数 const shape resolveShape(model); // 面向该阅读器的评测最优 Shape2. 跑通 research/ 目录的 SQuAD 评测research/下有完整的实验脚本族final.py汇总主流程、mono.py为 200k token 单块高分辨率跑批、exp01~exp22为各影响因素的单点实验如exp13_extractive.py的抽取式文本基线、exp04_layout.py的排版影响、exp08_foveate.py的注视区质量分层。评测以 SQuAD v1.1 dev 集为语料最终以 EM/F1 与弃权率为输出research/squad.py中的score()还会逐问题记录答案、标准答案与 EM/F1方便做错误归因。复现时的关键约束是图片必须用图内可见文本作答、答案需逐字复制、不可读时回复UNREADABLE、输出必须是每行一个答案的编号列表——这四条协议保证了不同字体、字距、行距、分栏方案之间对比的纯净性是整套 snapcompact 形状调优实验的方法论基石。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考