zylon-ai/private-gpt · error · ValueError

RemoteTokenizeTokenizer is not available with the given conf

Error message

RemoteTokenizeTokenizer is not available with the given configuration.

What it means

Raised by the tokenizer registry's _build_remote_tokenizer factory when RemoteTokenizeTokenizer.is_available(**kwargs) returns False. The registry only constructs a remote tokenizer after an availability probe succeeds, so this error means the configuration passed to get_tokenizer (e.g. tokenizer mode 'remote_tokenize') is incomplete for remote operation — typically a missing or malformed endpoint URL or API key. It is a configuration-time ValueError thrown before any network call is made.

Source

Thrown at private_gpt/components/llm/tokenizers/registry.py:48


def _build_tiktoken_tokenizer(**kwargs: Any) -> TokenizerBase:
    from private_gpt.components.llm.tokenizers.tiktoken import TikTokenTokenizer

    return TikTokenTokenizer.from_pretrained(**kwargs)


def _build_estimator_tokenizer(**kwargs: Any) -> TokenizerBase:
    from private_gpt.components.llm.tokenizers.estimator import EstimatorTokenizer

    return EstimatorTokenizer.from_pretrained(**kwargs)


def _build_remote_tokenizer(**kwargs: Any) -> TokenizerBase:
    from private_gpt.components.llm.tokenizers.remote import RemoteTokenizeTokenizer

    if not RemoteTokenizeTokenizer.is_available(**kwargs):
        raise ValueError(
            "RemoteTokenizeTokenizer is not available with the given configuration."
        )

    return RemoteTokenizeTokenizer.from_pretrained(**kwargs)


def _build_huggingface_tokenizer(**kwargs: Any) -> TokenizerBase:
    from private_gpt.components.llm.tokenizers.huggingface import HuggingFaceTokenizer

    if not HuggingFaceTokenizer.is_available(**kwargs):
        raise ImportError(
            "HuggingFaceTokenizer is not available with the given configuration."
        )

    return HuggingFaceTokenizer.from_pretrained(**kwargs)


def _build_default_tokenizer(**kwargs: Any) -> TokenizerBase:

View on GitHub (pinned to 4a030776a3)

Solutions

  1. Set the remote tokenizer endpoint (and API key if required) in your settings/profile so RemoteTokenizeTokenizer.is_available(**kwargs) returns True.
  2. Call RemoteTokenizeTokenizer.is_available(**kwargs) directly before get_tokenizer to confirm which config field is failing.
  3. If no remote service is intended, switch tokenizer_mode to a local mode ('huggingface', 'tiktoken', 'estimator') or omit it to use the default chain.
  4. Verify the remote tokenizer service is running and reachable from the app host (URL scheme, port, TLS).

Example fix

# before
tokenizer = get_tokenizer('remote_tokenize')  # ValueError: not available

# after
settings.tokenizer_remote.url = 'http://localhost:8000'
assert RemoteTokenizeTokenizer.is_available()
tokenizer = get_tokenizer('remote_tokenize')
Defensive patterns

Strategy: validation

Validate before calling

from private_gpt.components.llm.tokenizers.remote import RemoteTokenizeTokenizer

ok = RemoteTokenizeTokenizer.is_available(**tokenizer_kwargs)
if not ok:
    # fix config (url/api key) before requesting the tokenizer
    ...

Try / catch

try:
    tok = get_tokenizer('remote_tokenize', **kwargs)
except ValueError as e:
    if 'not available' in str(e):
        tok = get_tokenizer('estimator')  # deliberate fallback mode
    else:
        raise

Prevention

When it happens

Trigger: Calling get_tokenizer('remote_tokenize', ...) (or any externally registered mode that maps to this factory) with kwargs where is_available() fails: no remote tokenizer base_url/endpoint configured, missing API key for a key-protected tokenizer service, or an unreachable/misformatted URL during the availability check.

Common situations: Deploying private-gpt with llm.tokenizer_mode=remote_tokenize in settings but forgetting the tokenizer server URL; rotating/removing the API key so the availability probe fails; pointing at a tokenizer service that is down at startup.

Related errors


AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15). Data as JSON: /api/errors/f06208d9f085e071. Report an issue: GitHub.