gproxy_protocol/openai/generate_content/responses/items/content/
output.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use super::{
5 ResponseInputFile, ResponseInputImage, ResponseInputText, ResponseOutputText,
6 ResponseReasoningText, ResponseRefusal,
7};
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
10#[serde(untagged)]
11#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
12pub enum ResponseOutput {
13 Text(String),
14 Parts(Vec<ResponseToolOutputContentPart>),
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
18#[serde(tag = "type")]
19#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
20pub enum ResponseToolOutputContentPart {
21 #[serde(rename = "input_text")]
22 InputText(ResponseInputText),
23 #[serde(rename = "input_image")]
24 InputImage(ResponseInputImage),
25 #[serde(rename = "input_file")]
26 InputFile(ResponseInputFile),
27}
28
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
30#[serde(untagged)]
31#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
32pub enum ResponseMessageOutputContentPart {
33 OutputText(ResponseOutputText),
34 Refusal(ResponseRefusal),
35 Unknown(Value),
36}
37
38#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
39#[serde(untagged)]
40#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
41pub enum ResponseOutputContentPart {
42 OutputText(ResponseOutputText),
43 Refusal(ResponseRefusal),
44 ReasoningText(ResponseReasoningText),
45 Unknown(Value),
46}
47
48pub type ResponseContentPart = ResponseOutputContentPart;