Skip to main content

gproxy_protocol/openai/
count_tokens.rs

1use serde::{Deserialize, Serialize};
2
3use super::common::*;
4use super::generate_content::responses::{
5    ReasoningConfig, ResponseConversationRef, ResponseInput, ResponseTool, TextConfig,
6};
7
8pub type ResponseInputTokensWireModel =
9    OpenAiWireModel<ResponseInputTokensRequest, ResponseInputTokensResponse>;
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
12#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
13pub struct ResponseInputTokensRequest {
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub conversation: Option<ResponseConversationRef>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub input: Option<ResponseInput>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub instructions: Option<String>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub model: Option<OpenAiModelId>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub parallel_tool_calls: Option<bool>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub personality: Option<ResponsePersonality>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub previous_response_id: Option<String>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub prompt_cache_options: Option<PromptCacheOptions>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub reasoning: Option<ReasoningConfig>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub service_tier: Option<ServiceTier>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub text: Option<TextConfig>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub tool_choice: Option<ResponseToolChoice>,
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub tools: Option<Vec<ResponseTool>>,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub truncation: Option<TruncationStrategy>,
42    #[serde(default, flatten)]
43    pub rest: Rest,
44}
45
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
47#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
48pub struct ResponseInputTokensResponse {
49    pub input_tokens: u32,
50    pub object: ResponseInputTokensObjectType,
51    #[serde(default, flatten)]
52    pub rest: Rest,
53}