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
- Go to Settings -> Model Provider and configure a valid embedding provider (e.g., OpenAI, local inference) for the tenant.
- Update the dataset's embedding_model_provider/embedding_model to a configured provider via the dataset settings.
- 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
- Configure at least one embedding provider during tenant setup, before creating high_quality datasets.
- Verify provider status before segment enable/disable on high_quality datasets.
- Keep dataset.embedding_model_provider aligned with an active provider.
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
- embedding model and embedding model provider are required fo
- not_found
- ${name} must be a non-empty array
- Data source binding not found.
- Data source is not disabled.
AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12).
Data as JSON: /api/errors/ace2bc05a7e7b6e0.
Report an issue: GitHub.