Skip to main content

gproxy_protocol/openai/generate_content/responses/items/
message.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::openai::common::*;
5
6use super::{ResponseEasyInputContent, ResponseInputContentPart, ResponseMessageOutputContentPart};
7
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9#[serde(untagged)]
10#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
11pub enum ResponseMessageItem {
12    Output(ResponseOutputMessageItem),
13    Input(ResponseInputMessageItem),
14    EasyInput(ResponseEasyInputMessageItem),
15    Unknown(Value),
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
19#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
20pub struct ResponseOutputMessageItem {
21    #[serde(rename = "type")]
22    pub type_: ResponseMessageItemType,
23    pub id: String,
24    pub role: ResponseOutputMessageRole,
25    pub content: Vec<ResponseMessageOutputContentPart>,
26    pub status: ResponseItemLifecycleStatus,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub phase: Option<ResponsePhase>,
29    #[serde(default, flatten)]
30    pub rest: Rest,
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
34#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
35pub struct ResponseInputMessageItem {
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub id: Option<String>,
38    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
39    pub type_: Option<ResponseMessageItemType>,
40    pub role: ResponseInputMessageRole,
41    pub content: Vec<ResponseInputContentPart>,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub status: Option<ResponseItemLifecycleStatus>,
44    #[serde(default, flatten)]
45    pub rest: Rest,
46}
47
48#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
49#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
50pub struct ResponseEasyInputMessageItem {
51    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
52    pub type_: Option<ResponseMessageItemType>,
53    pub role: ResponseEasyInputMessageRole,
54    pub content: ResponseEasyInputContent,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub phase: Option<ResponsePhase>,
57    #[serde(default, flatten)]
58    pub rest: Rest,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
62#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
63pub enum ResponseMessageItemType {
64    #[serde(rename = "message")]
65    Message,
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
69#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
70pub enum ResponseOutputMessageRole {
71    #[serde(rename = "assistant")]
72    Assistant,
73}
74
75#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
76#[serde(rename_all = "snake_case")]
77#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
78pub enum ResponseInputMessageRole {
79    User,
80    System,
81    Developer,
82}
83
84#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
85#[serde(rename_all = "snake_case")]
86#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
87pub enum ResponseEasyInputMessageRole {
88    User,
89    Assistant,
90    System,
91    Developer,
92}
93
94#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
95#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
96pub struct ResponseAgent {
97    pub agent_name: String,
98    #[serde(default, flatten)]
99    pub rest: Rest,
100}
101
102#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
103#[serde(untagged)]
104#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
105pub enum ResponseCaller {
106    Direct(ResponseDirectCaller),
107    Program(ResponseProgramCaller),
108    Unknown(Value),
109}
110
111#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
112#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
113pub struct ResponseDirectCaller {
114    #[serde(rename = "type")]
115    pub type_: ResponseDirectCallerType,
116    #[serde(default, flatten)]
117    pub rest: Rest,
118}
119
120#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
121#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
122pub enum ResponseDirectCallerType {
123    #[serde(rename = "direct")]
124    Direct,
125}
126
127#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
128#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
129pub struct ResponseProgramCaller {
130    #[serde(rename = "type")]
131    pub type_: ResponseProgramCallerType,
132    pub caller_id: String,
133    #[serde(default, flatten)]
134    pub rest: Rest,
135}
136
137#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
138#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
139pub enum ResponseProgramCallerType {
140    #[serde(rename = "program")]
141    Program,
142}