Spaces:
Sleeping
Sleeping
| use serde::{Deserialize, Serialize}; | |
| pub enum MessageContent { | |
| Text(String), | |
| Vision(Vec<VisionMessageContent>), | |
| } | |
| pub struct VisionMessageContent { | |
| pub content_type: String, | |
| pub text: Option<String>, | |
| pub image_url: Option<ImageUrl>, | |
| } | |
| pub struct ImageUrl { | |
| pub url: String, | |
| pub detail: Option<String>, | |
| } | |
| pub struct Message { | |
| pub role: Role, | |
| pub content: MessageContent, | |
| } | |
| pub enum Role { | |
| System, | |
| User, | |
| Assistant, | |
| } | |
| pub struct ChatResponse { | |
| pub id: String, | |
| pub object: String, | |
| pub created: i64, | |
| pub model: Option<String>, | |
| pub choices: Vec<Choice>, | |
| pub usage: Option<Usage>, | |
| } | |
| pub struct Choice { | |
| pub index: i32, | |
| pub message: Option<Message>, | |
| pub delta: Option<Delta>, | |
| pub finish_reason: Option<String>, | |
| } | |
| pub struct Delta { | |
| pub role: Option<Role>, | |
| pub content: Option<String>, | |
| } | |
| pub struct Usage { | |
| pub prompt_tokens: u32, | |
| pub completion_tokens: u32, | |
| pub total_tokens: u32, | |
| } | |
| // 模型定义 | |
| pub struct Model { | |
| pub id: &'static str, | |
| pub created: &'static i64, | |
| pub object: &'static str, | |
| pub owned_by: &'static str, | |
| } | |
| use crate::app::model::{AppConfig, UsageCheck}; | |
| use super::constant::USAGE_CHECK_MODELS; | |
| impl Model { | |
| pub fn is_usage_check(&self) -> bool { | |
| match AppConfig::get_usage_check() { | |
| UsageCheck::None => false, | |
| UsageCheck::Default => USAGE_CHECK_MODELS.contains(&self.id), | |
| UsageCheck::All => true, | |
| UsageCheck::Custom(models) => models.contains(&self.id), | |
| } | |
| } | |
| } | |
| pub struct ModelsResponse { | |
| pub object: &'static str, | |
| pub data: &'static [Model], | |
| } | |