1use clap::{Parser, ValueEnum};
2
3#[derive(Parser, Debug)]
4#[command(author, version, about, long_about = None)]
5pub struct Args {
6 #[arg(
8 short,
9 long,
10 default_value = "Generate a Git commit message based on the following diff:"
11 )]
12 pub prompt: String,
13
14 #[arg(short, long, value_enum, default_value_t = Model::GPT4)]
16 pub model: Model,
17
18 #[arg(short, long, default_value_t = 512)]
20 pub tokens: u16,
21}
22
23#[derive(ValueEnum, Clone, Debug)]
24pub enum Model {
25 GPT4,
26 GPT35,
27}
28
29impl Model {
30 pub fn model_str(&self) -> String {
31 match self {
32 Model::GPT4 => String::from("gpt-4"),
33 Model::GPT35 => String::from("gpt-3.5-turbo"),
34 }
35 }
36
37 pub fn max_tokens(&self) -> usize {
38 match self {
39 Model::GPT4 => 8192,
40 Model::GPT35 => 4096
41 }
42 }
43}