linshenkx/prompt-optimizer · error · VariableValueGenerationValidationError
Generation model key must not be empty.
Error message
Generation model key must not be empty.
What it means
generate() requires a non-empty generationModelKey identifying which configured model to use for value generation. validateRequest throws VariableValueGenerationValidationError when the key is missing or whitespace, because there is no model to invoke.
Solutions
- Pass a valid model key that is registered in the model manager (verify with modelManager.getModel(key))
- Default the key from your app's settings before calling generate
- Check for property-name mismatches after upgrading the library's request type
Example fix
// before
await gen.generate({ promptContent, variables, generationModelKey: selectedModel?.key }); // may be undefined
// after
const key = selectedModel?.key ?? DEFAULT_GENERATION_MODEL_KEY;
if (!key) throw new Error('Select a generation model first');
await gen.generate({ promptContent, variables, generationModelKey: key }); Defensive patterns
Strategy: validation
Validate before calling
if (!req.generationModelKey?.trim()) throw new Error('generationModelKey required');
const model = await modelManager.getModel(req.generationModelKey);
if (!model) throw new Error('unknown model key'); Type guard
const hasModelKey = (r: VariableValueGenerationRequest) => typeof r.generationModelKey === 'string' && r.generationModelKey.trim().length > 0;
Try / catch
catch (e) { if (e instanceof VariableValueGenerationValidationError && /model key/i.test(e.message)) return promptModelSelection(); throw e; } Prevention
- Default the model key from app settings; never pass optional-chained values straight into generate()
- Verify the key exists in the model manager during app startup
When it happens
Trigger: generate({ promptContent: '...', generationModelKey: '', variables: [...] }) or the key is undefined because the request object was built without it.
Common situations: Model selection dropdown defaulting to empty in the UI; key read from settings/config that was never persisted; property renamed (model vs generationModelKey) after a library upgrade; passing the model object instead of its key.
Related errors
- Prompt content must not be empty.
- Variable at index has empty name.
- Variables list must not be empty.
- VariableValueGenerationModelError(modelKey)
- Data must be an object
AI-assisted analysis of linshenkx/prompt-optimizer@3e677b1d9f (2026-08-27).
Data as JSON: /api/errors/135c6e65ff104e06.
Report an issue: GitHub.
Appendix: source
Thrown at packages/core/src/services/variable-value-generation/service.ts:81
} catch (error) {
// 🔧 修复:保留原始错误类型,不要过度包装
if (error instanceof VariableValueGenerationError) {
throw error;
}
throw new VariableValueGenerationExecutionError(error instanceof Error ? error.message : String(error))
}
}
/**
* 验证请求参数
*/
private validateRequest(request: VariableValueGenerationRequest): void {
if (!request.promptContent?.trim()) {
throw new VariableValueGenerationValidationError('Prompt content must not be empty.');
}
if (!request.generationModelKey?.trim()) {
throw new VariableValueGenerationValidationError('Generation model key must not be empty.');
}
if (!request.variables || request.variables.length === 0) {
throw new VariableValueGenerationValidationError('Variables list must not be empty.');
}
// 验证每个变量
for (let i = 0; i < request.variables.length; i++) {
const variable = request.variables[i];
if (!variable.name?.trim()) {
throw new VariableValueGenerationValidationError(`Variable at index ${i} has empty name.`);
}
}
}
/**
* 验证模型是否存在
*/View on GitHub (pinned to 3e677b1d9f)