openai_sdk_rs/types/
embeddings.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct EmbeddingsRequest {
5    pub model: String,
6    pub input: EmbeddingInput,
7    #[serde(skip_serializing_if = "Option::is_none")] pub user: Option<String>,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
11#[serde(untagged)]
12pub enum EmbeddingInput {
13    String(String),
14    Strings(Vec<String>),
15}
16
17impl From<String> for EmbeddingInput { fn from(s: String) -> Self { EmbeddingInput::String(s) } }
18impl<'a> From<&'a str> for EmbeddingInput { fn from(s: &'a str) -> Self { EmbeddingInput::String(s.to_string()) } }
19impl From<Vec<String>> for EmbeddingInput { fn from(v: Vec<String>) -> Self { EmbeddingInput::Strings(v) } }
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct EmbeddingsResponse {
23    pub object: String,
24    pub data: Vec<EmbeddingData>,
25    pub model: String,
26    pub usage: Option<EmbeddingsUsage>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct EmbeddingData {
31    pub object: String,
32    pub index: usize,
33    pub embedding: Vec<f32>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct EmbeddingsUsage {
38    pub prompt_tokens: u32,
39    pub total_tokens: u32,
40}
41