gproxy_protocol/protocol/gemini/
models.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::common::{ExtraFields, SupportedGenerationMethod};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8#[serde(rename_all = "camelCase")]
9pub struct ListModelsRequest {
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub page_size: Option<i32>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub page_token: Option<String>,
14 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
15 pub extra: ExtraFields,
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
19#[serde(rename_all = "camelCase")]
20pub struct ListModelsResponse {
21 #[serde(default, skip_serializing_if = "Vec::is_empty")]
22 pub models: Vec<Model>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub next_page_token: Option<String>,
25 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
26 pub extra: ExtraFields,
27}
28
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
30#[serde(rename_all = "camelCase")]
31pub struct GetModelRequest {
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub name: Option<String>,
34 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
35 pub extra: ExtraFields,
36}
37
38#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
39#[serde(rename_all = "camelCase")]
40pub struct Model {
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub name: Option<String>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub base_model_id: Option<String>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub version: Option<String>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub display_name: Option<String>,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub description: Option<String>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub input_token_limit: Option<i32>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub output_token_limit: Option<i32>,
55 #[serde(default, skip_serializing_if = "Vec::is_empty")]
56 pub supported_generation_methods: Vec<SupportedGenerationMethod>,
57 #[serde(default, skip_serializing_if = "Vec::is_empty")]
58 pub supported_actions: Vec<SupportedGenerationMethod>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub thinking: Option<bool>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub temperature: Option<f64>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub max_temperature: Option<f64>,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub top_p: Option<f64>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub top_k: Option<i32>,
69 #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
70 pub extra: ExtraFields,
71}