# 摘要输入长度统计 运行 `.\.venv\Scripts\python.exe -m src.step1_knowledge_prepare.token_stats`,生成 [完整报告](token_stats/report.md)、[机器统计](token_stats/report.json)、[逐条定位](token_stats/records.jsonl) 和 [提示词快照](token_stats/prompts.json)。 处理代码位于 `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,全部可容纳。摘要完整性与翻倍重试见 [摘要生成](summary-generation.md)。 ## 固定口径 - 每条现有 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://api-docs.deepseek.com/quick_start/token_usage/),下载地址为 `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 操作。