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)]
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}