gproxy_protocol/openai/embeddings/
types.rs1use serde::{Deserialize, Serialize};
2
3pub use crate::openai::types::{
4 HttpMethod, OpenAiApiError, OpenAiApiErrorResponse, OpenAiResponseHeaders,
5};
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9#[serde(untagged)]
10pub enum OpenAiEmbeddingInput {
11 String(String),
12 StringArray(Vec<String>),
13 TokenArray(Vec<i64>),
14 TokenArrayArray(Vec<Vec<i64>>),
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
19#[serde(untagged)]
20pub enum OpenAiEmbeddingModel {
21 Known(OpenAiEmbeddingModelKnown),
22 Custom(String),
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
27pub enum OpenAiEmbeddingModelKnown {
28 #[serde(rename = "text-embedding-ada-002")]
29 TextEmbeddingAda002,
30 #[serde(rename = "text-embedding-3-small")]
31 TextEmbedding3Small,
32 #[serde(rename = "text-embedding-3-large")]
33 TextEmbedding3Large,
34}
35
36#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
38pub enum OpenAiEmbeddingEncodingFormat {
39 #[serde(rename = "float")]
40 Float,
41 #[serde(rename = "base64")]
42 Base64,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47pub struct OpenAiEmbeddingData {
48 pub embedding: OpenAiEmbeddingVector,
50 pub index: u64,
52 pub object: OpenAiEmbeddingDataObject,
54}
55
56#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
58#[serde(untagged)]
59pub enum OpenAiEmbeddingVector {
60 FloatArray(Vec<f64>),
61 Base64(String),
62}
63
64#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
66pub enum OpenAiEmbeddingDataObject {
67 #[serde(rename = "embedding")]
68 Embedding,
69}
70
71#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
73pub struct OpenAiEmbeddingUsage {
74 pub prompt_tokens: u64,
75 pub total_tokens: u64,
76}
77
78#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
80pub struct OpenAiCreateEmbeddingResponse {
81 pub data: Vec<OpenAiEmbeddingData>,
82 pub model: String,
83 pub object: OpenAiEmbeddingResponseObject,
84 pub usage: OpenAiEmbeddingUsage,
85}
86
87#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
89pub enum OpenAiEmbeddingResponseObject {
90 #[serde(rename = "list")]
91 List,
92}