From 226e0fb0ff050432141fbc0524bb065642ecdd80 Mon Sep 17 00:00:00 2001 From: Jacob Date: Fri, 9 Oct 2026 01:02:44 -0400 Subject: [PATCH] chore: make some stuff in embeddings less stringly typed --- src/openai/embeddings.rs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/openai/embeddings.rs b/src/openai/embeddings.rs index 3e811cc..1b7048c 100644 --- a/src/openai/embeddings.rs +++ b/src/openai/embeddings.rs @@ -46,6 +46,14 @@ pub struct CreateEmbeddingRequest { pub user: Option, } +/// Embedding object type +#[derive(Debug, Clone, Deserialize, Serialize)] +#[serde(rename_all = "lowercase")] +pub enum EmbeddingObject { + /// Embedding + Embedding, +} + /// Represents a single embedding in the response #[derive(Debug, Clone, Deserialize, Serialize)] pub struct Embedding { @@ -57,7 +65,7 @@ pub struct Embedding { pub index: u32, /// The object type, which is always "embedding" - pub object: String, + pub object: EmbeddingObject, } /// Represents the possible output formats for embeddings @@ -80,17 +88,25 @@ pub struct Usage { pub total_tokens: u32, } +/// List object type +#[derive(Debug, Clone, Deserialize, Serialize)] +#[serde(rename_all = "lowercase")] +pub enum ListObject { + /// List + List, +} + /// Response from the embeddings API #[derive(Debug, Clone, Deserialize, Serialize)] -pub struct CreateEmbeddingResponse { +pub struct CreateEmbeddingResponse { /// List of generated embeddings pub data: Vec, /// The name of the model used to generate the embeddings - pub model: String, + pub model: Model, /// The object type, which is always "list" - pub object: String, + pub object: ListObject, /// Usage information for the request pub usage: Usage,