Skip to main content

gproxy_protocol/protocol/openai/
count_tokens.rs

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