use serde::{Deserialize, Serialize}; use crate::dto::api; #[derive(Debug, Serialize, Deserialize)] pub struct OllamaModels { pub models: Vec, } #[derive(Debug, Serialize, Deserialize)] pub struct OllamaModel { pub name: String, pub details: Option, pub size: Option, pub digest: Option, pub modified_at: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct OllamaModelDetails { pub family: Option, pub parameter_size: Option, pub quantization_level: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct OllamaOptions { pub temperature: Option, pub top_p: Option, pub top_k: Option, pub repeat_penalty: Option, pub seed: Option, pub num_ctx: Option, pub num_predict: Option, } #[derive(Debug, Serialize)] pub struct OllamaGenerateRequest<'a> { pub model: &'a str, pub prompt: &'a str, pub stream: bool, pub options: OllamaOptions, } #[derive(Debug, Serialize, Deserialize)] pub struct OllamaGenerateResponse { pub model: String, pub created_at: Option, pub response: String, pub done: bool, #[serde(default)] pub context: Option>, pub total_duration: Option, pub load_duration: Option, pub prompt_eval_count: Option, pub eval_count: Option, } #[derive(Debug, Serialize)] pub struct OllamaChatRequest<'a> { pub model: &'a str, pub messages: &'a [api::Message], pub stream: bool, pub options: OllamaOptions, } #[derive(Debug, Deserialize)] pub struct OllamaChatResponse { pub model: String, pub message: api::Message, pub done: bool, pub prompt_eval_count: Option, pub eval_count: Option, }