gproxy_protocol/wire/gemini/live/
generation.rs1use super::setup::{AudioTranscriptionConfig, VoiceConsentSignature};
2use crate::Rest;
3pub use crate::gemini::audio::TranslationConfig;
4use crate::gemini::{content::*, generation::*};
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
10#[serde(rename_all = "camelCase")]
11#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
12#[derive(gproxy_protocol_macros::DeclaredFields)]
13pub struct LiveGenerationConfig {
14 #[serde(skip_serializing_if = "Option::is_none")]
15 #[serde(alias = "stop_sequences")]
16 pub stop_sequences: Option<Vec<String>>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 #[serde(alias = "response_mime_type")]
19 pub response_mime_type: Option<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 #[serde(alias = "response_schema")]
22 pub response_schema: Option<Schema>,
23 #[serde(
24 rename = "_responseJsonSchema",
25 skip_serializing_if = "Option::is_none"
26 )]
27 pub response_json_schema_internal: Option<serde_json::Value>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 #[serde(alias = "response_json_schema")]
30 pub response_json_schema: Option<serde_json::Value>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 #[serde(alias = "response_modalities")]
33 pub response_modalities: Option<Vec<Modality>>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 #[serde(alias = "candidate_count")]
36 pub candidate_count: Option<i64>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 #[serde(alias = "max_output_tokens")]
39 pub max_output_tokens: Option<i64>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub temperature: Option<f64>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 #[serde(alias = "top_p")]
44 pub top_p: Option<f64>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 #[serde(alias = "top_k")]
47 pub top_k: Option<serde_json::Number>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub seed: Option<i64>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 #[serde(alias = "presence_penalty")]
52 pub presence_penalty: Option<f64>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 #[serde(alias = "frequency_penalty")]
55 pub frequency_penalty: Option<f64>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 #[serde(alias = "response_logprobs")]
58 pub response_logprobs: Option<bool>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub logprobs: Option<i64>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 #[serde(alias = "enable_enhanced_civic_answers")]
63 pub enable_enhanced_civic_answers: Option<bool>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 #[serde(alias = "speech_config")]
66 pub speech_config: Option<LiveSpeechConfig>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 #[serde(alias = "thinking_config")]
69 pub thinking_config: Option<ThinkingConfig>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 #[serde(alias = "image_config")]
72 pub image_config: Option<ImageConfig>,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 #[serde(alias = "media_resolution")]
75 pub media_resolution: Option<GenerationMediaResolution>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 #[serde(alias = "response_format")]
78 pub response_format: Option<ResponseFormatConfig>,
79 #[serde(
80 alias = "enable_affective_dialog",
81 default,
82 skip_serializing_if = "Option::is_none"
83 )]
84 pub enable_affective_dialog: Option<bool>,
85 #[serde(
86 alias = "translation_config",
87 default,
88 skip_serializing_if = "Option::is_none"
89 )]
90 pub translation_config: Option<TranslationConfig>,
91 #[serde(
92 alias = "audio_transcription_config",
93 default,
94 skip_serializing_if = "Option::is_none"
95 )]
96 pub audio_transcription_config: Option<AudioTranscriptionConfig>,
97 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
98 pub rest: Rest,
99}
100
101#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
102#[serde(rename_all = "camelCase")]
103#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
104#[derive(gproxy_protocol_macros::DeclaredFields)]
105pub struct LiveSpeechConfig {
106 #[serde(alias = "voice_config")]
107 #[serde(default, skip_serializing_if = "Option::is_none")]
108 pub voice_config: Option<LiveVoiceConfig>,
109 #[serde(alias = "multi_speaker_voice_config")]
110 #[serde(default, skip_serializing_if = "Option::is_none")]
111 pub multi_speaker_voice_config: Option<LiveMultiSpeakerVoiceConfig>,
112 #[serde(alias = "language_code")]
113 #[serde(default, skip_serializing_if = "Option::is_none")]
114 pub language_code: Option<String>,
115 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
116 pub rest: Rest,
117}
118
119#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
120#[serde(rename_all = "camelCase")]
121#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
122#[derive(gproxy_protocol_macros::DeclaredFields)]
123pub struct LiveVoiceConfig {
124 #[serde(skip_serializing_if = "Option::is_none")]
125 pub voice: Option<String>,
126 #[serde(alias = "prebuilt_voice_config")]
127 #[serde(default, skip_serializing_if = "Option::is_none")]
128 pub prebuilt_voice_config: Option<LivePrebuiltVoiceConfig>,
129 #[serde(alias = "replicated_voice_config")]
130 #[serde(default, skip_serializing_if = "Option::is_none")]
131 pub replicated_voice_config: Option<ReplicatedVoiceConfig>,
132 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
133 pub rest: Rest,
134}
135
136#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
137#[serde(rename_all = "camelCase")]
138#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
139#[derive(gproxy_protocol_macros::DeclaredFields)]
140pub struct LivePrebuiltVoiceConfig {
141 #[serde(alias = "voice_name")]
142 #[serde(default, skip_serializing_if = "Option::is_none")]
143 pub voice_name: Option<String>,
144 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
145 pub rest: Rest,
146}
147
148#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
149#[serde(rename_all = "camelCase")]
150#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
151#[derive(gproxy_protocol_macros::DeclaredFields)]
152pub struct LiveMultiSpeakerVoiceConfig {
153 #[serde(alias = "speaker_voice_configs")]
154 #[serde(default, skip_serializing_if = "Option::is_none")]
155 pub speaker_voice_configs: Option<Vec<LiveSpeakerVoiceConfig>>,
156 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
157 pub rest: Rest,
158}
159
160#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
161#[serde(rename_all = "camelCase")]
162#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
163#[derive(gproxy_protocol_macros::DeclaredFields)]
164pub struct LiveSpeakerVoiceConfig {
165 #[serde(default, skip_serializing_if = "Option::is_none")]
166 pub speaker: Option<String>,
167 #[serde(alias = "voice_config")]
168 #[serde(default, skip_serializing_if = "Option::is_none")]
169 pub voice_config: Option<LiveVoiceConfig>,
170 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
171 pub rest: Rest,
172}
173
174#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
175#[serde(rename_all = "camelCase")]
176#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
177#[derive(gproxy_protocol_macros::DeclaredFields)]
178pub struct ReplicatedVoiceConfig {
179 #[serde(alias = "mime_type")]
180 #[serde(default, skip_serializing_if = "Option::is_none")]
181 pub mime_type: Option<String>,
182 #[serde(alias = "voice_sample_audio")]
183 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub voice_sample_audio: Option<String>,
185 #[serde(alias = "consent_audio")]
186 #[serde(default, skip_serializing_if = "Option::is_none")]
187 pub consent_audio: Option<String>,
188 #[serde(alias = "voice_consent_signature")]
189 #[serde(default, skip_serializing_if = "Option::is_none")]
190 pub voice_consent_signature: Option<VoiceConsentSignature>,
191 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
192 pub rest: Rest,
193}