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)]
14pub struct ResponseInputTokensRequest {
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub conversation: Option<ResponseConversationRef>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub input: Option<ResponseInput>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub instructions: Option<String>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub model: Option<OpenAiModelId>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub parallel_tool_calls: Option<bool>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub personality: Option<ResponsePersonality>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub previous_response_id: Option<String>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub prompt_cache_options: Option<PromptCacheOptions>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub reasoning: Option<ReasoningConfig>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub service_tier: Option<ServiceTier>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub text: Option<TextConfig>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub tool_choice: Option<ResponseToolChoice>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub tools: Option<Vec<ResponseTool>>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub truncation: Option<TruncationStrategy>,
43    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
44    pub extra: Extra,
45}
46
47#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
48pub struct ResponseInputTokensResponse {
49    pub input_tokens: u32,
50    pub object: ResponseInputTokensObjectType,
51    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
52    pub extra: Extra,
53}