openai_sdk_rs/types/
embeddings.rs1use 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