Skip to content
SuperMarioYLPublic

About

wenyan 是面向 DeepSeek/Qwen/GLM 编码 Agent 的 per-tokenizer 中文 prompt-compression Skill

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

English · Website · GitHub

Hero diagram

文言 wenyan

先测量,再决定是否压缩中文提示

文言提供助词字符过滤,并比较配置的各 Tokenizer 对提示的计数。当前策略会移除指定字符,还没有自动选择多种压缩方法的能力。

为什么需要它

中文字符串更短不一定意味着 Token 更少,Token 更少也不一定保留原意。把文本变化、真实 Tokenizer 计数和重试成本假设分开,才能检查这种取舍。

  • 展示具体改动 — 原始和变换后的文本可直接比较。
  • 使用真实 Tokenizer — 计数加载 Transformers Tokenizer,无法加载时标记不可用,不估算 Token 数。
  • 暴露重试假设 — 回归从计数差值中扣除给定重试 Token 成本。

架构

Architecture diagram

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.py

实际运行示例

Process diagram

The 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 1

配置

Tokenizer 绑定位于 wenyan/models.toml。已实现策略只有 助词_strip;文言文、成语_sub 抛出 NotImplementedError,picker 打印路线图提示。计数关闭特殊 Token。注册表只写仓库名、未固定不可变修订,因此跨时间比较应记录实际 Tokenizer 版本。提交的计数样本带有自身记录元数据。

集成与职责分工

Integrations diagram

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. 反馈问题时请提供最小输入、执行命令和实际输出。

About

wenyan 是面向 DeepSeek/Qwen/GLM 编码 Agent 的 per-tokenizer 中文 prompt-compression Skill

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages