Skip to main content

gproxy_protocol/protocol/openai/generate_content/
responses.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::super::common::*;
6use super::response_items::ResponseItem;
7use super::response_tools::ResponseTool;
8use super::responses_tail::{
9    ContextManagement, PromptRef, ReasoningConfig, ResponseObject, ResponseStreamOptions,
10    TextConfig,
11};
12
13pub type ResponseWireModel = OpenAiWireModel<ResponseCreateRequest, ResponseObject>;
14pub type ResponseStreamWireModel =
15    OpenAiWireModel<ResponseCreateRequest, super::ResponseStreamEvent>;
16
17#[derive(
18    Debug, Clone, PartialEq, Serialize, Deserialize, Default, gproxy_protocol_macros::WireBuilder,
19)]
20#[non_exhaustive]
21pub struct ResponseCreateRequest {
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub background: Option<bool>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub context_management: Option<Vec<ContextManagement>>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub conversation: Option<ResponseConversationRef>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub include: Option<Vec<ResponseIncludable>>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub input: Option<ResponseInput>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub instructions: Option<String>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub max_output_tokens: Option<u32>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub max_tool_calls: Option<u32>,
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub metadata: Option<Metadata>,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub model: Option<OpenAiModelId>,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub moderation: Option<ModerationConfig>,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub multi_agent: Option<serde_json::Value>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub parallel_tool_calls: Option<bool>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub previous_response_id: Option<String>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub prompt_cache_key: Option<String>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub prompt_cache_options: Option<PromptCacheOptions>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub prompt_cache_retention: Option<PromptCacheRetention>,
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub prompt: Option<PromptRef>,
58    #[serde(skip_serializing_if = "Option::is_none")]
59    pub reasoning: Option<ReasoningConfig>,
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub safety_identifier: Option<String>,
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub service_tier: Option<ServiceTier>,
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub store: Option<bool>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub stream: Option<bool>,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub stream_options: Option<ResponseStreamOptions>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub temperature: Option<f64>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub text: Option<TextConfig>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub tool_choice: Option<ResponseToolChoice>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub tools: Option<Vec<ResponseTool>>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub top_logprobs: Option<u32>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub top_p: Option<f64>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub truncation: Option<TruncationStrategy>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub user: Option<String>,
86    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
87    pub extra: Extra,
88}
89
90#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
91#[serde(untagged)]
92#[non_exhaustive]
93pub enum ResponseConversationRef {
94    Id(String),
95    Object(ResponseConversationParam),
96}
97
98#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
99#[non_exhaustive]
100pub struct ResponseConversationParam {
101    pub id: String,
102    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
103    pub extra: Extra,
104}
105
106#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
107#[serde(untagged)]
108#[non_exhaustive]
109pub enum ResponseInput {
110    Text(String),
111    Items(Vec<ResponseItem>),
112}