langgenius/dify · error · ProviderNotInitializeError

provider_not_initialize

provider_not_initialize

Error message

No Embedding Model available. Please configure a valid provider in the Settings -> Model Provider.

What it means

ProviderNotInitializeError (provider_not_initialize, HTTP 400) at datasets_segments.py:385, raised when ModelManager.get_model_instance throws LLMBadRequestError while resolving the dataset's embedding model during the high_quality branch of the segment enable/disable handler. It signals that no usable embedding model provider is configured for the tenant, so vector operations cannot proceed.

Source

Thrown at api/controllers/console/datasets/datasets_segments.py:385

        if not current_user.is_dataset_editor:
            raise Forbidden()

        try:
            DatasetService.check_dataset_permission(dataset, current_user, session)
        except services.errors.account.NoPermissionError as e:
            raise Forbidden(str(e))
        if dataset.indexing_technique == IndexTechniqueType.HIGH_QUALITY:
            # check embedding model setting
            try:
                model_manager = ModelManager.for_tenant(tenant_id=current_tenant_id)
                model_manager.get_model_instance(
                    tenant_id=current_tenant_id,
                    provider=dataset.embedding_model_provider,
                    model_type=ModelType.TEXT_EMBEDDING,
                    model=dataset.embedding_model,
                )
            except LLMBadRequestError:
                raise ProviderNotInitializeError(
                    "No Embedding Model available. Please configure a valid provider in the Settings -> Model Provider."
                )
            except ProviderTokenNotInitError as ex:
                raise ProviderNotInitializeError(ex.description)
        segment_ids = request.args.getlist("segment_id")

        document_indexing_cache_key = f"document_{document.id}_indexing"
        cache_result = redis_client.get(document_indexing_cache_key)
        if cache_result is not None:
            raise InvalidActionError("Document is being indexed, please try again later")
        try:
            SegmentService.update_segments_status(segment_ids, action, dataset, document, session)
        except Exception as e:
            raise InvalidActionError(str(e))
        return SimpleResultResponse(result="success").model_dump(mode="json"), 200


@console_ns.route("/datasets/<uuid:dataset_id>/documents/<uuid:document_id>/segment")

View on GitHub (pinned to ef8544b173)

Solutions

  1. Go to Settings -> Model Provider and configure a valid embedding provider (e.g., OpenAI, local inference) for the tenant.
  2. Update the dataset's embedding_model_provider/embedding_model to a configured provider via the dataset settings.
  3. Verify the provider is enabled and its credentials pass a test call before retrying the segment action.

Example fix

# before
client.patch(f'/datasets/{dataset_id}/documents/{document_id}/segment/enable')

# after
providers = client.get('/workspaces/current/model-providers').json()
embedding_ok = any(p['status'] == 'active' for p in providers if p['model_type'] == 'text-embedding')
if not embedding_ok:
    raise RuntimeError('configure an embedding provider first')
client.patch(f'/datasets/{dataset_id}/documents/{document_id}/segment/enable')
Defensive patterns

Strategy: validation

Validate before calling

providers = client.get('/console/api/workspaces/current/model-providers').json()
embedding_ok = any(p.get('status') == 'active' for p in providers if 'text-embedding' in p.get('model_type', ''))
if not embedding_ok:
    raise RuntimeError('configure an active embedding provider before toggling segments on a high_quality dataset')

Type guard

def has_active_embedding_provider(providers: list[dict]) -> bool:
    return any(p.get('status') == 'active' and 'text-embedding' in p.get('model_type', '') for p in providers)

Try / catch

try:
    client.patch(f'/datasets/{dataset_id}/documents/{document_id}/segment/enable')
except HTTPError as e:
    if e.response.status_code == 400 and 'provider_not_initialize' in e.response.text:
        # configure provider in Settings -> Model Provider, then retry once
        ...

Prevention

When it happens

Trigger: PATCH segment/enable|disable on a high_quality dataset when the tenant has not configured any embedding provider, or the configured provider/model is invalid/unavailable. The dataset references dataset.embedding_model_provider/embedding_model which ModelManager cannot instantiate.

Common situations: Fresh install with no model provider set up; provider credentials expired or removed; dataset's embedding_model_provider points to a provider the tenant never configured; provider plugin disabled after dataset creation.

Related errors


AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12). Data as JSON: /api/errors/ace2bc05a7e7b6e0. Report an issue: GitHub.