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.
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)
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.
- Variables list must not be empty.
- Variable at index ${i} has empty name.
- 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.