token-statistics.md 5.0 KB

摘要输入长度统计

运行 .\.venv\Scripts\python.exe -m src.step1_knowledge_prepare.token_stats,生成 完整报告、机器统计、逐条定位 和 提示词快照。 处理代码位于 src/step1_knowledge_prepare/token_stats.py,后续摘要生成应复用 summary_input.py 的事实选择与 messages,避免统计和实际请求使用不同文本。

当前五场景结果(summary-v3-five-scenarios)

原来的三套提示词已按用户要求分为五套;2026-09-10重新全量统计如下。当前脚本和 report.json 使用本版本,后文 summary-v1 表格仅为历史对照。

场景 条数 合计平均 P95 最大 提示词及包装开销
惠企政策 183 452.41 519 562 248
金融产品 185 559.35 700 931 286
普通政策/法规/文章 244 1,371.55 3,199 4,982 264
办事指南 1,578 2,490.56 4,176 14,131 313
六大服务板块 58 583.38 1,154 1,971 264

共2,248请求,合计输入4,484,861 token,最大14,131;当前 .env 初始总预算32,768、输出4,096、余量512,全部可容纳。摘要完整性与翻倍重试见 摘要生成。

固定口径

  • 每条现有 JSONL 记录作为一条请求,完整保留人工分段,不二次切分、合并或截断。重复记录计入请求量,未启用摘要复用。
  • policy 只取已确认的政策名称、部门、文号、上报事项、对象、支持、条件、收益及时间;排除模型建议与 source_annotations。
  • finance 保留业务字段和金额单位,排除原序号和详情 URL;general 使用标题和完整 body / structured_content,不重复附加 raw_record / sections。
  • QA 不生成摘要,928 条仅另记事实文本长度供参考;1 条目录排除。纳入 2,248 条摘要请求。
  • summary-v3-five-scenarios:系统规则、五场景要求、事实 JSON,以及官方模板的 system/user/assistant 消息边界。报告只保留定位和标题,不复制事实全文。
  • 提示词建议150–350汉字摘要,允许为保留关键限制延长;API 输出预算在 .env 配置。改变提示词或来源字段后必须重算。

Tokenizer 与精度

非秘密模型名核对为 deepseek-v4-flash。使用 DeepSeek 官方离线 tokenizer,下载地址为 https://cdn.deepseek.com/api-docs/deepseek_v4_tokenizer.zip。 仅使用包内 tokenizer.json 及检查后的简单消息模板,不运行下载的 Python 示例,不启用 trust_remote_code。 本地文件在 models/deepseek-tokenizer/,Git 忽略;report.json 记录 tokenizer SHA256、库版本、提示词哈希和四个输入 JSONL 的哈希。 首次换机器需要从上述官方链接下载包,将 tokenizer.json 放到默认路径,或用 --tokenizer 指定路径;通过项目初始化安装锁定的 tokenizers 依赖。

本地 token 数实际计算,不使用“汉字数×系数”。但它仍是 API 输入用量的离线估计:服务端额外包装、思考模式和返回输出不在此次计数内,后续以 API usage 校准。 模型配置文件内的 model_max_length 不作为 API 上下文上限。Qwen3-Embedding tokenizer 与 DeepSeek 不同,本轮未加载 Qwen 模型。

历史结果(2026-09-10,summary-v1)

类型 条数 事实平均 提示词及包装开销 合计平均 P50 P90 P95 P99 最大
惠企政策 183 204.41 248 452.41 451 496 519 547 562
金融产品 185 273.35 255 528.35 500 639 669 805 900
通用知识(不含目录) 1,880 1,981.36 254 2,235.36 2,111 3,461 4,003 6,219 14,072
全部摘要请求 2,248 — — 1,949.73 1,839 3,341 3,889 6,006 14,072

合计输入 4,383,004 token;不代表实际计费或缓存计费量。最大条目来自办事指南。 分位数采用 nearest-rank,P95 表示至少95%的条目不超过该值。各来源、各类分桶与最长20条见完整报告。

输入范围 条数
≤1,024 612
1,025–2,048 651
2,049–4,096 901
4,097–8,192 73
8,193–16,384 11
>16,384 0

若总预算16,384且预留2,048用于输出及额外开销,当前离线统计全部可容纳,最长项仅余264 token;预留4,096时有2条超预算。 总预算32,768、预留4,096时全部可容纳。这里只比较预算,不修改模型或 API 参数;启用思考时还需单独预算。

历史验证

2026-09-10:知识回归18项通过(既有12项+统计6项),覆盖字段排除、长正文尾部保留、消息包装、分位数和边界、QA/目录排除及主动关闭 tokenizer 截断。 未调用推理服务、未产生摘要、未修改 prepared 知识,未执行 Embedding 或 Milvus 操作。