langgenius/dify · error · ProviderNotInitializeError

provider_not_initialize

provider_not_initialize

Error message

ex.description

What it means

ProviderNotInitializeError (HTTP 400, code provider_not_initialize) raised in DatasetDocumentListApi.post when DocumentService.save_document_with_dataset_id raises ProviderTokenNotInitError — the model provider needed for embedding (or LLM for QA/QA-summary mode) has no valid credentials initialised. The original ex.description is forwarded as the error detail.

Source

Thrown at api/controllers/console/datasets/datasets_document.py:569

        except services.errors.account.NoPermissionError as e:
            raise Forbidden(str(e))

        knowledge_config = KnowledgeConfig.model_validate(console_ns.payload or {})

        if not dataset.indexing_technique and not knowledge_config.indexing_technique:
            raise ValueError("indexing_technique is required.")

        # validate args
        DocumentService.document_create_args_validate(knowledge_config)

        try:
            documents, batch = DocumentService.save_document_with_dataset_id(
                dataset, knowledge_config, current_user, session=session
            )
            dataset = DatasetService.get_dataset(dataset_id_str, session)

        except ProviderTokenNotInitError as ex:
            raise ProviderNotInitializeError(ex.description)
        except QuotaExceededError:
            raise ProviderQuotaExceededError()
        except ModelCurrentlyNotSupportError:
            raise ProviderModelCurrentlyNotSupportError()

        return dump_response(
            DatasetAndDocumentResponse,
            {"dataset": dataset, "documents": document_responses(documents, session=session), "batch": batch},
        )

    @setup_required
    @login_required
    @account_initialization_required
    @console_ns.response(204, "Documents deleted successfully")
    @with_current_user
    @with_current_tenant_id
    @rbac_permission_required(RBACResourceScope.DATASET, RBACPermission.DATASET_EDIT)
    @with_session

View on GitHub (pinned to ef8544b173)

Solutions

  1. In Settings -> Model Provider, configure valid credentials for the embedding model provider the dataset references.
  2. If the dataset points at a removed provider, update dataset.embedding_model_provider / embedding_model to an available one.
  3. Restart the worker/API after changing provider env vars so credentials are picked up.
  4. Verify the provider plugin is installed and enabled when using plugin-based providers.

Example fix

// before
POST /console/api/datasets/<id>/documents { ..., indexing_technique: 'high_quality' }
  →  400 provider_not_initialize

// after — configure embedding provider, then retry
// Settings → Model Provider → add OpenAI key + embedding model
POST /console/api/datasets/<id>/documents { ..., indexing_technique: 'high_quality' }  // 200
Defensive patterns

Strategy: validation

Validate before calling

from core.model_manager import ModelManager
from graphon.model_runtime.entities.model_entities import ModelType
from core.errors.error import ProviderTokenNotInitError

def embedding_provider_ready(tenant_id: str, provider: str, model: str) -> bool:
    if not provider:
        return False
    try:
        mm = ModelManager.for_tenant(tenant_id=tenant_id)
        mm.get_model_instance(
            tenant_id=tenant_id, provider=provider, model_type=ModelType.TEXT_EMBEDDING, model=model or "",
        )
        return True
    except ProviderTokenNotInitError:
        return False
    except Exception:
        return False

if not embedding_provider_ready(tenant_id, dataset.embedding_model_provider, dataset.embedding_model or ""):
    return error("Configure the embedding provider before uploading.")

Type guard

def has_initialised_embedding_provider(tenant_id: str, provider: str, model: str) -> bool:
    """True only when the provider has usable credentials for the model."""
    return embedding_provider_ready(tenant_id, provider, model)

Try / catch

from core.errors.error import ProviderTokenNotInitError
from controllers.console.app.error import ProviderNotInitializeError

try:
    documents, batch = DocumentService.save_document_with_dataset_id(
        dataset, knowledge_config, current_user, session=session
    )
except ProviderTokenNotInitError as ex:
    raise ProviderNotInitializeError(ex.description)

Prevention

When it happens

Trigger: POST /console/api/datasets/<dataset_id>/documents during the save/indexing step when the embedding model provider (or the LLM provider for parent/child or QA splitting) is not configured or its token is invalid. The dataset may have an embedding_model_provider set, but the provider row has no usable credential.

Common situations: First upload to a high_quality dataset before configuring any embedding provider in Settings -> Model Provider; provider credentials revoked/expired after the dataset was created; the provider plugin (e.g. a custom connector) was uninstalled; env vars for the provider missing in self-hosted deployments.

Related errors


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