Models & Pricing - Entity Enricher Documentation

Models & Pricing

Manage LLM providers and models, Sync models from external registries, run health checks, and configure per-organization API keys for independent billing.

Provider Management

Entity Enricher supports a wide range of LLM providers. Each provider can have multiple models with individual pricing, capabilities, and configuration.

Supported Providers

AnthropicOpenAIGoogleGoogle VertexMistralDeepSeekGroqTogether AIFireworks AICoherexAIMoonshotZ.AINVIDIA NIMOllamaAzure OpenAI

Provider Types

StandardMost providers (Anthropic, OpenAI, Mistral, etc.) use standard API endpoints with bearer token authentication. A Standard provider can also point at a custom OpenAI-compatible endpoint — see Custom & Corporate Endpoints below.
AzureAzure OpenAI uses custom deployment endpoints with API version configuration.
OllamaSelf-hosted Ollama instances with custom endpoint URLs and automatic model discovery.

Custom & Corporate Endpoints

Many teams route LLM traffic through a corporate AI gateway, a regional endpoint, or a provider that isn't built in — for example an enterprise LiteLLM proxy, Cloudflare AI Gateway, or Alibaba DashScope (for Qwen models). You add these as their own Standard (OpenAI-compatible)provider with a custom base URL.

Adding a gateway provider

  1. Create a provider with a name that isn't one of the built-ins (e.g. acme-openai-gw). Built-in names like openai or anthropic are reserved.
  2. Choose the Standard (OpenAI-compatible) type and fill in Custom API endpoint (base URL) — e.g. https://gateway.example.com/v1. This field is required for any provider Entity Enricher has no built-in client for.
  3. Add the gateway's key as an Organization key for that provider (API Keys → AI Provider Keys), so it bills and rotates per organization.
  4. Add the models the gateway serves. The model identifier is sent verbatim, so it must match exactly what the gateway expects.

Good to know

  • Built-in providers hide the endpoint field. Anthropic, OpenAI, Mistral, and the other recognised providers already know their endpoint, so there is nothing to configure. If a custom provider later becomes built-in, its stored endpoint stays visible so you can clear it.
  • Public HTTPS only. Endpoints must be public https:// URLs. Loopback and private ranges (localhost, 10.x, 192.168.x) are rejected to prevent SSRF — a self-hosted server must be reachable over the internet. For a local Ollama, use the dedicated Ollama tunnel instead.
  • OpenAI-compatible wire format. Calls to a custom provider are routed through the OpenAI-compatible API, so the endpoint must speak the OpenAI /v1 protocol (chat completions, /models).
  • Test connection probes {endpoint}/models to verify the key and base URL before you run an enrichment.

Concurrency Limits (per key)

Each provider has a Max concurrent calls per key setting (its rate-limit override). It caps how many LLM calls a single API key runs in parallel — covering every flow that uses the key: the multi-expertise enrichment fan-out, classification, arbitration, and schema / sample generation.

  • Bounded per key, not per provider. Every organization key and the shared global key gets its own independent budget, so one key's parallel calls never crowd out another's.
  • Falls back to a sensible default when left unset (per-provider defaults, typically 3–5 concurrent calls).
  • Takes effect on the next job — no restart needed.

This is separate from your plan's max concurrent jobs limit, which caps how many enrichment jobs your whole organization runs at once across all providers.

Model Capabilities

Each model tracks its capabilities, which are displayed as icons in the model selector:

CapabilityDescription
VisionCan process image and visual inputs
Tool CallsSupports function calling / tool use
Audio InputCan process audio inputs
PDF InputCan process PDF documents
Prompt CachingSupports prompt caching for cost reduction
ReasoningExtended thinking / chain-of-thought capabilities
EmbeddingsTurns text into a vector instead of answering — what semantic IDs are resolved with. Embedding models are their own family, with their own vector size, and never appear in an enrichment picker

Letting the platform pick the model

Naming a model is optional. Enrichment, schema generation and sample generation all accept auto — and treat an omitted model as auto — which is resolved on the server, per task, at the moment the job starts. The run reports which model it picked, so automatic never means opaque.

1. Your organization's pinned default

Owners can pin a preferred model per task under Settings → Organization → Defaults. If one is set for the task at hand, it wins.

2. Otherwise, the best measured model

Failing a pin, the pick is the model with the best blended score from your scoring-source benchmarks — your own measurements of quality, speed and cost on your own schemas. With no scoring source at all the request is refused rather than guessed at.

3. Narrowed by what the job needs

Turning on web search, or attaching a document that must be sent as-is, restricts the candidates to models that can actually do it — and if none qualifies, you get an explicit error instead of a silent downgrade.

A model can also be barred from one task without being deactivated: a model that enriches well but generates poor schemas can be hidden from the schema and sample generation pickers only, either for your organization or globally by an administrator. It stays fully available everywhere else — a softer instrument than the deactivation below.

Automatic Pricing Sync

System Admin

Keep model pricing up to date by syncing from external registries. The sync process detects new models, price changes, and removed models automatically.

LiteLLM Registry

The default pricing source. Fetches from LiteLLM's community-maintained registry on GitHub with real API model names, pricing, context lengths, and capabilities.

Covers ~30 providers. Does not include display names, benchmarks, or generation speed.

PricePerToken

An alternative source from pricepertoken.com. Includes display names, benchmarks (coding and math scores), and generation speed (tokens per second).

Covers ~20 providers. Provides richer metadata than LiteLLM.

Z.AI

An official authenticated catalog for GLM model identifiers, with pricing parsed directly from Z.AI documentation and capability gaps researched there.

Replaces Z.AI entries previously imported from LiteLLM and PricePerToken.

Sync Process

  1. Dry-run preview — See what will change before applying. View new models, price updates, and deactivations.
  2. Source-scoped matching — Each source only affects models from that source. Manual models are never touched.
  3. Stable sync keys — Models are matched by a stable identifier, not by name. You can rename models without breaking sync.
  4. Transactional apply — All changes are applied in a single database transaction for consistency.
  5. Auto-provider creation — If a synced model belongs to an unknown provider, the provider is created automatically.

Model Health Checks

Proactively validate whether models are reachable by running a minimal health check prompt. This catches broken models before users encounter errors during enrichment.

PassModel responds successfully. If it was previously auto-deactivated, it is reactivated.
Not FoundModel returns a “not found” error. It is automatically deactivated to prevent future failures.
Other ErrorAuth errors, timeouts, or rate limits are reported but do not trigger deactivation.

Health checks can be run on all models, a specific provider's models, or a single model. Results stream in real time via SSE with a progress bar showing pass/fail counts.

Auto-Deactivation

When an enrichment call fails with a “model not found” error, the model is automatically deactivated to prevent repeated failures. This happens in real time during normal enrichment operations.

Deactivation ReasonSet ByAuto-Reactivated?
Model Not FoundEnrichment errors or health checksYes (by pricing sync or validation)
Sync RemovedPricing sync (model disappeared)Yes (if model reappears in registry)
ManualAdmin toggle in UINo (manual reactivation only)

Bring Your Own Key (BYOK)

Organizations can configure their own LLM provider API keys for independent billing and usage tracking. The system uses a two-tier key resolution with LRU selection:

1st
Organization Key Pool

Per-organization keys configured in the API Keys page. Supports multiple keys per provider with LRU rotation. Encrypted with Fernet.

2nd
Global Key Pool

System-wide keys managed by administrators. Shared across all organizations. Also supports multiple keys per provider with LRU rotation.

Each enrichment records which key was used, so you can track costs per key. Keys include health check support and usage counters. Within a pool, the enabled key with the oldest last-used timestamp is picked next; a key leaves the rotation only when you disable it by hand, so a provider error never silently removes a key from service. Learn how to manage keys in the API Keys guide.

Import & Export

Export your entire provider and model configuration as JSON for backup or transfer to another instance. Importing is always an upsert: existing providers and models are matched by name and updated in place, while new ones are added — nothing is deleted.

The export includes provider settings, model configurations, pricing, capabilities, and the canonical model specs — but never API keys, which are stored separately. After importing, configure API keys separately. System admins back up the full global catalog; organization owners export and import only their own organization’s providers and models — the shared global catalog can’t be created or edited through import.

Next Steps