1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
use serde::Serialize;

pub mod chat;
pub mod classify;
pub mod detect_language;
pub mod detokenize;
pub mod embed;
pub mod generate;
pub mod rerank;
pub mod summarize;
pub mod tokenize;

#[derive(strum_macros::Display, Serialize, Debug)]
pub enum Truncate {
    #[strum(serialize = "NONE")]
    #[serde(rename = "NONE")]
    None,
    #[strum(serialize = "START")]
    #[serde(rename = "START")]
    Start,
    #[strum(serialize = "END")]
    #[serde(rename = "END")]
    End,
}

#[derive(strum_macros::Display, Serialize, Debug)]
pub enum EmbedModel {
    // Lighter and faster english model with an embedding vector of size 1024
    #[strum(serialize = "embed-english-light-v2.0")]
    #[serde(rename = "embed-english-light-v2.0")]
    EnglishLight,
    // Default model with an embedding vector of size 4096
    #[strum(serialize = "embed-english-v2.0")]
    #[serde(rename = "embed-english-v2.0")]
    English,
    // Multi-language model with an embedding vector of size 768
    #[strum(serialize = "embed-multilingual-v2.0")]
    #[serde(rename = "embed-multilingual-v2.0")]
    Multilingual,
    // Custom model
    Custom(String),
}

#[derive(strum_macros::Display, Serialize, Debug)]
pub enum GenerateModel {
    #[strum(serialize = "command")]
    #[serde(rename = "command")]
    Command,
    #[strum(serialize = "command-light")]
    #[serde(rename = "command-light")]
    CommandLight,
    #[strum(serialize = "command-nightly")]
    #[serde(rename = "command-nightly")]
    CommandNightly,
    #[strum(serialize = "command-light-nightly")]
    #[serde(rename = "command-light-nightly")]
    CommandLightNightly,
    Custom(String),
}