openai_api_rs/v1/
embedding.rs1use 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}