gproxy_protocol/protocol/openai/images/
responses.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::super::common::*;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
8#[non_exhaustive]
9pub struct ImagesResponse {
10 pub created: u64,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub background: Option<ImageResponseBackground>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub data: Option<Vec<Image>>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub output_format: Option<ImageOutputFormat>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub quality: Option<ImageResponseQuality>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub size: Option<ImageResponseSize>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub usage: Option<ImageUsage>,
23 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
24 pub extra: Extra,
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
28#[non_exhaustive]
29pub struct Image {
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub b64_json: Option<String>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub revised_prompt: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub url: Option<String>,
36 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
37 pub extra: Extra,
38}
39
40#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
41#[non_exhaustive]
42pub struct ImageUsage {
43 pub input_tokens: u32,
44 pub input_tokens_details: ImageTokenDetails,
45 pub output_tokens: u32,
46 pub total_tokens: u32,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub output_tokens_details: Option<ImageTokenDetails>,
49 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
50 pub extra: Extra,
51}
52
53#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
54#[non_exhaustive]
55pub struct ImageTokenDetails {
56 pub image_tokens: u32,
57 pub text_tokens: u32,
58 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
59 pub extra: Extra,
60}