siyuan-note/siyuan · error
prompt is required for image generation
Error message
prompt is required for image generation
What it means
GenerateImage requires a non-empty prompt. It trims the request's Prompt with strings.TrimSpace and, if nothing remains after the configured model validation passes, returns "prompt is required for image generation". The prompt is what is forwarded verbatim to the OpenAI-compatible image adapter.
Solutions
- Provide a non-empty Prompt field in GenerateImageRequest
- Trim and validate the prompt in the caller before constructing the request
- If the prompt comes from user input, disable the generate action until input is non-blank
Example fix
// before
req := model.GenerateImageRequest{Size: "1024x1024"}
// after
prompt := strings.TrimSpace(userInput)
if prompt == "" { return errors.New("prompt required") }
req := model.GenerateImageRequest{Prompt: prompt, Size: "1024x1024"} Defensive patterns
Strategy: validation
Validate before calling
prompt := strings.TrimSpace(rawPrompt)
if prompt == "" {
return errors.New("image prompt must be non-empty")
} Try / catch
res, err := model.GenerateImage(ctx, model.GenerateImageRequest{Prompt: prompt})
if err != nil && strings.Contains(err.Error(), "prompt is required") {
// surface 'prompt required' to the user instead of retrying
} Prevention
- Validate prompt non-blank at the UI layer before enabling the generate action
- Check template substitutions for empty output
- Trim whitespace before constructing GenerateImageRequest
When it happens
Trigger: Calling GenerateImage or GenerateDocumentImage with request.Prompt set to "", whitespace only, or left as the zero value of the struct.
Common situations: An agent pipeline passing an empty user instruction to image generation; UI code submitting the generate dialog before the prompt field is filled; a template substitution that produced an empty/whitespace string.
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- AI editor action must not be empty
- AI editor input is empty
- assetPath is required for analyze
- capability validator unavailable
- capability was not exposed in this model round
AI-assisted analysis of siyuan-note/siyuan@9f775e8a12 (2026-09-19).
Data as JSON: /api/errors/7c7c94e9f79f9c94.
Report an issue: GitHub.
Appendix: source
Thrown at kernel/model/assets.go:531
Artifact: ImageArtifactRef{Kind: "image", Path: relativePath},
Data: prepared.Data,
MIMEType: prepared.MIMEType,
Prepared: prepared,
}, nil
}
// GenerateImage 使用全局图片生成配置创建图片字节,可供文档资源、编辑器和其他图片入口复用。
func GenerateImage(ctx context.Context, request GenerateImageRequest) (GenerateImageResult, error) {
if Conf == nil || Conf.AI == nil {
return GenerateImageResult{}, errors.New("AI configuration is unavailable")
}
provider, generationModel := Conf.AI.GetImageGenerationModel()
if err := validateImageModel(provider, generationModel); err != nil {
return GenerateImageResult{}, err
}
prompt := strings.TrimSpace(request.Prompt)
if prompt == "" {
return GenerateImageResult{}, errors.New("prompt is required for image generation")
}
size := multimodalValueOrDefault(request.Size, Conf.AI.ImageGeneration.Size)
quality := multimodalValueOrDefault(request.Quality, Conf.AI.ImageGeneration.Quality)
outputFormat := strings.ToLower(multimodalValueOrDefault(request.OutputFormat, Conf.AI.ImageGeneration.OutputFormat))
if outputFormat != "png" && outputFormat != "jpeg" && outputFormat != "webp" {
return GenerateImageResult{}, errors.New("unsupported image output format")
}
generated, err := util.NewOpenAIImageAdapter(
provider.APIKey, provider.BaseURL, generationModel.Name, Conf.AI.ImageGeneration.RequestTimeout, ResolveAIProviderHeaders(provider),
).Generate(ctx, util.GenerateImageRequest{
Prompt: prompt, Size: size, Quality: quality, OutputFormat: outputFormat,
})
if err != nil {
return GenerateImageResult{}, markImageExecutionUnknown(fmt.Errorf("generate image failed: %w", err))
}
if ctx.Err() != nil {
return GenerateImageResult{}, markImageExecutionUnknown(errors.New("image generation was cancelled"))
}View on GitHub (pinned to 9f775e8a12)