use clap::{Parser, ValueEnum};
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
pub struct Args {
#[arg(
short,
long,
default_value = "Generate a Git commit message based on the following diff:"
)]
pub prompt: String,
#[arg(short, long, value_enum, default_value_t = Model::GPT4)]
pub model: Model,
#[arg(short, long, default_value_t = 512)]
pub tokens: u16,
}
#[derive(ValueEnum, Clone, Debug)]
pub enum Model {
GPT4,
GPT35,
}
impl Model {
pub fn model_str(&self) -> String {
match self {
Model::GPT4 => String::from("gpt-4"),
Model::GPT35 => String::from("gpt-3.5-turbo"),
}
}
pub fn max_tokens(&self) -> usize {
match self {
Model::GPT4 => 8192,
Model::GPT35 => 4096
}
}
}