siyuan-note/siyuan · error
image model is not configured
Error message
image model is not configured
What it means
Returned by validateImageModel when Conf.AI.GetImageGenerationModel() returned nil provider or nil model. GetImageGenerationModel returns nil,nil if AI.ImageGeneration is nil, if ImageGeneration.ModelID is empty, or if GetModel cannot find the referenced model in any provider. The image-generation feature therefore has no target model configured.
Source
Thrown at kernel/model/assets.go:481
return GenerateDocumentImageResult{
Artifact: ImageArtifactRef{
Kind: "image", Path: assetPath, MIMEType: generated.MIMEType, DocumentID: bt.RootID,
},
RevisedPrompt: generated.RevisedPrompt,
}, nil
}
func resolveMultimodalDocument(documentID string) (*treenode.BlockTree, error) {
bt := treenode.GetBlockTree(strings.TrimSpace(documentID))
if bt == nil {
return nil, errors.New("document not found: " + documentID)
}
return bt, nil
}
func validateImageModel(provider *conf.Provider, imageModel *conf.Model) error {
if provider == nil || imageModel == nil {
return errors.New("image model is not configured")
}
if provider.Protocol != "" && provider.Protocol != "openai" {
return fmt.Errorf("unsupported multimodal provider protocol: %s", provider.Protocol)
}
return nil
}
func documentReferencesImage(rootID, assetPath string) bool {
paths, err := DocImageAssets(rootID)
if err != nil {
return false
}
wanted := AssetPathWithoutQuery(assetPath)
for _, current := range paths {
if AssetPathWithoutQuery(current) == wanted {
return true
}
}View on GitHub (pinned to 251596fc0d)
Solutions
- Open Settings - AI - Image generation and select a model, or set Conf.AI.ImageGeneration.ModelID programmatically.
- Ensure the chosen model belongs to an enabled provider and is itself enabled.
- Run ReconcileModelIDs to clean stale references, then pick a fresh model.
Example fix
// before
res, err := model.GenerateImage(ctx, req)
// after — verify a model is configured first
if p, m := model.Conf.AI.GetImageGenerationModel(); p == nil || m == nil {
return errors.New("no image-generation model configured")
}
res, err := model.GenerateImage(ctx, req) Defensive patterns
Strategy: validation
Validate before calling
if p, m := model.Conf.AI.GetImageGenerationModel(); p == nil || m == nil {
return errors.New("no image-generation model configured")
} Prevention
- Require an image-generation model selection in settings before enabling the feature.
- Run ReconcileModelIDs after provider/model edits to clear stale references.
- Disable the UI entry point when no model is configured.
When it happens
Trigger: Conf.AI.ImageGeneration.ModelID is unset; the referenced model ID no longer exists in any provider (deleted by the user); ImageGeneration block is missing from conf.json; the provider containing the model was disabled.
Common situations: User never selected an image-generation model in settings; a conf.json edit removed the model; the model's parent provider was toggled off; a conf migration reset ImageGeneration.ModelID.
Related errors
- no AI provider configured
- no AI editing config
- AI configuration is unavailable
- unsupported multimodal provider protocol: %s
- unsupported server type: %s
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/be871133f0768e14.
Report an issue: GitHub.