use serde::{Deserialize, Serialize};
use crate::prelude::*;
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct Model {
pub id: String,
pub created: i64,
pub object: String,
pub owned_by: String,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct LanguageModel {
pub id: String,
pub fingerprint: String,
pub created: i64,
pub object: String,
pub owned_by: String,
pub version: String,
pub input_modalities: Vec<String>,
pub output_modalities: Vec<String>,
pub prompt_text_token_price: i64,
pub cached_prompt_text_token_price: i64,
pub prompt_image_token_price: i64,
pub completion_text_token_price: i64,
pub search_price: i64,
pub aliases: Vec<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct EmbeddingModel {
pub id: String,
pub fingerprint: String,
pub created: i64,
pub object: String,
pub owned_by: String,
pub version: String,
pub input_modalities: Vec<String>,
#[serde(default)]
pub output_modalities: Vec<String>,
pub prompt_text_token_price: i64,
pub prompt_image_token_price: i64,
pub aliases: Vec<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ImageGenerationModel {
pub id: String,
pub fingerprint: String,
pub max_prompt_length: i64,
pub created: i64,
pub object: String,
pub owned_by: String,
pub version: String,
#[serde(default)]
pub input_modalities: Vec<String>,
#[serde(default)]
pub output_modalities: Vec<String>,
pub image_price: i64,
pub aliases: Vec<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ListModelsResponse {
pub data: Vec<Model>,
pub object: String,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ListLanguageModelsResponse {
pub models: Vec<LanguageModel>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ListEmbeddingModelsResponse {
pub models: Vec<EmbeddingModel>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ListImageGenerationModelsResponse {
pub models: Vec<ImageGenerationModel>,
}