Skip to main content

Crate entelix_memory_openai

Crate entelix_memory_openai 

Source
Expand description

§entelix-memory-openai

Concrete entelix_memory::Embedder implementation backed by OpenAI’s /v1/embeddings endpoint. Ships the text-embedding-3-{small,large} models plus operator-supplied custom model identifiers for forward compatibility.

Companion to the trait-only entelix_memory crate (invariant 13’s “trait-only entelix-memory” principle): concrete vendor impls live in their own crate so the core memory trait surface ships without pulling reqwest + secrecy for users who provide their own embedder.

§One-call setup

use std::sync::Arc;
use entelix_core::auth::ApiKeyProvider;
use entelix_memory_openai::OpenAiEmbedder;

let credentials = Arc::new(ApiKeyProvider::new(
    "authorization",
    format!("Bearer {}", std::env::var("OPENAI_API_KEY")?),
)?);
let embedder = OpenAiEmbedder::small().with_credentials(credentials).build()?;

§Invariant alignment

  • Invariant 10 — credentials never reach Tool::execute. The embedder holds an Arc<dyn CredentialProvider> and resolves per-call; no token enters request scope state.
  • F10Embedder is wrapped in Arc at the call boundary. Cloning the embedder is cheap (Arc::clone of the inner reqwest::Client plus a credential handle).
  • F4EmbeddingUsage is populated only on the Ok branch of embed/embed_batch; failed calls produce no phantom token charge in downstream meters.

Structs§

OpenAiEmbedder
Concrete Embedder backed by OpenAI’s /v1/embeddings HTTPS endpoint. Stateless beyond the connection pool inside reqwest::Client; clone freely or wrap in Arc per F10.
OpenAiEmbedderBuilder
Builder for OpenAiEmbedder.

Enums§

OpenAiEmbedderError
Errors that can surface from OpenAiEmbedder.

Constants§

DEFAULT_BASE_URL
Default OpenAI API base URL. Override via OpenAiEmbedderBuilder::with_base_url for proxies, regional endpoints, or test fixtures.
TEXT_EMBEDDING_3_LARGE
OpenAI’s higher-quality embedding model. Native dimension 3072; can be reduced via the dimensions request parameter.
TEXT_EMBEDDING_3_LARGE_DIMENSION
Native dimension of TEXT_EMBEDDING_3_LARGE.
TEXT_EMBEDDING_3_SMALL
OpenAI’s lower-cost embedding model. Native dimension 1536; can be reduced via the dimensions request parameter (operator with_dimension on the builder).
TEXT_EMBEDDING_3_SMALL_DIMENSION
Native dimension of TEXT_EMBEDDING_3_SMALL.

Type Aliases§

OpenAiEmbedderResult
Result alias used inside entelix-memory-openai.