Repository navigation
Releases: chaterm/Token-Verifier
Releases · chaterm/Token-Verifier
Release list
Token-Verifier 0.1.1-rc.1
Token-Verifier 0.1.0
Token Verifier 是一个无状态命令行工具,用于验证大模型 API 端点是否真的提供了它所声称的模型与配置。
它不依赖权重、不依赖评分标准、不依赖「答对」任何题 —— 只比较两侧端点在同一套刺激下产生的采样分布形状。分布对模型身份、量化、采样参数、prompt 改写都异常敏感,而对瞬时的网络波动相对稳健。这是它与 benchmark 的根本区别:benchmark 回答「这个模型有多强」,Token Verifier 回答「这还是同一个模型吗」。
经过三个 release candidate(v0.1.0-rc.1 ~ rc.3)的验证,本版为首个正式版。采集与比较链路已全部实现,覆盖全部五个探针。
五个探针,各自抓什么
| 探针 | 观测什么 | 能抓到什么 |
|---|---|---|
onetoken |
温度 1.0 下极短答案的取值分布 | 换模型、换量化、采样参数被改 |
tokenizer |
分词器敏感输入上服务端上报的输入 token 数 | 分词器/模型家族更换、中间层悄悄改写你的 prompt |
needle |
长上下文中按位置埋入的确定性派生标记的召回 | 上下文被静默截断、长上下文能力降级、窗口大小造假 |
think-effort |
指定思考强度下的思考量分布 | 思考被关闭、预算被削减、强度参数被忽略 |
toolcall |
工具选择、参数语法合法性、并行调用 | agent 行为漂移、工具调用能力降级 |
请求格式(协议)与上下文长度是正交于探针的两个测试轴。 每个探针都会在所有声明的协议(openai-chat / anthropic-messages / openai-responses,流式与非流式)和所有上下文档位上各跑一遍,判定按 (探针, 协议, 上下文档位) 的切片独立做出。端点若只在某一种格式下、或只在某一段长度上做了替换/截断/降级,会在对应切片上单独暴露,不会被正常切片稀释成「整体没问题」。
设计要点
- 无状态两步:
collect采集 → rawData;compare离线比较,全程不发请求。基线可离线分发,官方发布的参考 rawData 与用户自建基线均可对标。 - 采集计划带 SHA-256 digest:锁的是「实验设计」而非网关接线,所以你可以自由调整 base URL / API key / 阈值,而不丢失与官方基线的可比性。
digest脱敏档:保留观测值与内容哈希,不含任何模型输出文本,rawData 可公开发布而不泄露响应。needle 埋点标记由题目 ID 哈希派生,题库与 rawData 中都不以明文出现。- 不带默认阈值:任何绝对阈值都是无意义的 —— 必须用同一已知可信端点采集两次标定「正常波动」量级。缺任一待比较探针的阈值,
compare/run会拒绝执行(exit 2)。 - CI 友好的退出码:
0全 pass ·1有 fail ·3两侧不可比(配置问题)·5inconclusive ·6子集比较(--allow-subset)—— 永远不会被静默当作 pass 消费。
版本周期内的主要变更
相对 v0.1.0-rc.1:
- feat:档位级阈值
thresholds.<probe>.<bucket>,逐context_bucket独立判定(不再被跨档位稀释)。 - feat:
tv version子命令(--version),显示注入的tool_version。 - feat:
tv compare/tv run新增--allow-subset,两侧计划不必逐字节一致 ——context_buckets取交集、repeats取较小值降采样、min_n闸门忽略,子集全 pass 退出码6。 - feat:
openai-chat流式请求默认携带stream_options.include_usage,否则流式拿不到 token 数。 - refactor:官方基线发布迁移至独立数据仓库 Token-Verifier-Data。
相对 v0.1.0-rc.3(本正式版新增):
- fix(adapter):容忍 Bedrock 网关附加的空字符串
error字段(已含于 rc.3,本版保留)。 - docs:README 验证内容表新增「能抓到什么」列与协议/上下文长度正交性说明。
已知限制 / 未完成
raw_level: full尚未实现 —— 配置它会被明确拒绝,而非静默降级。- 拥塞控制尚未实现。
- 不提供聚合纯净度分:把 N 个探针压成一个数字需要标定数据支撑权重与掉分曲线,当前阶段不做。
needle探针的卡方池化假设各埋点单元独立,实际存在正/负相关。
完整文档在 docs/:PROBES.md(各探针机理)· ARCHITECTURE.md · DATAFLOW.md · SPEC-CONFIG.md · SPEC-SUITE.md · SPEC-RAWDATA.md。
负责任地测试
只测试你有权访问的端点,遵守服务商条款、速率限制与隐私要求。不要公开密钥、私有提示词、原始思考内容。Token Verifier 给出的是差异证据,不是底层模型身份的证明。