先测量,再决定是否压缩中文提示
文言提供助词字符过滤,并比较配置的各 Tokenizer 对提示的计数。当前策略会移除指定字符,还没有自动选择多种压缩方法的能力。
中文字符串更短不一定意味着 Token 更少,Token 更少也不一定保留原意。把文本变化、真实 Tokenizer 计数和重试成本假设分开,才能检查这种取舍。
- 展示具体改动 — 原始和变换后的文本可直接比较。
- 使用真实 Tokenizer — 计数加载 Transformers Tokenizer,无法加载时标记不可用,不估算 Token 数。
- 暴露重试假设 — 回归从计数差值中扣除给定重试 Token 成本。
strategies.py 管理已实现的助词字符集合和过滤器。models.toml 选择 Tokenizer 仓库,profiler.py 关闭特殊 Token 后计算 input IDs 数量。regress.py 计算原始减压缩再减给定重试成本,并可回放提交的计数数组。CLI 展示各阶段,策略选择器仍为占位入口。
| 组件 | 职责 |
|---|---|
Chinese prompt |
original text |
Particle filter |
character removal |
Tokenizer profiler |
real input-ID counts |
Regression |
count delta minus retry cost |
Model registry |
tokenizer repo selection |
需要 Python 3.12+ 和 uv。纯文本演示不需要下载 Tokenizer;计数还需能访问配置的 Tokenizer 资源或本地缓存。
git clone https://github.com/SuperMarioYL/wenyan.git
cd wenyan
uv venv --python 3.12
source .venv/bin/activate
uv pip install -e .示例对两个完整提示调用实际 particle_strip 函数,将字符串长度明确标为字符数,并展示删除了、得时可能破坏了解、得到等词语。
.venv/bin/python examples/presentation_demo.pyThe demo shows exact character edits, including altered words; it makes no token-savings claim.
{"original": "请帮我解释一下缓存的失效过程吧。", "transformed": "请帮我解释一下缓存失效过程。", "characters_before": 16, "characters_after": 14}
{"original": "请先了解地址的格式,再得到哈希结果。", "transformed": "请先解地址格式,再到哈希结果。", "characters_before": 18, "characters_after": 15}
Scope: character filtering only; character counts are not token counts or measured model savings.
Review the second example: the filter can alter words such as 了解 and 得到.
完整命令与输出保存在 docs/demo-results.json. 输入和复现代码均随仓提供。
保留已有录制供参考;上方文字示例给出当前可复现的操作。
compress 前先创建包含待检查 UTF-8 文本的 prompt.txt。profile、compress、regress 可能下载 Tokenizer 资源。harness 回放仓库提交的计数样本,不产生新计数;harness --verify 重新加载 Tokenizer 计数并检查样本差异。--retry-cost 是每条提示的假设值,不是自动测得的重试轨迹。
.venv/bin/wenyan profile --suite
.venv/bin/wenyan compress --prompt prompt.txt
.venv/bin/wenyan regress --suite --retry-cost 1
.venv/bin/wenyan harness --retry-cost 1Tokenizer 绑定位于 wenyan/models.toml。已实现策略只有 助词_strip;文言文、成语_sub 抛出 NotImplementedError,picker 打印路线图提示。计数关闭特殊 Token。注册表只写仓库名、未固定不可变修订,因此跨时间比较应记录实际 Tokenizer 版本。提交的计数样本带有自身记录元数据。
Profiler 加载 Tokenizer 资源,不加载模型权重,也不生成模型回答。当前注册表指向具体 DeepSeek Coder、Qwen2.5 和 GLM-4 Tokenizer 仓库。系列标签是本地元数据,不能将一次测量推广到服务商所有版本。
| 路径 | 已实现职责 |
|---|---|
| Text files | UTF-8 prompt input |
| Python API | particle_strip / apply |
| Transformers | tokenizer-only profiling |
| TOML registry | per-tokenizer configuration |
| Count fixture | offline regression arithmetic |
- 过滤器按字符操作,没有词边界意识,可能改变含义或破坏代码、标识符及引文,需检查具体变换结果。
- 字符减少不能证明 Token 节省。记录示例没有进行 Tokenizer 或下游任务质量测量。
- 样本中的任务成功字段和零重试成本属于假设或回放元数据,不是在线模型理解能力评估。
已实现助词过滤、真实 Tokenizer 计数、回归计算和计数样本验证。后续方向是词边界感知变换、更多策略、实测策略选择,以及下游任务质量和重试评估。当前结果不应宣传为必然降低成本。
许可见 LICENSE. 反馈问题时请提供最小输入、执行命令和实际输出。
