pub struct Embedding { /* private fields */ }Expand description
Main struct for building and sending embedding requests to the OpenAI API.
This struct provides a builder pattern interface for constructing embedding
requests with various parameters. Use Embedding::new() to create a new
instance, then chain methods to configure the request before calling [embed()].
§Providers
The client supports two providers:
- OpenAI: Standard OpenAI API (default)
- Azure: Azure OpenAI Service
§Example
use openai_tools::embedding::request::Embedding;
use openai_tools::common::models::EmbeddingModel;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut embedding = Embedding::new()?;
let response = embedding
.model(EmbeddingModel::TextEmbedding3Small)
.input_text("Sample text")
.embed()
.await?;
Ok(())
}Implementations§
Source§impl Embedding
impl Embedding
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Creates a new Embedding instance for OpenAI API.
Initializes the embedding client by loading the OpenAI API key from
the environment variable OPENAI_API_KEY. Supports .env file loading
via dotenvy.
§Returns
Ok(Embedding)- A new embedding instance ready for configurationErr(OpenAIToolError)- If the API key is not found in the environment
§Example
use openai_tools::embedding::request::Embedding;
let embedding = Embedding::new().expect("API key should be set");Sourcepub fn with_auth(auth: AuthProvider) -> Self
pub fn with_auth(auth: AuthProvider) -> Self
Sourcepub fn azure() -> Result<Self>
pub fn azure() -> Result<Self>
Creates a new Embedding instance for Azure OpenAI API
Loads configuration from Azure-specific environment variables.
§Returns
Result<Embedding> - Configured for Azure or error if env vars missing
Sourcepub fn detect_provider() -> Result<Self>
pub fn detect_provider() -> Result<Self>
Creates a new Embedding instance by auto-detecting the provider
Tries Azure first (if AZURE_OPENAI_API_KEY is set), then falls back to OpenAI.
Sourcepub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
pub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
Creates a new Embedding instance with URL-based provider detection
Analyzes the URL pattern to determine the provider:
- URLs containing
.openai.azure.com→ Azure - All other URLs → OpenAI-compatible
§Arguments
base_url- The complete base URL for API requestsapi_key- The API key or token
Sourcepub fn from_url<S: Into<String>>(url: S) -> Result<Self>
pub fn from_url<S: Into<String>>(url: S) -> Result<Self>
Creates a new Embedding instance from URL using environment variables
Analyzes the URL pattern to determine the provider, then loads credentials from the appropriate environment variables.
Sourcepub fn auth(&self) -> &AuthProvider
pub fn auth(&self) -> &AuthProvider
Returns the authentication provider
Sourcepub fn model(&mut self, model: EmbeddingModel) -> &mut Self
pub fn model(&mut self, model: EmbeddingModel) -> &mut Self
Sets the model to use for embedding generation.
§Arguments
model- The embedding model to use
§Returns
A mutable reference to self for method chaining
§Example
use openai_tools::embedding::request::Embedding;
use openai_tools::common::models::EmbeddingModel;
let mut embedding = Embedding::new().unwrap();
embedding.model(EmbeddingModel::TextEmbedding3Small);Sourcepub fn model_id<T: AsRef<str>>(&mut self, model_id: T) -> &mut Self
👎Deprecated since 0.2.0: Use model(EmbeddingModel) instead for type safety
pub fn model_id<T: AsRef<str>>(&mut self, model_id: T) -> &mut Self
model(EmbeddingModel) instead for type safetySourcepub fn timeout(&mut self, timeout: Duration) -> &mut Self
pub fn timeout(&mut self, timeout: Duration) -> &mut Self
Sets the request timeout duration.
§Arguments
timeout- The maximum time to wait for a response
§Returns
A mutable reference to self for method chaining
§Example
use std::time::Duration;
use openai_tools::embedding::request::Embedding;
use openai_tools::common::models::EmbeddingModel;
let mut embedding = Embedding::new().unwrap();
embedding.model(EmbeddingModel::TextEmbedding3Small)
.timeout(Duration::from_secs(30));Sourcepub fn input_text<T: AsRef<str>>(&mut self, input_text: T) -> &mut Self
pub fn input_text<T: AsRef<str>>(&mut self, input_text: T) -> &mut Self
Sets a single text input for embedding.
Use this method when you want to embed a single piece of text.
For multiple texts, use [input_text_array] instead.
§Arguments
input_text- The text to convert into an embedding vector
§Returns
A mutable reference to self for method chaining
§Example
embedding.input_text("Hello, world!");Sourcepub fn input_text_array<T: AsRef<str>>(
&mut self,
input_text_array: Vec<T>,
) -> &mut Self
pub fn input_text_array<T: AsRef<str>>( &mut self, input_text_array: Vec<T>, ) -> &mut Self
Sets multiple text inputs for batch embedding.
Use this method when you want to embed multiple texts in a single API call. This is more efficient than making separate requests for each text.
§Arguments
input_text_array- Vector of texts to convert into embedding vectors
§Returns
A mutable reference to self for method chaining
§Example
let texts = vec!["First text", "Second text", "Third text"];
embedding.input_text_array(texts);Sourcepub fn encoding_format<T: AsRef<str>>(
&mut self,
encoding_format: T,
) -> &mut Self
pub fn encoding_format<T: AsRef<str>>( &mut self, encoding_format: T, ) -> &mut Self
Sets the encoding format for the output embeddings.
§Arguments
encoding_format- Either “float” (default) or “base64”"float": Returns embeddings as arrays of floating point numbers"base64": Returns embeddings as base64-encoded strings (more compact)
§Returns
A mutable reference to self for method chaining
§Panics
Panics if encoding_format is not “float” or “base64”
§Example
embedding.encoding_format("float");Sourcepub async fn embed(&self) -> Result<Response>
pub async fn embed(&self) -> Result<Response>
Sends the embedding request to the OpenAI API.
This method validates the request parameters, constructs the HTTP request, sends it to the OpenAI Embeddings API endpoint, and parses the response.
§Returns
Ok(Response)- The embedding response containing vectors and metadataErr(OpenAIToolError)- If validation fails, the request fails, or parsing fails
§Errors
Returns an error if:
- API key is not set
- Model ID is not set
- Input text is not set
- Network request fails
- Response parsing fails
§Example
let mut embedding = Embedding::new()?;
let response = embedding
.model(EmbeddingModel::TextEmbedding3Small)
.input_text("Hello, world!")
.embed()
.await?;Auto Trait Implementations§
impl Freeze for Embedding
impl RefUnwindSafe for Embedding
impl Send for Embedding
impl Sync for Embedding
impl Unpin for Embedding
impl UnwindSafe for Embedding
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more