llama-rust 0.1.0

LLM inference in Rust
Documentation
use anyhow::Result;
use clap::Parser;
use std::path::PathBuf;

///! How To Use
/// cargo build -- -m Qwen_Qwen2-0.5B-Instruct-GGUF_qwen2-0_5b-instruct-q2_k.gguf "hello, my name is"

#[derive(Parser)]
#[command(
    name = "llama-rust",
    about = "A simple CLI to run inference with a model",
    version = "0.1.0"
)]
pub struct Cli {
    #[arg(
        short = 'm',
        long = "model",
        value_name = "MODEL_PATH",
        help = "Path to the GGUF model file"
    )]
    pub model_path: PathBuf,

    #[arg(value_name = "PROMPT", help = "Input prompt for the model")]
    pub prompt: String,
}

pub fn run_inference(model_path: &PathBuf, prompt: &str) -> Result<String> {
    println!(
        "Loading model from: {}\nProcessing prompt: {}",
        model_path.display(),
        prompt
    );

    let simulated_output = format!(
        "Hello, my name is Grok! (Simulated response for '{}')",
        prompt
    );

    Ok(simulated_output)
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let cli = Cli::parse();

    if !cli.model_path.exists() {
        eprintln!(
            "Error: Model file '{}' does not exist",
            cli.model_path.display()
        );
        std::process::exit(1);
    }

    let output = run_inference(&cli.model_path, &cli.prompt)?;
    println!("Model output: {}", output);

    Ok(())
}