openai_api_rs/v1/
embedding.rs

1use serde::{Deserialize, Serialize};
2use std::option::Option;
3
4use crate::impl_builder_methods;
5
6#[derive(Debug, Deserialize, Serialize)]
7pub struct EmbeddingData {
8    pub object: String,
9    pub embedding: Vec<f32>,
10    pub index: i32,
11}
12
13#[derive(Debug, Serialize, Deserialize, Clone)]
14#[serde(rename_all = "lowercase")]
15pub enum EncodingFormat {
16    Float,
17    Base64,
18}
19
20#[derive(Debug, Serialize, Clone, Deserialize)]
21pub struct EmbeddingRequest {
22    pub model: String,
23    pub input: Vec<String>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub encoding_format: Option<EncodingFormat>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub dimensions: Option<i32>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub user: Option<String>,
30}
31
32impl EmbeddingRequest {
33    pub fn new(model: String, input: Vec<String>) -> Self {
34        Self {
35            model,
36            input,
37            encoding_format: None,
38            dimensions: None,
39            user: None,
40        }
41    }
42}
43
44impl_builder_methods!(
45    EmbeddingRequest,
46    user: String
47);
48
49#[derive(Debug, Deserialize, Serialize)]
50pub struct EmbeddingResponse {
51    pub object: String,
52    pub data: Vec<EmbeddingData>,
53    pub model: String,
54    pub usage: Usage,
55}
56
57#[derive(Debug, Deserialize, Serialize)]
58pub struct Usage {
59    pub prompt_tokens: i32,
60    pub total_tokens: i32,
61}