gproxy_protocol/openai/embeddings/
request.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::openai::embeddings::types::{
6 HttpMethod, OpenAiEmbeddingEncodingFormat, OpenAiEmbeddingInput, OpenAiEmbeddingModel,
7};
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub struct OpenAiEmbeddingsRequest {
12 pub method: HttpMethod,
14 pub path: PathParameters,
16 pub query: QueryParameters,
18 pub headers: RequestHeaders,
20 pub body: RequestBody,
22}
23
24impl Default for OpenAiEmbeddingsRequest {
25 fn default() -> Self {
26 Self {
27 method: HttpMethod::Post,
28 path: PathParameters::default(),
29 query: QueryParameters::default(),
30 headers: RequestHeaders::default(),
31 body: RequestBody::default(),
32 }
33 }
34}
35
36#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
38pub struct PathParameters {}
39
40#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
42pub struct QueryParameters {}
43
44#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
46pub struct RequestHeaders {
47 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
48 pub extra: BTreeMap<String, String>,
49}
50
51#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
53pub struct RequestBody {
54 pub input: OpenAiEmbeddingInput,
56 pub model: OpenAiEmbeddingModel,
58 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub dimensions: Option<u32>,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
63 pub encoding_format: Option<OpenAiEmbeddingEncodingFormat>,
64 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub user: Option<String>,
67}
68
69impl Default for RequestBody {
70 fn default() -> Self {
71 Self {
72 input: OpenAiEmbeddingInput::String(String::new()),
73 model: OpenAiEmbeddingModel::Custom(String::new()),
74 dimensions: None,
75 encoding_format: None,
76 user: None,
77 }
78 }
79}