Skip to main content

ollama_rest/models/
model.rs

1#[cfg(feature = "chrono")]
2use chrono::{DateTime, Local};
3use serde::{Deserialize, Serialize};
4use serde_json::Map;
5
6#[derive(Debug, Serialize, Deserialize)]
7pub struct ModelDetails {
8    pub parent_model: Option<String>,
9    pub format: String,
10    pub family: String,
11    pub families: Option<Vec<String>>,
12    pub parameter_size: String,
13    pub quantization_level: String,
14}
15
16#[derive(Debug, Serialize, Deserialize)]
17pub struct Model {
18    pub name: String,
19
20    #[cfg(feature = "chrono")]
21    pub modified_at: DateTime<Local>,
22    #[cfg(not(feature = "chrono"))]
23    pub modified_at: String,
24
25    pub size: usize,
26    pub digest: String,
27    pub details: ModelDetails,
28}
29
30#[derive(Debug, Serialize, Deserialize)]
31pub struct ModelListResponse {
32    pub models: Vec<Model>,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub struct ModelShowRequest {
37    pub name: String,
38    pub verbose: Option<bool>,
39}
40
41#[derive(Debug, Serialize, Deserialize)]
42pub struct ModelShowResponse {
43    pub modelfile: Option<String>,
44    pub parameters: Option<String>,
45    pub template: Option<String>,
46
47    pub details: Option<ModelDetails>,
48
49    pub model_info: Option<Map<String, serde_json::Value>>,
50}
51
52#[derive(Debug, Serialize, Deserialize)]
53pub struct ModelCopyRequest {
54    pub source: String,
55    pub destination: String,
56}
57
58#[derive(Debug, Serialize, Deserialize)]
59pub struct ModelDeletionRequest {
60    pub name: String,
61}
62
63#[derive(Debug, Serialize, Deserialize)]
64pub struct ModelSyncRequest {
65    pub name: String,
66    pub insecure: Option<bool>,
67    pub stream: Option<bool>,
68}
69
70#[derive(Debug, Serialize, Deserialize)]
71pub struct ModelDownloadStatus {
72    pub digest: String,
73    pub total: usize,
74    pub completed: Option<usize>,
75}
76
77#[derive(Debug, Serialize, Deserialize)]
78pub struct ModelPullStatus {
79    pub status: String,
80    #[serde(flatten)]
81    pub download_info: Option<ModelDownloadStatus>,
82}
83
84#[derive(Debug, Serialize, Deserialize)]
85pub struct ModelUploadStatus {
86    pub digest: String,
87    pub total: usize,
88}
89
90#[derive(Debug, Serialize, Deserialize)]
91pub struct ModelPushStatus {
92    pub status: String,
93    #[serde(flatten)]
94    pub upload_info: Option<ModelUploadStatus>,
95}
96
97#[derive(Debug, Serialize, Deserialize)]
98pub struct RunningModel {
99    pub name: String,
100    pub model: String,
101    pub size: usize,
102    pub digest: String,
103
104    pub details: ModelDetails,
105
106    #[cfg(feature = "chrono")]
107    pub expires_at: DateTime<Local>,
108    #[cfg(not(feature = "chrono"))]
109    pub expires_at: String,
110
111    pub size_vram: usize,
112}
113
114#[derive(Debug, Serialize, Deserialize)]
115pub struct RunningModelResponse {
116    pub models: Vec<RunningModel>,
117}