Skip to main content

gproxy_protocol/protocol/gemini/
models.rs

1use 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}