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