gproxy_protocol/protocol/openai/
compact.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::common::*;
6use super::generate_content::{
7 ComputerScreenshot, ResponseInput, ResponseInputContentPart, ResponseMessageItemType,
8 ResponseOutputContentPart, ResponseUsage, TypedResponseItem, UnknownResponseItem,
9};
10
11pub type CompactResponseWireModel =
12 OpenAiWireModel<CompactResponseRequestBody, CompactedResponseObject>;
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
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: 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, skip_serializing_if = "BTreeMap::is_empty")]
32 pub extra: Extra,
33}
34
35#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
36pub struct CompactedResponseObject {
37 pub id: String,
38 pub created_at: u64,
39 pub object: ResponseCompactionObjectType,
40 pub output: Vec<CompactResponseItem>,
41 pub usage: ResponseUsage,
42 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
43 pub extra: Extra,
44}
45
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47#[serde(untagged)]
48pub enum CompactResponseItem {
49 Message(CompactMessageItem),
50 Typed(TypedResponseItem),
51 Unknown(UnknownResponseItem),
52}
53
54#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
55pub struct CompactMessageItem {
56 pub id: String,
57 #[serde(rename = "type")]
58 pub type_: ResponseMessageItemType,
59 pub content: Vec<CompactMessageContentPart>,
60 pub role: CompactMessageRole,
61 pub status: ResponseItemLifecycleStatus,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub phase: Option<ResponsePhase>,
64 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
65 pub extra: Extra,
66}
67
68#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
69#[serde(untagged)]
70pub enum CompactMessageContentPart {
71 Input(ResponseInputContentPart),
72 Output(ResponseOutputContentPart),
73 Text(CompactTextContent),
74 SummaryText(CompactSummaryTextContent),
75 ComputerScreenshot(ComputerScreenshot),
76}
77
78#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
79pub struct CompactTextContent {
80 pub text: String,
81 #[serde(rename = "type")]
82 pub type_: CompactTextContentType,
83 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
84 pub extra: Extra,
85}
86
87#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
88pub enum CompactTextContentType {
89 #[serde(rename = "text")]
90 Text,
91}
92
93#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
94pub struct CompactSummaryTextContent {
95 pub text: String,
96 #[serde(rename = "type")]
97 pub type_: CompactSummaryTextContentType,
98 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
99 pub extra: Extra,
100}
101
102#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
103pub enum CompactSummaryTextContentType {
104 #[serde(rename = "summary_text")]
105 SummaryText,
106}
107
108#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
109pub enum CompactMessageRole {
110 #[serde(rename = "unknown")]
111 Unknown,
112 #[serde(rename = "user")]
113 User,
114 #[serde(rename = "assistant")]
115 Assistant,
116 #[serde(rename = "system")]
117 System,
118 #[serde(rename = "critic")]
119 Critic,
120 #[serde(rename = "discriminator")]
121 Discriminator,
122 #[serde(rename = "developer")]
123 Developer,
124 #[serde(rename = "tool")]
125 Tool,
126}
127
128#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
129pub enum CompactServiceTier {
130 #[serde(rename = "auto")]
131 Auto,
132 #[serde(rename = "default")]
133 Default,
134 #[serde(rename = "fast")]
135 Fast,
136 #[serde(rename = "flex")]
137 Flex,
138 #[serde(rename = "priority")]
139 Priority,
140}