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)]
8pub struct ImagesResponse {
9    pub created: u64,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub background: Option<ImageResponseBackground>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub data: Option<Vec<Image>>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub output_format: Option<ImageOutputFormat>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub quality: Option<ImageResponseQuality>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub size: Option<ImageResponseSize>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub usage: Option<ImageUsage>,
22    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
23    pub extra: Extra,
24}
25
26#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
27pub struct Image {
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub b64_json: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub revised_prompt: Option<String>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub url: Option<String>,
34    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
35    pub extra: Extra,
36}
37
38#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
39pub struct ImageUsage {
40    pub input_tokens: u32,
41    pub input_tokens_details: ImageTokenDetails,
42    pub output_tokens: u32,
43    pub total_tokens: u32,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub output_tokens_details: Option<ImageTokenDetails>,
46    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
47    pub extra: Extra,
48}
49
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
51pub struct ImageTokenDetails {
52    pub image_tokens: u32,
53    pub text_tokens: u32,
54    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
55    pub extra: Extra,
56}