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")]
9#[derive(gproxy_protocol_macros::WireBuilder)]
10#[non_exhaustive]
11pub struct ListModelsRequest {
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub page_size: Option<i32>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub page_token: Option<String>,
16    #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
17    pub extra: ExtraFields,
18}
19
20#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
21#[serde(rename_all = "camelCase")]
22#[derive(gproxy_protocol_macros::WireBuilder)]
23#[non_exhaustive]
24pub struct ListModelsResponse {
25    #[serde(default, skip_serializing_if = "Vec::is_empty")]
26    pub models: Vec<Model>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub next_page_token: Option<String>,
29    #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
30    pub extra: ExtraFields,
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
34#[serde(rename_all = "camelCase")]
35#[derive(gproxy_protocol_macros::WireBuilder)]
36#[non_exhaustive]
37pub struct GetModelRequest {
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub name: Option<String>,
40    #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
41    pub extra: ExtraFields,
42}
43
44#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
45#[serde(rename_all = "camelCase")]
46#[derive(gproxy_protocol_macros::WireBuilder)]
47#[non_exhaustive]
48pub struct Model {
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub name: Option<String>,
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub base_model_id: Option<String>,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub version: Option<String>,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub display_name: Option<String>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub description: Option<String>,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub input_token_limit: Option<i32>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub output_token_limit: Option<i32>,
63    #[serde(default, skip_serializing_if = "Vec::is_empty")]
64    pub supported_generation_methods: Vec<SupportedGenerationMethod>,
65    #[serde(default, skip_serializing_if = "Vec::is_empty")]
66    pub supported_actions: Vec<SupportedGenerationMethod>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub thinking: Option<bool>,
69    #[serde(skip_serializing_if = "Option::is_none")]
70    pub temperature: Option<f64>,
71    #[serde(skip_serializing_if = "Option::is_none")]
72    pub max_temperature: Option<f64>,
73    #[serde(skip_serializing_if = "Option::is_none")]
74    pub top_p: Option<f64>,
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub top_k: Option<i32>,
77    #[serde(default, skip_serializing_if = "BTreeMap::is_empty", flatten)]
78    pub extra: ExtraFields,
79}