Skip to main content

gproxy_protocol/openai/generate_content/responses/items/content/
output.rs

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