use std::env;
use std::fs;
use std::process::ExitCode;
use rullama::gguf::GgufReader;
fn main() -> ExitCode {
let mut args = env::args().skip(1);
let path = match args.next() {
Some(p) => p,
None => {
eprintln!("usage: decode_ids <gguf> <id1> <id2> ...");
return ExitCode::from(2);
}
};
let bytes = fs::read(&path).expect("read");
let r = GgufReader::new(bytes).expect("parse");
let tokens = r
.get("tokenizer.ggml.tokens")
.expect("vocab")
.as_string_array()
.expect("strs");
for arg in args {
let id: usize = arg.parse().expect("id");
if id < tokens.len() {
println!("{:>7} {:?}", id, tokens[id]);
} else {
println!("{id} OUT OF RANGE");
}
}
ExitCode::SUCCESS
}