gproxy_protocol/wire/openai/
count_tokens.rs1use super::responses::input::{present_nullable, present_optional};
3pub use super::responses::*;
4use crate::Rest;
5use serde::{Deserialize, Serialize};
6
7#[derive(
8 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
9)]
10#[serde(rename_all = "snake_case")]
11#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
12#[derive(gproxy_protocol_macros::DeclaredFields)]
13#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
14pub struct CountTokensRequestBody {
15 #[serde(
16 default,
17 deserialize_with = "present_nullable",
18 skip_serializing_if = "Option::is_none"
19 )]
20 pub conversation: Option<Option<ConversationParam>>,
21 #[serde(
22 default,
23 deserialize_with = "present_nullable",
24 skip_serializing_if = "Option::is_none"
25 )]
26 pub input: Option<Option<Input>>,
27 #[serde(
28 default,
29 deserialize_with = "present_nullable",
30 skip_serializing_if = "Option::is_none"
31 )]
32 pub instructions: Option<Option<String>>,
33 #[serde(
34 default,
35 deserialize_with = "present_nullable",
36 skip_serializing_if = "Option::is_none"
37 )]
38 pub model: Option<Option<String>>,
39 #[serde(
40 default,
41 deserialize_with = "present_nullable",
42 skip_serializing_if = "Option::is_none"
43 )]
44 pub parallel_tool_calls: Option<Option<bool>>,
45 #[serde(
46 default,
47 deserialize_with = "present_optional",
48 skip_serializing_if = "Option::is_none"
49 )]
50 pub personality: Option<String>,
51 #[serde(
52 default,
53 deserialize_with = "present_nullable",
54 skip_serializing_if = "Option::is_none"
55 )]
56 pub previous_response_id: Option<Option<String>>,
57 #[serde(
58 default,
59 deserialize_with = "present_nullable",
60 skip_serializing_if = "Option::is_none"
61 )]
62 pub reasoning: Option<Option<ReasoningConfig>>,
63 #[serde(
64 default,
65 deserialize_with = "present_nullable",
66 skip_serializing_if = "Option::is_none"
67 )]
68 pub text: Option<Option<TextConfig>>,
69 #[serde(
70 default,
71 deserialize_with = "present_nullable",
72 skip_serializing_if = "Option::is_none"
73 )]
74 pub tool_choice: Option<Option<ToolChoice>>,
75 #[serde(
76 default,
77 deserialize_with = "present_nullable",
78 skip_serializing_if = "Option::is_none"
79 )]
80 pub tools: Option<Option<Vec<Tool>>>,
81 #[serde(
82 default,
83 deserialize_with = "present_optional",
84 skip_serializing_if = "Option::is_none"
85 )]
86 pub truncation: Option<Truncation>,
87 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
88 pub rest: Rest,
89}
90
91#[derive(
92 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
93)]
94#[serde(rename_all = "snake_case")]
95#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
96#[derive(gproxy_protocol_macros::DeclaredFields)]
97#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
98pub struct CountTokensResponseBody {
99 pub input_tokens: i64,
100 pub object: CountTokensObject,
101 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
102 pub rest: Rest,
103}
104
105#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
106#[serde(rename_all = "snake_case")]
107#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
108#[derive(gproxy_protocol_macros::DeclaredFields)]
109#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
110pub enum CountTokensObject {
111 #[serde(rename = "response.input_tokens")]
112 ResponseInputTokens,
113}
114
115pub type CountTokensRequest = crate::WireRequest<CountTokensRequestBody>;
116pub type CountTokensResponse = crate::WireResponse<CountTokensResponseBody>;
117
118#[derive(
119 Debug,
120 Clone,
121 Copy,
122 PartialEq,
123 Eq,
124 Serialize,
125 Deserialize,
126 gproxy_protocol_macros::DeclaredFields,
127)]
128#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
129pub enum Truncation {
130 #[serde(rename = "auto")]
131 Auto,
132 #[serde(rename = "disabled")]
133 Disabled,
134}