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")]
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}