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    pub encoding_format: Option<EncodingFormat>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub dimensions: Option<i32>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub user: Option<String>,
29}
30
31impl EmbeddingRequest {
32    pub fn new(model: String, input: Vec<String>) -> Self {
33        Self {
34            model,
35            input,
36            encoding_format: None,
37            dimensions: None,
38            user: None,
39        }
40    }
41}
42
43impl_builder_methods!(
44    EmbeddingRequest,
45    user: String
46);
47
48#[derive(Debug, Deserialize, Serialize)]
49pub struct EmbeddingResponse {
50    pub object: String,
51    pub data: Vec<EmbeddingData>,
52    pub model: String,
53    pub usage: Usage,
54}
55
56#[derive(Debug, Deserialize, Serialize)]
57pub struct Usage {
58    pub prompt_tokens: i32,
59    pub total_tokens: i32,
60}