gproxy_protocol/protocol/gemini/
images.rs1use std::collections::BTreeMap;
8
9use serde::{Deserialize, Serialize};
10
11use super::common::ExtraFields;
12
13#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
14#[serde(rename_all = "camelCase")]
15#[derive(gproxy_protocol_macros::WireBuilder)]
16#[non_exhaustive]
17pub struct ImagenPredictRequest {
18 #[serde(default, skip_serializing_if = "Vec::is_empty")]
19 pub instances: Vec<ImagenInstance>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub parameters: Option<ImagenParameters>,
22 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
23 pub extra: ExtraFields,
24}
25
26#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
27#[serde(rename_all = "camelCase")]
28#[derive(gproxy_protocol_macros::WireBuilder)]
29#[non_exhaustive]
30pub struct ImagenInstance {
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub prompt: Option<String>,
33 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
34 pub extra: ExtraFields,
35}
36
37#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
38#[serde(rename_all = "camelCase")]
39#[derive(gproxy_protocol_macros::WireBuilder)]
40#[non_exhaustive]
41pub struct ImagenParameters {
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub sample_count: Option<u32>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub aspect_ratio: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub image_size: Option<String>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub person_generation: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub negative_prompt: Option<String>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub seed: Option<i64>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub output_options: Option<ImagenOutputOptions>,
56 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
57 pub extra: ExtraFields,
58}
59
60#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
61#[serde(rename_all = "camelCase")]
62#[derive(gproxy_protocol_macros::WireBuilder)]
63#[non_exhaustive]
64pub struct ImagenOutputOptions {
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub mime_type: Option<String>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub compression_quality: Option<u32>,
69 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
70 pub extra: ExtraFields,
71}
72
73#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
74#[serde(rename_all = "camelCase")]
75#[derive(gproxy_protocol_macros::WireBuilder)]
76#[non_exhaustive]
77pub struct ImagenPredictResponse {
78 #[serde(default, skip_serializing_if = "Vec::is_empty")]
79 pub predictions: Vec<ImagenPrediction>,
80 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
81 pub extra: ExtraFields,
82}
83
84#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
85#[serde(rename_all = "camelCase")]
86#[derive(gproxy_protocol_macros::WireBuilder)]
87#[non_exhaustive]
88pub struct ImagenPrediction {
89 #[serde(skip_serializing_if = "Option::is_none")]
90 pub bytes_base64_encoded: Option<String>,
91 #[serde(skip_serializing_if = "Option::is_none")]
92 pub mime_type: Option<String>,
93 #[serde(skip_serializing_if = "Option::is_none")]
94 pub rai_filtered_reason: Option<String>,
95 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
96 pub extra: ExtraFields,
97}