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