use tokenfold_core::{CompressionInput, CompressionMode, CompressionPolicy, compress};
const PAYLOAD: &str = include_str!("../../../examples/openai_payload.json");
fn main() -> Result<(), Box<dyn std::error::Error>> {
let input = CompressionInput::openai_json(PAYLOAD.as_bytes().to_vec());
let policy = CompressionPolicy::builder()
.mode(CompressionMode::Balanced)
.build()?;
let out = compress(input, &policy)?;
let report = &out.report;
println!("status: {:?}", report.status);
println!(
"tokens: {} -> {} ({} saved, {:.1}%)",
report.original_tokens, report.compressed_tokens, report.saved_tokens, report.savings_pct,
);
println!(
"estimator: {} (exact: {})",
report.estimator.backend, report.estimator.is_exact,
);
println!("\ntransforms:");
for t in &report.transforms {
println!(
" - {:<24} {:<10?} (saved {} tokens)",
t.id, t.status, t.saved_tokens,
);
}
for w in &report.warnings {
println!(" warning: {}", w.message);
}
println!("\ncompressed payload ({} bytes):", out.bytes.len());
println!("{}", String::from_utf8_lossy(&out.bytes));
Ok(())
}