Single entry point for all inference calls.
Pipeline: auth → profile resolution → adapter → normalizer.
Callers never touch adapters, profiles, or normalizers directly.
Options
All public functions accept an opts keyword list:
:adapter— override the adapter module (testing):profile_overrides— map ofModelProfilefields (highest priority)
Summary
Functions
Synchronous chat completion.
Generates embeddings for the given text input.
Generates images via the provider's image generation API.
Generates videos via the provider's video generation API.
Lists available models from the provider.
Streaming chat completion.
Functions
@spec chat(map(), Arcanum.Intent.t(), keyword()) :: {:ok, Arcanum.Response.t()} | {:error, term()}
Synchronous chat completion.
Generates embeddings for the given text input.
@spec generate_image(map(), Arcanum.MediaIntent.t(), keyword()) :: {:ok, Arcanum.MediaResponse.t()} | {:error, term()}
Generates images via the provider's image generation API.
@spec generate_video(map(), Arcanum.MediaIntent.t(), keyword()) :: {:ok, Arcanum.MediaResponse.t()} | {:error, term()}
Generates videos via the provider's video generation API.
Lists available models from the provider.
@spec stream(map(), Arcanum.Intent.t(), keyword()) :: {:ok, Enumerable.t()} | {:error, term()}
Streaming chat completion.