File size: 4,902 Bytes
2887ce2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
use super::model::Model;

macro_rules! def_pub_const {
    ($name:ident, $value:expr) => {
        pub const $name: &'static str = $value;
    };
}
def_pub_const!(ERR_UNSUPPORTED_GIF, "不支持动态 GIF");
def_pub_const!(ERR_UNSUPPORTED_IMAGE_FORMAT, "不支持的图片格式,仅支持 PNG、JPEG、WEBP 和非动态 GIF");
def_pub_const!(ERR_NODATA, "No data");

const MODEL_OBJECT: &str = "model";
const CREATED: &i64 = &1706659200;

def_pub_const!(ANTHROPIC, "anthropic");
def_pub_const!(CURSOR, "cursor");
def_pub_const!(GOOGLE, "google");
def_pub_const!(OPENAI, "openai");

def_pub_const!(CLAUDE_3_5_SONNET, "claude-3.5-sonnet");
def_pub_const!(GPT_4, "gpt-4");
def_pub_const!(GPT_4O, "gpt-4o");
def_pub_const!(CLAUDE_3_OPUS, "claude-3-opus");
def_pub_const!(CURSOR_FAST, "cursor-fast");
def_pub_const!(CURSOR_SMALL, "cursor-small");
def_pub_const!(GPT_3_5_TURBO, "gpt-3.5-turbo");
def_pub_const!(GPT_4_TURBO_2024_04_09, "gpt-4-turbo-2024-04-09");
def_pub_const!(GPT_4O_128K, "gpt-4o-128k");
def_pub_const!(GEMINI_1_5_FLASH_500K, "gemini-1.5-flash-500k");
def_pub_const!(CLAUDE_3_HAIKU_200K, "claude-3-haiku-200k");
def_pub_const!(CLAUDE_3_5_SONNET_200K, "claude-3-5-sonnet-200k");
def_pub_const!(CLAUDE_3_5_SONNET_20241022, "claude-3-5-sonnet-20241022");
def_pub_const!(GPT_4O_MINI, "gpt-4o-mini");
def_pub_const!(O1_MINI, "o1-mini");
def_pub_const!(O1_PREVIEW, "o1-preview");
def_pub_const!(O1, "o1");
def_pub_const!(CLAUDE_3_5_HAIKU, "claude-3.5-haiku");
def_pub_const!(GEMINI_EXP_1206, "gemini-exp-1206");
def_pub_const!(
    GEMINI_2_0_FLASH_THINKING_EXP,
    "gemini-2.0-flash-thinking-exp"
);
def_pub_const!(GEMINI_2_0_FLASH_EXP, "gemini-2.0-flash-exp");

pub const AVAILABLE_MODELS: [Model; 21] = [
    Model {
        id: CLAUDE_3_5_SONNET,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: ANTHROPIC,
    },
    Model {
        id: GPT_4,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: GPT_4O,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: CLAUDE_3_OPUS,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: ANTHROPIC,
    },
    Model {
        id: CURSOR_FAST,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: CURSOR,
    },
    Model {
        id: CURSOR_SMALL,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: CURSOR,
    },
    Model {
        id: GPT_3_5_TURBO,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: GPT_4_TURBO_2024_04_09,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: GPT_4O_128K,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: GEMINI_1_5_FLASH_500K,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: GOOGLE,
    },
    Model {
        id: CLAUDE_3_HAIKU_200K,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: ANTHROPIC,
    },
    Model {
        id: CLAUDE_3_5_SONNET_200K,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: ANTHROPIC,
    },
    Model {
        id: CLAUDE_3_5_SONNET_20241022,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: ANTHROPIC,
    },
    Model {
        id: GPT_4O_MINI,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: O1_MINI,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: O1_PREVIEW,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: O1,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: OPENAI,
    },
    Model {
        id: CLAUDE_3_5_HAIKU,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: ANTHROPIC,
    },
    Model {
        id: GEMINI_EXP_1206,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: GOOGLE,
    },
    Model {
        id: GEMINI_2_0_FLASH_THINKING_EXP,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: GOOGLE,
    },
    Model {
        id: GEMINI_2_0_FLASH_EXP,
        created: CREATED,
        object: MODEL_OBJECT,
        owned_by: GOOGLE,
    },
];

pub const USAGE_CHECK_MODELS: [&str; 11] = [
    CLAUDE_3_5_SONNET_20241022,
    CLAUDE_3_5_SONNET,
    GEMINI_EXP_1206,
    GPT_4,
    GPT_4_TURBO_2024_04_09,
    GPT_4O,
    CLAUDE_3_5_HAIKU,
    GPT_4O_128K,
    GEMINI_1_5_FLASH_500K,
    CLAUDE_3_HAIKU_200K,
    CLAUDE_3_5_SONNET_200K,
];

pub const LONG_CONTEXT_MODELS: [&str; 4] = [
    GPT_4O_128K,
    GEMINI_1_5_FLASH_500K,
    CLAUDE_3_HAIKU_200K,
    CLAUDE_3_5_SONNET_200K,
];