gproxy_protocol/openai/compact/
mod.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::openai::common::*;
5use crate::openai::generate_content::responses::{
6 ComputerScreenshot, ResponseInput, ResponseInputContentPart, ResponseMessageItemType,
7 ResponseOutputContentPart, ResponseUsage, TypedResponseItem,
8};
9
10pub type CompactResponseWireModel =
11 OpenAiWireModel<CompactResponseRequestBody, CompactedResponseObject>;
12
13#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
14#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
15pub struct CompactResponseRequestBody {
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub input: Option<ResponseInput>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub instructions: Option<String>,
20 pub model: Option<OpenAiModelId>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub previous_response_id: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub prompt_cache_key: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub prompt_cache_options: Option<PromptCacheOptions>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub prompt_cache_retention: Option<PromptCacheRetention>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub service_tier: Option<CompactServiceTier>,
31 #[serde(default, flatten)]
32 pub rest: Rest,
33}
34
35#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
36#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
37pub struct CompactedResponseObject {
38 pub id: String,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub created_at: Option<u64>,
41 pub object: ResponseCompactionObjectType,
42 pub output: Vec<CompactResponseItem>,
43 pub usage: ResponseUsage,
44 #[serde(default, flatten)]
45 pub rest: Rest,
46}
47
48#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
49#[serde(untagged)]
50pub enum CompactResponseItem {
51 Message(CompactMessageItem),
52 Typed(Box<TypedResponseItem>),
53 Unknown(Value),
54}
55
56#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
57#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
58pub struct CompactMessageItem {
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub id: Option<String>,
61 #[serde(rename = "type")]
62 pub type_: ResponseMessageItemType,
63 pub content: Vec<CompactMessageContentPart>,
64 pub role: CompactMessageRole,
65 pub status: ResponseItemLifecycleStatus,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub phase: Option<ResponsePhase>,
68 #[serde(default, flatten)]
69 pub rest: Rest,
70}
71
72#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
73#[serde(untagged)]
74pub enum CompactMessageContentPart {
75 Input(ResponseInputContentPart),
76 Output(ResponseOutputContentPart),
77 Text(CompactTextContent),
78 SummaryText(CompactSummaryTextContent),
79 ComputerScreenshot(ComputerScreenshot),
80 Unknown(Value),
81}
82
83#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
84#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
85pub struct CompactTextContent {
86 pub text: String,
87 #[serde(rename = "type")]
88 pub type_: CompactTextContentType,
89 #[serde(default, flatten)]
90 pub rest: Rest,
91}
92
93#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94pub enum CompactTextContentType {
95 #[serde(rename = "text")]
96 Text,
97}
98
99#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
100#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
101pub struct CompactSummaryTextContent {
102 pub text: String,
103 #[serde(rename = "type")]
104 pub type_: CompactSummaryTextContentType,
105 #[serde(default, flatten)]
106 pub rest: Rest,
107}
108
109#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
110pub enum CompactSummaryTextContentType {
111 #[serde(rename = "summary_text")]
112 SummaryText,
113}
114
115#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
116#[serde(rename_all = "snake_case")]
117pub enum CompactMessageRole {
118 Unknown,
119 User,
120 Assistant,
121 System,
122 Critic,
123 Discriminator,
124 Developer,
125 Tool,
126}
127
128pub type CompactServiceTier = ServiceTier;