diff --git a/examples/embedding.rs b/examples/embedding.rs index ef2e61d..d3328d4 100644 --- a/examples/embedding.rs +++ b/examples/embedding.rs @@ -8,7 +8,7 @@ async fn main() -> Result<(), Box> { let client = OpenAIClient::new(env::var("OPENAI_API_KEY").unwrap().to_string()); let mut req = - EmbeddingRequest::new(TEXT_EMBEDDING_3_SMALL.to_string(), "story time".to_string()); + EmbeddingRequest::new(TEXT_EMBEDDING_3_SMALL.to_string(), vec!["story time".to_string(), "Once upon a time".to_string()]); req.dimensions = Some(10); let result = client.embedding(req).await?; diff --git a/src/v1/embedding.rs b/src/v1/embedding.rs index e7ebb4c..a7305b0 100644 --- a/src/v1/embedding.rs +++ b/src/v1/embedding.rs @@ -11,10 +11,18 @@ pub struct EmbeddingData { pub index: i32, } +#[derive(Debug, Serialize, Deserialize, Clone)] +#[serde(rename_all = "lowercase")] +pub enum EncodingFormat { + Float, + Base64, +} + #[derive(Debug, Serialize, Clone, Deserialize)] pub struct EmbeddingRequest { pub model: String, - pub input: String, + pub input: Vec, + pub encoding_format: Option, #[serde(skip_serializing_if = "Option::is_none")] pub dimensions: Option, #[serde(skip_serializing_if = "Option::is_none")] @@ -22,10 +30,11 @@ pub struct EmbeddingRequest { } impl EmbeddingRequest { - pub fn new(model: String, input: String) -> Self { + pub fn new(model: String, input: Vec) -> Self { Self { model, input, + encoding_format: None, dimensions: None, user: None, }