gproxy_protocol/openai/generate_content/responses/items/
message.rs1use 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}