1pub use super::audio::{
2 AudioTranscriptionConfig, AudioTranscriptionMode, LanguageAuto, LanguageHints,
3 TranslationConfig,
4};
5use super::content::*;
6use crate::Rest;
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
11#[derive(gproxy_protocol_macros::DeclaredFields)]
12#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13pub enum ThinkingLevel {
14 #[serde(rename = "THINKING_LEVEL_UNSPECIFIED")]
15 Unspecified,
16 #[serde(rename = "MINIMAL")]
17 Minimal,
18 #[serde(rename = "LOW")]
19 Low,
20 #[serde(rename = "MEDIUM")]
21 Medium,
22 #[serde(rename = "HIGH")]
23 High,
24}
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
27#[derive(gproxy_protocol_macros::DeclaredFields)]
28#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
29pub enum GenerationMediaResolution {
30 #[serde(rename = "MEDIA_RESOLUTION_UNSPECIFIED")]
31 Unspecified,
32 #[serde(rename = "MEDIA_RESOLUTION_LOW")]
33 Low,
34 #[serde(rename = "MEDIA_RESOLUTION_MEDIUM")]
35 Medium,
36 #[serde(rename = "MEDIA_RESOLUTION_HIGH")]
37 High,
38}
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
41#[derive(gproxy_protocol_macros::DeclaredFields)]
42#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
43pub enum TextMimeType {
44 #[serde(rename = "MIME_TYPE_UNSPECIFIED")]
45 Unspecified,
46 #[serde(rename = "APPLICATION_JSON")]
47 ApplicationJson,
48 #[serde(rename = "TEXT_PLAIN")]
49 TextPlain,
50}
51#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
52#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
53#[derive(gproxy_protocol_macros::DeclaredFields)]
54#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
55pub enum AudioMimeType {
56 #[serde(rename = "MIME_TYPE_UNSPECIFIED")]
57 Unspecified,
58 #[serde(rename = "AUDIO_MP3")]
59 AudioMp3,
60 #[serde(rename = "AUDIO_OGG_OPUS")]
61 AudioOggOpus,
62 #[serde(rename = "AUDIO_L16")]
63 AudioL16,
64 #[serde(rename = "AUDIO_WAV")]
65 AudioWav,
66 #[serde(rename = "AUDIO_ALAW")]
67 AudioAlaw,
68 #[serde(rename = "AUDIO_MULAW")]
69 AudioMulaw,
70}
71#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
72#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
73#[derive(gproxy_protocol_macros::DeclaredFields)]
74#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
75pub enum Delivery {
76 #[serde(rename = "DELIVERY_UNSPECIFIED")]
77 Unspecified,
78 #[serde(rename = "INLINE")]
79 Inline,
80 #[serde(rename = "URI")]
81 Uri,
82}
83#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
84#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
85#[derive(gproxy_protocol_macros::DeclaredFields)]
86#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
87pub enum ImageMimeType {
88 #[serde(rename = "MIME_TYPE_UNSPECIFIED")]
89 Unspecified,
90 #[serde(rename = "IMAGE_JPEG")]
91 ImageJpeg,
92}
93#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
95#[derive(gproxy_protocol_macros::DeclaredFields)]
96#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
97pub enum AspectRatio {
98 #[serde(rename = "ASPECT_RATIO_UNSPECIFIED")]
99 Unspecified,
100 #[serde(rename = "ASPECT_RATIO_ONE_BY_ONE")]
101 OneByOne,
102 #[serde(rename = "ASPECT_RATIO_TWO_BY_THREE")]
103 TwoByThree,
104 #[serde(rename = "ASPECT_RATIO_THREE_BY_TWO")]
105 ThreeByTwo,
106 #[serde(rename = "ASPECT_RATIO_THREE_BY_FOUR")]
107 ThreeByFour,
108 #[serde(rename = "ASPECT_RATIO_FOUR_BY_THREE")]
109 FourByThree,
110 #[serde(rename = "ASPECT_RATIO_FOUR_BY_FIVE")]
111 FourByFive,
112 #[serde(rename = "ASPECT_RATIO_FIVE_BY_FOUR")]
113 FiveByFour,
114 #[serde(rename = "ASPECT_RATIO_NINE_BY_SIXTEEN")]
115 NineBySixteen,
116 #[serde(rename = "ASPECT_RATIO_SIXTEEN_BY_NINE")]
117 SixteenByNine,
118 #[serde(rename = "ASPECT_RATIO_TWENTY_ONE_BY_NINE")]
119 TwentyOneByNine,
120 #[serde(rename = "ASPECT_RATIO_ONE_BY_EIGHT")]
121 OneByEight,
122 #[serde(rename = "ASPECT_RATIO_EIGHT_BY_ONE")]
123 EightByOne,
124 #[serde(rename = "ASPECT_RATIO_ONE_BY_FOUR")]
125 OneByFour,
126 #[serde(rename = "ASPECT_RATIO_FOUR_BY_ONE")]
127 FourByOne,
128}
129#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
130#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
131#[derive(gproxy_protocol_macros::DeclaredFields)]
132#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
133pub enum ImageSize {
134 #[serde(rename = "IMAGE_SIZE_UNSPECIFIED")]
135 Unspecified,
136 #[serde(rename = "IMAGE_SIZE_FIVE_TWELVE")]
137 FiveTwelve,
138 #[serde(rename = "IMAGE_SIZE_ONE_K")]
139 OneK,
140 #[serde(rename = "IMAGE_SIZE_TWO_K")]
141 TwoK,
142 #[serde(rename = "IMAGE_SIZE_FOUR_K")]
143 FourK,
144}
145#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
146#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
147#[derive(gproxy_protocol_macros::DeclaredFields)]
148#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
149pub enum ServiceTier {
150 #[serde(rename = "unspecified")]
151 Unspecified,
152 #[serde(rename = "standard")]
153 Standard,
154 #[serde(rename = "flex")]
155 Flex,
156 #[serde(rename = "priority")]
157 Priority,
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)]
164#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
165pub struct SpeechConfig {
166 #[serde(skip_serializing_if = "Option::is_none")]
167 #[serde(alias = "voice_config")]
168 pub voice_config: Option<VoiceConfig>,
169 #[serde(skip_serializing_if = "Option::is_none")]
170 #[serde(alias = "multi_speaker_voice_config")]
171 pub multi_speaker_voice_config: Option<MultiSpeakerVoiceConfig>,
172 #[serde(skip_serializing_if = "Option::is_none")]
173 #[serde(alias = "language_code")]
174 pub language_code: Option<String>,
175 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
176 pub rest: Rest,
177}
178#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
179#[serde(rename_all = "camelCase")]
180#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
181#[derive(gproxy_protocol_macros::DeclaredFields)]
182#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
183pub struct VoiceConfig {
184 #[serde(alias = "prebuilt_voice_config")]
185 #[serde(skip_serializing_if = "Option::is_none")]
186 pub prebuilt_voice_config: Option<PrebuiltVoiceConfig>,
187 #[serde(skip_serializing_if = "Option::is_none")]
189 pub voice: Option<String>,
190 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
191 pub rest: Rest,
192}
193#[derive(
194 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
195)]
196#[serde(rename_all = "camelCase")]
197#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
198#[derive(gproxy_protocol_macros::DeclaredFields)]
199#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
200pub struct PrebuiltVoiceConfig {
201 #[serde(alias = "voice_name")]
202 #[serde(skip_serializing_if = "Option::is_none")]
203 pub voice_name: Option<String>,
204 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
205 pub rest: Rest,
206}
207#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
208#[serde(rename_all = "camelCase")]
209#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
210#[derive(gproxy_protocol_macros::DeclaredFields)]
211#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
212pub struct MultiSpeakerVoiceConfig {
213 #[serde(alias = "speaker_voice_configs")]
214 pub speaker_voice_configs: Vec<SpeakerVoiceConfig>,
215 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
216 pub rest: Rest,
217}
218#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
219#[serde(rename_all = "camelCase")]
220#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
221#[derive(gproxy_protocol_macros::DeclaredFields)]
222#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
223pub struct SpeakerVoiceConfig {
224 pub speaker: String,
225 #[serde(alias = "voice_config")]
226 pub voice_config: VoiceConfig,
227 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
228 pub rest: Rest,
229}
230#[derive(
231 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
232)]
233#[serde(rename_all = "camelCase")]
234#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
235#[derive(gproxy_protocol_macros::DeclaredFields)]
236#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
237pub struct ThinkingConfig {
238 #[serde(skip_serializing_if = "Option::is_none")]
239 #[serde(alias = "thinking_budget")]
240 pub thinking_budget: Option<i64>,
241 #[serde(skip_serializing_if = "Option::is_none")]
242 #[serde(alias = "thinking_level")]
243 pub thinking_level: Option<ThinkingLevel>,
244 #[serde(skip_serializing_if = "Option::is_none")]
245 #[serde(alias = "include_thoughts")]
246 pub include_thoughts: Option<bool>,
247 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
248 pub rest: Rest,
249}
250#[derive(
251 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
252)]
253#[serde(rename_all = "camelCase")]
254#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
255#[derive(gproxy_protocol_macros::DeclaredFields)]
256#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
257pub struct ImageConfig {
258 #[serde(skip_serializing_if = "Option::is_none")]
259 #[serde(alias = "aspect_ratio")]
260 pub aspect_ratio: Option<String>,
261 #[serde(skip_serializing_if = "Option::is_none")]
262 #[serde(alias = "image_size")]
263 pub image_size: Option<String>,
264 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
265 pub rest: Rest,
266}
267#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
268#[serde(rename_all = "camelCase")]
269#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
270#[derive(gproxy_protocol_macros::DeclaredFields)]
271#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
272pub struct ResponseFormatConfig {
273 #[serde(skip_serializing_if = "Option::is_none")]
274 pub text: Option<TextResponseFormat>,
275 #[serde(skip_serializing_if = "Option::is_none")]
276 pub audio: Option<AudioResponseFormat>,
277 #[serde(skip_serializing_if = "Option::is_none")]
278 pub image: Option<ImageResponseFormat>,
279 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
280 pub rest: Rest,
281}
282#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
283#[serde(rename_all = "camelCase")]
284#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
285#[derive(gproxy_protocol_macros::DeclaredFields)]
286#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
287pub struct TextResponseFormat {
288 #[serde(skip_serializing_if = "Option::is_none")]
289 #[serde(alias = "mime_type")]
290 pub mime_type: Option<TextMimeType>,
291 #[serde(skip_serializing_if = "Option::is_none")]
292 pub schema: Option<serde_json::Value>,
293 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
294 pub rest: Rest,
295}
296#[derive(
297 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
298)]
299#[serde(rename_all = "camelCase")]
300#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
301#[derive(gproxy_protocol_macros::DeclaredFields)]
302#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
303pub struct AudioResponseFormat {
304 #[serde(skip_serializing_if = "Option::is_none")]
305 #[serde(alias = "mime_type")]
306 pub mime_type: Option<AudioMimeType>,
307 #[serde(skip_serializing_if = "Option::is_none")]
308 pub delivery: Option<Delivery>,
309 #[serde(skip_serializing_if = "Option::is_none")]
310 #[serde(alias = "sample_rate")]
311 pub sample_rate: Option<i64>,
312 #[serde(skip_serializing_if = "Option::is_none")]
313 #[serde(alias = "bit_rate")]
314 pub bit_rate: Option<i64>,
315 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
316 pub rest: Rest,
317}
318#[derive(
319 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
320)]
321#[serde(rename_all = "camelCase")]
322#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
323#[derive(gproxy_protocol_macros::DeclaredFields)]
324#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
325pub struct ImageResponseFormat {
326 #[serde(skip_serializing_if = "Option::is_none")]
327 #[serde(alias = "mime_type")]
328 pub mime_type: Option<ImageMimeType>,
329 #[serde(skip_serializing_if = "Option::is_none")]
330 pub delivery: Option<Delivery>,
331 #[serde(skip_serializing_if = "Option::is_none")]
332 #[serde(alias = "aspect_ratio")]
333 pub aspect_ratio: Option<AspectRatio>,
334 #[serde(skip_serializing_if = "Option::is_none")]
335 #[serde(alias = "image_size")]
336 pub image_size: Option<ImageSize>,
337 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
338 pub rest: Rest,
339}
340
341#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
342#[serde(rename_all = "camelCase")]
343#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
344#[derive(gproxy_protocol_macros::DeclaredFields)]
348#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
349pub struct EmbeddedGenerateContentRequest {
350 pub model: String,
352 pub contents: Vec<Content>,
353 #[serde(skip_serializing_if = "Option::is_none")]
354 pub tools: Option<Vec<Tool>>,
355 #[serde(skip_serializing_if = "Option::is_none")]
356 #[serde(alias = "tool_config")]
357 pub tool_config: Option<ToolConfig>,
358 #[serde(skip_serializing_if = "Option::is_none")]
359 #[serde(alias = "safety_settings")]
360 pub safety_settings: Option<Vec<SafetySetting>>,
361 #[serde(skip_serializing_if = "Option::is_none")]
362 pub labels: Option<std::collections::BTreeMap<String, String>>,
363 #[serde(skip_serializing_if = "Option::is_none")]
364 #[serde(alias = "system_instruction")]
365 pub system_instruction: Option<Content>,
366 #[serde(skip_serializing_if = "Option::is_none")]
367 #[serde(alias = "generation_config")]
368 pub generation_config: Option<GenerationConfig>,
369 #[serde(skip_serializing_if = "Option::is_none")]
370 #[serde(alias = "cached_content")]
371 pub cached_content: Option<String>,
372 #[serde(skip_serializing_if = "Option::is_none")]
373 #[serde(alias = "service_tier")]
374 pub service_tier: Option<ServiceTier>,
375 #[serde(skip_serializing_if = "Option::is_none")]
376 pub store: Option<bool>,
377 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
378 pub rest: Rest,
379}
380
381#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
382#[serde(rename_all = "camelCase")]
383#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
384#[derive(gproxy_protocol_macros::DeclaredFields)]
385#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
386pub struct GenerationConfig {
387 #[serde(skip_serializing_if = "Option::is_none")]
388 #[serde(alias = "stop_sequences")]
389 pub stop_sequences: Option<Vec<String>>,
390 #[serde(skip_serializing_if = "Option::is_none")]
391 #[serde(alias = "response_mime_type")]
392 pub response_mime_type: Option<String>,
393 #[serde(skip_serializing_if = "Option::is_none")]
394 #[serde(alias = "response_schema")]
395 pub response_schema: Option<Schema>,
396 #[serde(
397 rename = "_responseJsonSchema",
398 skip_serializing_if = "Option::is_none"
399 )]
400 pub response_json_schema_internal: Option<serde_json::Value>,
401 #[serde(skip_serializing_if = "Option::is_none")]
402 #[serde(alias = "response_json_schema")]
403 pub response_json_schema: Option<serde_json::Value>,
404 #[serde(skip_serializing_if = "Option::is_none")]
405 #[serde(alias = "response_modalities")]
406 pub response_modalities: Option<Vec<Modality>>,
407 #[serde(skip_serializing_if = "Option::is_none")]
408 #[serde(alias = "candidate_count")]
409 pub candidate_count: Option<i64>,
410 #[serde(skip_serializing_if = "Option::is_none")]
411 #[serde(alias = "max_output_tokens")]
412 pub max_output_tokens: Option<i64>,
413 #[serde(skip_serializing_if = "Option::is_none")]
414 pub temperature: Option<f64>,
415 #[serde(skip_serializing_if = "Option::is_none")]
416 #[serde(alias = "top_p")]
417 pub top_p: Option<f64>,
418 #[serde(skip_serializing_if = "Option::is_none")]
419 #[serde(alias = "top_k")]
420 pub top_k: Option<i64>,
421 #[serde(skip_serializing_if = "Option::is_none")]
422 pub seed: Option<i64>,
423 #[serde(skip_serializing_if = "Option::is_none")]
424 #[serde(alias = "presence_penalty")]
425 pub presence_penalty: Option<f64>,
426 #[serde(skip_serializing_if = "Option::is_none")]
427 #[serde(alias = "frequency_penalty")]
428 pub frequency_penalty: Option<f64>,
429 #[serde(skip_serializing_if = "Option::is_none")]
430 #[serde(alias = "response_logprobs")]
431 pub response_logprobs: Option<bool>,
432 #[serde(skip_serializing_if = "Option::is_none")]
433 pub logprobs: Option<i64>,
434 #[serde(skip_serializing_if = "Option::is_none")]
435 #[serde(alias = "enable_enhanced_civic_answers")]
436 pub enable_enhanced_civic_answers: Option<bool>,
437 #[serde(skip_serializing_if = "Option::is_none")]
438 #[serde(alias = "speech_config")]
439 pub speech_config: Option<SpeechConfig>,
440 #[serde(skip_serializing_if = "Option::is_none")]
441 #[serde(alias = "thinking_config")]
442 pub thinking_config: Option<ThinkingConfig>,
443 #[serde(skip_serializing_if = "Option::is_none")]
444 #[serde(alias = "image_config")]
445 pub image_config: Option<ImageConfig>,
446 #[serde(skip_serializing_if = "Option::is_none")]
447 #[serde(alias = "media_resolution")]
448 pub media_resolution: Option<GenerationMediaResolution>,
449 #[serde(skip_serializing_if = "Option::is_none")]
450 #[serde(alias = "response_format")]
451 pub response_format: Option<ResponseFormatConfig>,
452 #[serde(
453 alias = "enable_affective_dialog",
454 skip_serializing_if = "Option::is_none"
455 )]
456 pub enable_affective_dialog: Option<bool>,
457 #[serde(alias = "translation_config", skip_serializing_if = "Option::is_none")]
458 pub translation_config: Option<TranslationConfig>,
459 #[serde(
460 alias = "audio_transcription_config",
461 skip_serializing_if = "Option::is_none"
462 )]
463 pub audio_transcription_config: Option<AudioTranscriptionConfig>,
464 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
465 pub rest: Rest,
466}