Skip to main content

gproxy_protocol/protocol/openai/images/
responses.rs

1use 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}