{"record":{"id":"b599e4766cf1c40b","repo":"linshenkx/prompt-optimizer","slug":"model-not-support-image2image-b599e4","errorCode":"MODEL_NOT_SUPPORT_IMAGE2IMAGE","errorMessage":"MODEL_NOT_SUPPORT_IMAGE2IMAGE","messagePattern":"MODEL_NOT_SUPPORT_IMAGE2IMAGE","errorType":"error_code","errorClass":"ImageError","httpStatus":null,"severity":"error","filePath":"packages/core/src/services/image/adapters/ollama.ts","lineNumber":135,"sourceCode":"      {\n        name: 'size',\n        labelKey: 'image.params.size.label',\n        descriptionKey: 'image.params.size.description',\n        type: 'string',\n        defaultValue: '1024x1024',\n        allowedValues: ['1024x1024', '1536x1024', '1024x1536', 'auto']\n      }\n    ]\n  }\n\n  protected getDefaultParameterValues(_modelId: string): Record<string, unknown> {\n    return { size: '1024x1024' }\n  }\n\n  protected async doGenerate(request: ImageRequest, config: ImageModelConfig): Promise<ImageResult> {\n    // Ollama image API only supports text-to-image for now.\n    if (request.inputImage) {\n      throw new ImageError(IMAGE_ERROR_CODES.MODEL_NOT_SUPPORT_IMAGE2IMAGE, undefined, { modelName: config.modelId })\n    }\n\n    const merged: Record<string, any> = {\n      ...config.paramOverrides,\n      ...request.paramOverrides\n    }\n\n    const size = typeof merged.size === 'string' && merged.size.trim() ? merged.size : '1024x1024'\n\n    const payload = {\n      model: config.modelId,\n      prompt: request.prompt,\n      size,\n      response_format: 'b64_json'\n    }\n\n    const url = this.resolveEndpointUrl(config, '/images/generations')\n    const rawApiKey = typeof config.connectionConfig?.apiKey === 'string' ? config.connectionConfig.apiKey : ''","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/linshenkx/prompt-optimizer/blob/3e677b1d9f7e0493c142c175560531e7ae786dce/packages/core/src/services/image/adapters/ollama.ts#L117-L153","documentation":"Ollama's image API supports only text-to-image. doGenerate throws MODEL_NOT_SUPPORT_IMAGE2IMAGE (with modelName in metadata) whenever request.inputImage is present.","triggerScenarios":"Calling generate() with an inputImage against an Ollama-backed image model — e.g. an edit workflow routed to Ollama.","commonSituations":"Provider-agnostic UIs that allow attaching input images to any model; users assuming Ollama's OpenAI-compat API covers images/edits like OpenAI's.","solutions":["Drop the input image and use text-to-image with Ollama","Route edit requests to a provider supporting i2i","Check adapter capabilities before offering the edit option"],"exampleFix":"// before\nawait ollamaAdapter.generate({ prompt, inputImage }, config)\n\n// after\nawait ollamaAdapter.generate({ prompt }, config)","handlingStrategy":"validation","validationCode":"if (provider === 'ollama' && request.inputImage) {\n  throw new Error('Ollama image API is text-to-image only')\n}","typeGuard":"function supportsInputImage(provider: string): boolean {\n  return provider !== 'ollama' && provider !== 'modelscope'\n}","tryCatchPattern":"if (request.inputImage && !supportsInputImage(provider))\n  return userError('Image editing not supported for this model')","preventionTips":["Advertise capability flags per provider","Hide edit affordances for t2i-only backends"],"tags":["ollama","image2image","capability-mismatch"],"backgroundTag":"unsupported-image-edit-operation","analyzedSha":"3e677b1d9f7e0493c142c175560531e7ae786dce","analyzedAt":"2026-08-27T21:29:16.709Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}