Skip to content

Providers

Ariadne supports a wide range of LLM and embedding providers out of the box. Every provider is lazy-loaded — missing dependencies don't break the system.

LLM Providers

ProviderClassDefault ModelEnvironment Variable
OpenAIOpenAIProvidergpt-4o-miniOPENAI_API_KEY
AnthropicAnthropicProviderclaude-sonnet-4-20250514ANTHROPIC_API_KEY
OllamaOllamaProviderllama3.2(local server)
Google GeminiGoogleGeminiProvidergemini-2.0-flashGEMINI_API_KEY
CohereCohereProvidercommand-r-plusCOHERE_API_KEY
DeepSeekDeepSeekProviderdeepseek-chatDEEPSEEK_API_KEY
GroqGroqProviderllama-3.3-70b-versatileGROQ_API_KEY
MistralMistralProvidermistral-large-latestMISTRAL_API_KEY
xAI (Grok)xAIProvidergrok-2XAI_API_KEY
OpenRouterOpenAIProvidervariesOPENROUTER_API_KEY
Together AIOpenAIProvidervariesTOGETHER_API_KEY
LM StudioOpenAIProvidervaries(local server)

Using the Provider Registry

python
from arriadne.llm import LLMProvider, PROVIDER_REGISTRY

# Auto-detect from environment
llm = LLMProvider.auto_detect()

# Explicit config
llm = LLMProvider.from_config({
    "provider": "gemini",
    "model": "gemini-2.0-flash",
})

# Direct instantiation
from arriadne.llm import GroqProvider
provider = GroqProvider(api_key="gsk_...", model="llama-3.3-70b-versatile")
llm = LLMProvider(provider)

OpenAI-Compatible Providers

DeepSeek, Groq, Mistral, and xAI all use the OpenAI-compatible API format. You can also use any other OpenAI-compatible endpoint:

python
from arriadne.llm import OpenAIProvider, LLMProvider

provider = OpenAIProvider(
    api_key="your-key",
    base_url="https://your-custom-endpoint.com/v1",
    model="custom-model-name",
)
llm = LLMProvider(provider)

Embedding Providers

ProviderClassDefault ModelDimensionsEnvironment Variable
ONNX (zero-config)OnnxEmbeddingall-MiniLM-L6-v2384(auto-download)
Sentence TransformersSentenceTransformerEmbeddingall-MiniLM-L6-v2384(local model)
Nomic (ONNX)NomicEmbeddingnomic-embed-text-v1.5768(auto-download)
BGE (ONNX)BGEEmbeddingbge-small-en-v1.5384(auto-download)
OpenAIOpenAIEmbeddingtext-embedding-3-small1536OPENAI_API_KEY
CohereCohereEmbeddingembed-english-v3.01024COHERE_API_KEY
JinaJinaEmbeddingjina-embeddings-v31024JINA_API_KEY
VoyageVoyageEmbeddingvoyage-31024VOYAGE_API_KEY
Keyword (fallback)KeywordEmbeddingTF-IDF hashconfigurable(none needed)
CustomCustomEmbeddinguser-defineduser-defined(none)

Auto-Detection

python
from arriadne import AriadneMemory

# Automatically selects the best available provider
mem = AriadneMemory("my_memory.db")

# Check which provider was selected
print(f"Embedding provider: {mem.embedding_provider.name}")
print(f"Dimensions: {mem.embedding_dimension}")

Explicit Selection

python
from arriadne.embeddings import OnnxEmbedding, CohereEmbedding, EMBEDDING_REGISTRY

# By name
from arriadne.embeddings import EMBEDDING_REGISTRY
provider = EMBEDDING_REGISTRY["nomic"](dimension=768)

# Direct instantiation
provider = CohereEmbedding(api_key="your-key", dimension=1024)

Embedding Provider Selection Order

When using auto_detect_provider(), the fallback order is:

  1. ONNX (auto-downloads model, zero config)
  2. Sentence Transformers (if PyTorch installed)
  3. Nomic (ONNX variant, 768-dim)
  4. BGE (ONNX variant, 384-dim)
  5. OpenAI (requires API key)
  6. Cohere (requires API key)
  7. Jina (requires API key)
  8. Keyword fallback (no model needed)

Integration with Hermes

The Hermes plugin automatically selects the best available provider:

yaml
# ~/.hermes/config.yaml
memory:
  provider: ariadne
  ariadne:
    embedding:
      provider: onnx  # or nomic, bge, openai, cohere, etc.
    llm:
      provider: ollama
      model: llama3.2

Released under the MIT License.