gproxy_protocol/protocol/openai/generate_content/
responses.rs1use 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}