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 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}