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(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}