Skip to main content

gproxy_protocol/wire/openai/
count_tokens.rs

1//! OpenAI `POST /responses/input_tokens`.
2use 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}