gproxy_protocol/openai/count_tokens/
request.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::openai::count_tokens::types::{
6 HttpMethod, ResponseConversation, ResponseInput, ResponseReasoning, ResponseTextConfig,
7 ResponseTool, ResponseToolChoice, ResponseTruncation,
8};
9
10#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12pub struct OpenAiCountTokensRequest {
13 pub method: HttpMethod,
15 pub path: PathParameters,
17 pub query: QueryParameters,
19 pub headers: RequestHeaders,
21 pub body: RequestBody,
23}
24
25impl Default for OpenAiCountTokensRequest {
26 fn default() -> Self {
27 Self {
28 method: HttpMethod::Post,
29 path: PathParameters::default(),
30 query: QueryParameters::default(),
31 headers: RequestHeaders::default(),
32 body: RequestBody::default(),
33 }
34 }
35}
36
37#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
39pub struct PathParameters {}
40
41#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
43pub struct QueryParameters {}
44
45#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
47pub struct RequestHeaders {
48 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
49 pub extra: BTreeMap<String, String>,
50}
51
52#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
54pub struct RequestBody {
55 #[serde(default, skip_serializing_if = "Option::is_none")]
56 pub conversation: Option<ResponseConversation>,
57 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub input: Option<ResponseInput>,
59 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub instructions: Option<String>,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub model: Option<String>,
63 #[serde(default, skip_serializing_if = "Option::is_none")]
64 pub parallel_tool_calls: Option<bool>,
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub previous_response_id: Option<String>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub reasoning: Option<ResponseReasoning>,
69 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub text: Option<ResponseTextConfig>,
71 #[serde(default, skip_serializing_if = "Option::is_none")]
72 pub tool_choice: Option<ResponseToolChoice>,
73 #[serde(default, skip_serializing_if = "Option::is_none")]
74 pub tools: Option<Vec<ResponseTool>>,
75 #[serde(default, skip_serializing_if = "Option::is_none")]
76 pub truncation: Option<ResponseTruncation>,
77}