async_openai/types/realtime/
input.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5#[serde(tag = "type", rename_all = "snake_case")]
6pub enum RealtimeResponseInputItem {
7 Message(RealtimeResponseInputMessage),
8 FunctionCall(RealtimeResponseInputFunctionCall),
9 FunctionCallOutput(RealtimeResponseInputFunctionCallOutput),
10 ItemReference(RealtimeResponseItemReference),
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17pub struct RealtimeResponseItemReference {
18 pub id: String,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24pub struct RealtimeResponseInputFunctionCallOutput {
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub id: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub status: Option<RealtimeResponseInputFunctionCallOutputStatus>,
29 pub call_id: String,
30 pub output: String,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
34#[serde(rename_all = "snake_case")]
35pub enum RealtimeResponseInputFunctionCallOutputStatus {
36 #[default]
37 Completed,
38 Incomplete,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
43pub struct RealtimeResponseInputFunctionCall {
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub id: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub status: Option<RealtimeResponseInputFunctionCallStatus>,
48 pub call_id: String,
49 pub name: String,
50 pub arguments: String,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
54#[serde(rename_all = "snake_case")]
55pub enum RealtimeResponseInputFunctionCallStatus {
56 #[default]
57 Completed,
58 Incomplete,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
63#[serde(tag = "role", rename_all = "snake_case")]
64pub enum RealtimeResponseInputMessage {
65 System(RealtimeResponseInputMessageSystem),
66 Developer(RealtimeResponseInputMessageDeveloper),
67 User(RealtimeResponseInputMessageUser),
68 Assistant(RealtimeResponseInputMessageAssistant),
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
72pub struct RealtimeResponseInputMessageAssistant {
73 #[serde(skip_serializing_if = "Option::is_none")]
75 pub id: Option<String>,
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub status: Option<RealtimeResponseInputMessageStatus>,
79 pub content: Vec<RealtimeResponseInputMessageAssistantContentItem>,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
83pub struct RealtimeResponseInputMessageAssistantContentItem {
84 pub r#type: RealtimeResponseInputMessageAssistantContentItemType,
85 pub text: String,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
89#[serde(rename_all = "snake_case")]
90pub enum RealtimeResponseInputMessageAssistantContentItemType {
91 OutputText,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
96#[serde(rename_all = "snake_case")]
97pub enum RealtimeResponseInputMessageStatus {
98 Completed,
99 Incomplete,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
103pub struct RealtimeResponseInputMessageUser {
104 #[serde(skip_serializing_if = "Option::is_none")]
106 pub id: Option<String>,
107 #[serde(skip_serializing_if = "Option::is_none")]
109 pub status: Option<RealtimeResponseInputMessageStatus>,
110 pub content: Vec<RealtimeResponseInputMessageUserContentItem>,
111}
112
113#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
114#[serde(tag = "type", rename_all = "snake_case")]
115pub enum RealtimeResponseInputMessageUserContentItem {
116 InputText(RealtimeResponseInputText),
117 InputAudio(RealtimeResponseInputAudio),
118 InputImage(RealtimeResponseInputImage),
119}
120
121#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
122pub struct RealtimeResponseInputImage {
123 pub image_url: String,
125 #[serde(skip_serializing_if = "Option::is_none")]
126 pub detail: Option<RealtimeResponseInputImageDetail>,
127}
128
129#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
130#[serde(rename_all = "snake_case")]
131pub enum RealtimeResponseInputImageDetail {
132 Low,
133 High,
134 #[default]
135 Auto,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
139pub struct RealtimeResponseInputAudio {
140 pub audio: String,
142 #[serde(skip_serializing_if = "Option::is_none")]
144 pub transcript: Option<String>,
145}
146
147#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
148pub struct RealtimeResponseInputText {
149 pub text: String,
150}
151
152#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
153pub struct RealtimeResponseInputMessageDeveloper {
154 #[serde(skip_serializing_if = "Option::is_none")]
156 pub id: Option<String>,
157 #[serde(skip_serializing_if = "Option::is_none")]
159 pub status: Option<RealtimeResponseInputMessageStatus>,
160 pub content: Vec<RealtimeResponseInputTextPart>,
161}
162
163#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
164pub struct RealtimeResponseInputMessageSystem {
165 #[serde(skip_serializing_if = "Option::is_none")]
167 pub id: Option<String>,
168 #[serde(skip_serializing_if = "Option::is_none")]
170 pub status: Option<RealtimeResponseInputMessageStatus>,
171 pub content: Vec<RealtimeResponseInputTextPart>,
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
176#[serde(tag = "type", rename_all = "snake_case")]
177pub enum RealtimeResponseInputTextPart {
178 InputText(RealtimeResponseInputText),
179}