| 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!(DEEPSEEK, "deepseek"); | |
| 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"); | |
| def_pub_const!(DEEPSEEK_V3, "deepseek-v3"); | |
| def_pub_const!(DEEPSEEK_R1, "deepseek-r1"); | |
| // #[derive(Clone, PartialEq, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)] | |
| // pub enum ModelType { | |
| // Claude35Sonnet, | |
| // Gpt4, | |
| // Gpt4o, | |
| // Claude3Opus, | |
| // CursorFast, | |
| // CursorSmall, | |
| // Gpt35Turbo, | |
| // Gpt4Turbo202404, | |
| // Gpt4o128k, | |
| // Gemini15Flash500k, | |
| // Claude3Haiku200k, | |
| // Claude35Sonnet200k, | |
| // Claude35Sonnet20241022, | |
| // Gpt4oMini, | |
| // O1Mini, | |
| // O1Preview, | |
| // O1, | |
| // Claude35Haiku, | |
| // GeminiExp1206, | |
| // Gemini20FlashThinkingExp, | |
| // Gemini20FlashExp, | |
| // DeepseekV3, | |
| // DeepseekR1, | |
| // } | |
| macro_rules! create_model { | |
| ($($id:expr, $owner:expr),* $(,)?) => { | |
| pub const AVAILABLE_MODELS: [Model; count!($( ($id, $owner) )*)] = [ | |
| $( | |
| Model { | |
| id: $id, | |
| created: CREATED, | |
| object: MODEL_OBJECT, | |
| owned_by: $owner, | |
| }, | |
| )* | |
| ]; | |
| }; | |
| } | |
| macro_rules! count { | |
| () => (0); | |
| (($id:expr, $owner:expr) $( ($id2:expr, $owner2:expr) )*) => (1 + count!($( ($id2, $owner2) )*)); | |
| } | |
| // impl ModelType { | |
| // pub fn as_str_name(&self) -> &'static str { | |
| // match self { | |
| // ModelType::Claude35Sonnet => CLAUDE_3_5_SONNET, | |
| // ModelType::Gpt4 => GPT_4, | |
| // ModelType::Gpt4o => GPT_4O, | |
| // ModelType::Claude3Opus => CLAUDE_3_OPUS, | |
| // ModelType::CursorFast => CURSOR_FAST, | |
| // ModelType::CursorSmall => CURSOR_SMALL, | |
| // ModelType::Gpt35Turbo => GPT_3_5_TURBO, | |
| // ModelType::Gpt4Turbo202404 => GPT_4_TURBO_2024_04_09, | |
| // ModelType::Gpt4o128k => GPT_4O_128K, | |
| // ModelType::Gemini15Flash500k => GEMINI_1_5_FLASH_500K, | |
| // ModelType::Claude3Haiku200k => CLAUDE_3_HAIKU_200K, | |
| // ModelType::Claude35Sonnet200k => CLAUDE_3_5_SONNET_200K, | |
| // ModelType::Claude35Sonnet20241022 => CLAUDE_3_5_SONNET_20241022, | |
| // ModelType::Gpt4oMini => GPT_4O_MINI, | |
| // ModelType::O1Mini => O1_MINI, | |
| // ModelType::O1Preview => O1_PREVIEW, | |
| // ModelType::O1 => O1, | |
| // ModelType::Claude35Haiku => CLAUDE_3_5_HAIKU, | |
| // ModelType::GeminiExp1206 => GEMINI_EXP_1206, | |
| // ModelType::Gemini20FlashThinkingExp => GEMINI_2_0_FLASH_THINKING_EXP, | |
| // ModelType::Gemini20FlashExp => GEMINI_2_0_FLASH_EXP, | |
| // ModelType::DeepseekV3 => DEEPSEEK_V3, | |
| // ModelType::DeepseekR1 => DEEPSEEK_R1, | |
| // } | |
| // } | |
| // pub fn from_str_name(id :&str) -> Option<ModelType> { | |
| // match id { | |
| // CLAUDE_3_5_SONNET => Some(ModelType::Claude35Sonnet), | |
| // GPT_4 => Some(ModelType::Gpt4), | |
| // GPT_4O => Some(ModelType::Gpt4o), | |
| // CLAUDE_3_OPUS => Some(ModelType::Claude3Opus), | |
| // CURSOR_FAST => Some(ModelType::CursorFast), | |
| // CURSOR_SMALL => Some(ModelType::CursorSmall), | |
| // GPT_3_5_TURBO => Some(ModelType::Gpt35Turbo), | |
| // GPT_4_TURBO_2024_04_09 => Some(ModelType::Gpt4Turbo202404), | |
| // GPT_4O_128K => Some(ModelType::Gpt4o128k), | |
| // GEMINI_1_5_FLASH_500K => Some(ModelType::Gemini15Flash500k), | |
| // CLAUDE_3_HAIKU_200K => Some(ModelType::Claude3Haiku200k), | |
| // CLAUDE_3_5_SONNET_200K => Some(ModelType::Claude35Sonnet200k), | |
| // CLAUDE_3_5_SONNET_20241022 => Some(ModelType::Claude35Sonnet20241022), | |
| // GPT_4O_MINI => Some(ModelType::Gpt4oMini), | |
| // O1_MINI => Some(ModelType::O1Mini), | |
| // O1_PREVIEW => Some(ModelType::O1Preview), | |
| // O1 => Some(ModelType::O1), | |
| // CLAUDE_3_5_HAIKU => Some(ModelType::Claude35Haiku), | |
| // GEMINI_EXP_1206 => Some(ModelType::GeminiExp1206), | |
| // GEMINI_2_0_FLASH_THINKING_EXP => Some(ModelType::Gemini20FlashThinkingExp), | |
| // GEMINI_2_0_FLASH_EXP => Some(ModelType::Gemini20FlashExp), | |
| // DEEPSEEK_V3 => Some(ModelType::DeepseekV3), | |
| // DEEPSEEK_R1 => Some(ModelType::DeepseekR1), | |
| // _ => None, | |
| // } | |
| // } | |
| // } | |
| create_model!( | |
| CLAUDE_3_5_SONNET, ANTHROPIC, | |
| GPT_4, OPENAI, | |
| GPT_4O, OPENAI, | |
| CLAUDE_3_OPUS, ANTHROPIC, | |
| CURSOR_FAST, CURSOR, | |
| CURSOR_SMALL, CURSOR, | |
| GPT_3_5_TURBO, OPENAI, | |
| GPT_4_TURBO_2024_04_09, OPENAI, | |
| GPT_4O_128K, OPENAI, | |
| GEMINI_1_5_FLASH_500K, GOOGLE, | |
| CLAUDE_3_HAIKU_200K, ANTHROPIC, | |
| CLAUDE_3_5_SONNET_200K, ANTHROPIC, | |
| CLAUDE_3_5_SONNET_20241022, ANTHROPIC, | |
| GPT_4O_MINI, OPENAI, | |
| O1_MINI, OPENAI, | |
| O1_PREVIEW, OPENAI, | |
| O1, OPENAI, | |
| CLAUDE_3_5_HAIKU, ANTHROPIC, | |
| GEMINI_EXP_1206, GOOGLE, | |
| GEMINI_2_0_FLASH_THINKING_EXP, GOOGLE, | |
| GEMINI_2_0_FLASH_EXP, GOOGLE, | |
| DEEPSEEK_V3, DEEPSEEK, | |
| DEEPSEEK_R1, DEEPSEEK, | |
| ); | |
| 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, | |
| ]; | |
| // include!("constant/models.rs"); | |