内容
<div align="center">
# TOKENFOLD
**减少噪音,容纳更多上下文,支付更少的输入令牌费用**
本地的、与提供商无关的压缩,用于提示、工具模式、JSON、日志和差异。
[](https://github.com/snchimata/tokenfold/actions/workflows/ci.yml) [](https://github.com/snchimata/tokenfold/actions/workflows/ci.yml) [](https://github.com/snchimata/tokenfold/releases/latest) [](https://pypi.org/project/tokenfold/) [](https://www.npmjs.com/package/tokenfold) [](https://docs.rs/crate/tokenfold-core/latest) [](LICENSE)
[快速开始](#快速开始) · [为什么选择tokenfold](#为什么选择tokenfold) · [集成](#选择您的集成) · [基准测试](#重现结果)
</div>
---
## 已证实的压缩,而非预测
| 重复JSON | API响应 | 工具模式 |
| :---: | :---: | :---: |
| **67.6%更少的令牌** | **61.3%更少的令牌** | **45.63%更少的令牌** |
| 50记录有效载荷 | 30记录有效载荷 | 1.8 MB OpenAI样式固定装置 |
所有三个结果都使用平衡模式下的精确`o200k_base`计数。JSON数据结果是无损的。基准测试在保留必填字段和描述的同时,修剪了冗余的示例。重复的、结构化的数据受益最大。
## 它能做什么
- **命令行界面** — `tokenfold compress` / `inspect` / `diff` 任意文件或标准输入;`tokenfold wrap <command>` 在原地压缩命令的输出。
- **库** — 与`pip install tokenfold`或`npm install tokenfold`相同的Rust引擎和接收形状,因此行为在语言之间永远不会偏移。
- **代理** — `tokenfold-proxy` 位于您的提供商前面,压缩请求,并将响应流式传输到未触及的。
- **MCP服务器** — `tokenfold mcp serve` 向任何MCP兼容的代理或编辑公开压缩/检查/检索/统计信息。
- **接收,而不是猜测** — 每次调用都返回精确的令牌计数、应用的转换和任何警告,以便您可以审计更改的内容。
- **无机器学习税** — 一个静态的Rust二进制文件压缩JSON有效载荷;无需Python运行时,无需模型下载,无需GPU。
## 快速开始
安装适合您堆栈的接口:
```bash
pip install tokenfold # Python 3.9+
npm install tokenfold # Node.js 22+
cargo add tokenfold-core # Rust库
cargo install tokenfold-cli # Rust命令行界面
```
或从 [GitHub Releases](https://github.com/snchimata/tokenfold/releases/latest) 下载适用于Linux、macOS或Windows的命令行界面,然后使用相邻的`.sha256`文件进行验证。
或安装Python包:
```bash
pip install tokenfold
```
在将OpenAI样式的请求发送到提供商之前压缩它:
```python
import json
from pathlib import Path
from tokenfold import CompressionMode, compress_openai_payload
result = compress_openai_payload(
Path("request.json").read_text(),
mode=CompressionMode.BALANCED,
)
compressed_request = json.loads(result.payload)
print(f"节省了{result.report.saved_tokens}个令牌({result.saved_pct():.1f}%)")
# 将compressed_request传递给现有的OpenAI客户端。
```
TypeScript包调用相同的本地Rust引擎并返回字节加上规范的压缩接收:
```typescript
import { compress } from "tokenfold";
const input = new TextEncoder().encode(JSON.stringify({
results: [
{ id: 101, region: "us-east-1", plan: "pro" },
{ id: 102, region: "us-east-1", plan: "pro" },
{ id: 103, region: "us-east-1", plan: "pro" },
],
}, null, 2));
const { payload, report } = await compress(input, {
format: "json",
mode: "balanced",
});
console.log(`节省了${report.saved_tokens}个令牌`);
console.log(new TextDecoder().decode(payload));
```
想要从源代码尝试命令行界面吗?检查捆绑的请求而不改变它:
```bash
git clone https://github.com/snchimata/tokenfold.git
cd tokenfold
cargo run --release --locked -p tokenfold-cli -- \
inspect examples/openai_payload.json --format openai
```
在具有相同有效载荷形状的100个请求中,这些节省的总和为:
```text
json_minify 34,600 → 22,900 节省11,700
schema_compaction 22,900 → 21,300 节省 1,600
TOTAL 34,600 → 21,300 节省13,300(38.4%减少,估计)
```
## 为什么选择tokenfold
模型不需要同一个对象键重复数百次。提供商仍然计算每个令牌。Tokenfold在模型调用之前删除这种结构浪费,因此您可以:
- **降低输入成本** — 在不更改提供商的情况下发送更少的计费令牌。
- **更多有用的上下文** — 为指令、证据和对话历史腾出空间。
- **更少的数据移动** — 缩小跨队列、代理、日志和评估运行的有效载荷。
- **更少的盲点** — 检查计数、转换和警告。
- **没有新的数据处理器** — 在本地、进程内或在您自己的环回代理后面运行。
```text
消息 · 模式 · JSON · 日志 · 差异
│
▼
tokenfold ──────▶ 任意LLM提供商
│
└───────────▶ 压缩的有效载荷 + 接收
```
## 何时使用tokenfold · 何时寻找其他解决方案
**如果您...**
- 想要每次调用的精确、可审计的接收结果,而不是估计值
- 需要对结构化数据(JSON、模式、工具参数)进行无损保证,然后再将其发送到计费表
- 想要在依赖图中提供一个静态二进制文件,而无需ML运行时、模型下载或GPU
- 正在缩小日志、差异和重复工具输出,以便在LLM、日志存储或队列之前进行
**如果您...**
- 需要对非结构化文本进行查询感知摘要 — 这需要一个模型,而tokenfold故意保持确定性
- 想要一个托管的API来调用 — tokenfold完全在您的机器或基础设施上运行;无需注册
## 它改进了什么
| 工作负载 | 用户收益 |
| --- | --- |
| API和记录集 | 将重复的键和值存储一次 |
| 提供商请求 | 在不更改API形状的情况下缩小消息和模式 |
| 代理日志和差异 | 保留证据;压缩重复输出 |
| 令牌预算 | 达到目标或返回诚实的最佳努力 |
| 敏感工作流 | 在报告或存储之前删除检测到的机密 |
## 选择您的集成
一个Rust引擎为每个表面提供支持,因此策略和接收结果在堆栈更改时保持一致。
| 表面 | 最适合 | 安装或运行 |
| --- | --- | --- |
| Python | 应用程序和评估管道 | `pip install tokenfold` |
| TypeScript | Node.js应用程序和自动化 | `npm install tokenfold` |
| Rust | 本机嵌入 | `cargo add tokenfold-core` |
| 命令行界面 | 文件和命令输出 | [下载发布二进制文件](https://github.com/snchimata/tokenfold/releases/latest) |
| HTTP代理 | 提供商形状的流量 | 从源代码构建`tokenfold-proxy` |
| MCP服务器 | MCP兼容的代理和编辑 | `tokenfold mcp serve` |
### 压缩通用JSON
对于API响应、记录转储和其他不是LLM请求的数据,请使用`format="JSON"`:
```python
import json
import tokenfold
result = tokenfold.compress(
json.dumps({
"results": [
{"id": 101, "region": "us-east-1", "plan": "pro"},
{"id": 102, "region": "us-east-1", "plan": "pro"},
{"id": 103, "region": "us-east-1", "plan": "pro"},
]
}),
format="JSON",
mode="BALANCED",
)
print(f"节省了{result.report.saved_tokens}个令牌")
```
### 运行代理
```bash
cargo build --release --locked -p tokenfold-proxy
target/release/tokenfold-proxy \
--upstream https://api.openai.com \
--target-tokens 12000
```
代理默认监听`127.0.0.1:8787`,流式传输SSE响应,并在`X-TokenFold-*`头中返回压缩接收。
## 你可以检查的安全性
Tokenfold在每个阶段后重新计算,并在达到目标或允许的转换集用尽时停止。
- **从不更大:** 只有当转换减少令牌计数时,转换才会保留。
- **可逆JSON:** 每个结构重写都必须通过精确的往返。
- **清晰的来源:** 精确的标记器结果和估计值分别标记。
- **可行的接收:** 每个结果都列出了节省、转换、警告和最终状态。
- **诚实的限制:** 无法达到的目标会返回明确的状态,而不是静默地删除更多内容。
有损日志和差异转换仍然是策略受控的。可以通过SHA-256哈希存储可选的原件;检测到的类似机密的内容会被排除。
## 重现结果
| 固定装置 | 精确令牌减少 | 源 |
| --- | ---: | --- |
| 重复的50记录JSON | **67.6%** | [更新日志] |
| 30记录API响应 | **61.3%** | [更新日志] |
| 1.8 MB OpenAI工具模式 | **45.63%** | [阈值] |
[更新日志]: CHANGELOG.md
[阈值]: crates/tokenfold-core/benches/THRESHOLDS.toml
运行回归基准测试:
```bash
cargo bench -p tokenfold-core
```
或检查捆绑的小型JSON样本:
```bash
cargo run --release --locked -p tokenfold-cli -- \
inspect examples/api_response.json --format json
```
样本报告382 → 206个估计令牌,**46.1%减少**。不规则或紧凑的输入可能会节省很少;Tokenfold会诚实地报告结果。
## 贡献
欢迎提出问题和拉取请求。在打开拉取请求之前运行核心检查:
```bash
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace --locked
python eval/run_fidelity.py --gate --profile smoke-first-consumer
cd packages/tokenfold && npm ci && npm test
```
## 许可证
[Apache-2.0](LICENSE)
## 回收您的上下文窗口
从一个有代表性的有效载荷开始。安装`tokenfold`,检查接收结果,并查看您的应用程序今天可以停止发送多少令牌。
```bash
pip install tokenfold
```
如果tokenfold在您的堆栈中占有一席之地,[GitHub](https://github.com/snchimata/tokenfold)上的⭐️有助于下一个团队找到它。
连接信息
猜你喜欢
暂无推荐服务器