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_sessionView on GitHub (pinned to ef8544b173)
Solutions
- In Settings -> Model Provider, configure valid credentials for the embedding model provider the dataset references.
- If the dataset points at a removed provider, update dataset.embedding_model_provider / embedding_model to an available one.
- Restart the worker/API after changing provider env vars so credentials are picked up.
- 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
- Run a pre-flight embedding-provider check before the first high_quality upload.
- Keep dataset.embedding_model_provider / embedding_model in sync with the configured providers after any provider change.
- After uninstalling a provider plugin, sweep datasets referencing it and rebind them.
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
- provider_not_initialize
- model_currently_not_support
- server_4xx_other
- provider_quota_exceeded
- provider_not_support_speech_to_text
AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12).
Data as JSON: /api/errors/3b445f88d7dcb843.
Report an issue: GitHub.