linshenkx/prompt-optimizer · error · ImageError
MODEL_NOT_SUPPORT_IMAGE2IMAGE
MODEL_NOT_SUPPORT_IMAGE2IMAGE
Error message
MODEL_NOT_SUPPORT_IMAGE2IMAGE
What it means
The ModelScope adapter is text-to-image only. doGenerate explicitly rejects any request containing inputImage with MODEL_NOT_SUPPORT_IMAGE2IMAGE, recording the model name in metadata.
Source
Thrown at packages/core/src/services/image/adapters/modelscope.ts:125
throw new ImageError(IMAGE_ERROR_CODES.UNSUPPORTED_TEST_TYPE, undefined, { testType })
}
protected getParameterDefinitions(_modelId: string): readonly ImageParameterDefinition[] {
return this.getDefaultParameterDefinitions()
}
protected getDefaultParameterValues(_modelId: string): Record<string, unknown> {
return {
size: '1024x1024',
n: 1
}
}
protected async doGenerate(request: ImageRequest, config: ImageModelConfig): Promise<ImageResult> {
// ModelScope 适配器仅支持文生图
if (request.inputImage) {
throw new ImageError(IMAGE_ERROR_CODES.MODEL_NOT_SUPPORT_IMAGE2IMAGE, undefined, { modelName: config.modelId })
}
return await this.generateImage(request, config)
}
private async generateImage(request: ImageRequest, config: ImageModelConfig): Promise<ImageResult> {
const url = this.resolveEndpointUrl(config, '/images/generations')
const merged: Record<string, any> = {
...config.paramOverrides,
...request.paramOverrides
}
const payload = {
model: config.modelId,
prompt: request.prompt,
size: merged.size || '1024x1024',
n: merged.n || request.count || 1View on GitHub (pinned to 3e677b1d9f)
Solutions
- Remove the input image for ModelScope generation — use text-to-image only
- Switch to a provider that supports image2image (e.g. OpenAI/Gemini adapters)
- Check provider capabilities before building the request
Example fix
// before
await adapter.generate({ prompt, inputImage: { b64 } }, config)
// after
await adapter.generate({ prompt }, config) // ModelScope: t2i only Defensive patterns
Strategy: validation
Validate before calling
if (provider === 'modelscope' && request.inputImage) {
throw new Error('ModelScope supports text-to-image only; remove inputImage')
} Type guard
function supportsImage2Image(provider: string): boolean {
return ['openai', 'gemini'].includes(provider)
} Try / catch
if (request.inputImage && !supportsImage2Image(provider)) {
return errorToUser('This model cannot edit images')
} Prevention
- Expose capability flags per adapter in the UI
- Disable attach-image controls for t2i-only providers
When it happens
Trigger: Calling generate() with a request whose inputImage is set (image edit / image-to-image) while the configured provider is ModelScope.
Common situations: A provider-agnostic UI lets users attach an input image to every model; ModelScope models then fail. Also selecting a ModelScope model for an edit workflow.
Related errors
AI-assisted analysis of linshenkx/prompt-optimizer@3e677b1d9f (2026-08-27).
Data as JSON: /api/errors/37d9639241c868c9.
Report an issue: GitHub.