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