use tokenfold_core::{CompressionInput, CompressionMode, CompressionPolicy, compress};
const PAYLOAD: &str = include_str!("../../../examples/openai_payload.json");
const API_RESPONSE: &str = include_str!("../../../examples/api_response.json");
fn main() -> Result<(), Box<dyn std::error::Error>> {
compress_openai_body()?;
println!("\n{}\n", "-".repeat(72));
compress_json_data()?;
Ok(())
}
fn compress_openai_body() -> 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!("== OpenAI request body ==");
print_report(report);
Ok(())
}
fn compress_json_data() -> Result<(), Box<dyn std::error::Error>> {
let input = CompressionInput::json(API_RESPONSE.as_bytes().to_vec());
let policy = CompressionPolicy::builder()
.mode(CompressionMode::Balanced)
.build()?;
let out = compress(input, &policy)?;
println!("== Generic JSON data ==");
print_report(&out.report);
println!("\ncompressed payload ({} bytes):", out.bytes.len());
println!("{}", String::from_utf8_lossy(&out.bytes));
Ok(())
}
fn print_report(report: &tokenfold_core::report::CompressionReport) {
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!("transforms:");
for t in &report.transforms {
println!(
" - {:<24} {:<10?} (saved {} tokens)",
t.id, t.status, t.saved_tokens,
);
}
}