{"record":{"id":"78f853c8583715ec","repo":"deepseek-ai/deepseek-harness","slug":"unsupported-content-78f853","errorCode":"UNSUPPORTED_CONTENT","errorMessage":"DeepSeek model \"${options.model}\" does not accept image input.","messagePattern":"DeepSeek model \"(.+?)\" does not accept image input\\.","errorType":"error_code","errorClass":"LlmError","httpStatus":null,"severity":"error","filePath":"packages/llm/llm-deepseek/src/adapter.ts","lineNumber":447,"sourceCode":"  stream(options: GenerateOptions): AsyncIterable<StreamChunk> {\n    return this.streamWithConnection(options, this.config.options())\n  }\n\n  private async * streamWithConnection(\n    options: GenerateOptions,\n    connection: DeepSeekConnectionOptions,\n  ): AsyncIterable<StreamChunk> {\n    // One resolution per stream call: connection facts and the credential\n    // freeze here and hold for this whole request, so an in-flight stream\n    // never observes a configuration change and the next call re-resolves.\n    // The key resolves *from this snapshot*, so an endpoint and the secret\n    // sent to it can never come from different configuration generations.\n    const hasImages = options.messages.some(message => contentHasImage(message.content))\n    let attachments: AttachmentStore | undefined\n    if (hasImages) {\n      const model = connection.models.find(entry => entry.id === options.model)\n      if (model?.inputModalities?.includes('image') !== true) {\n        throw new LlmError(\n          `DeepSeek model \"${options.model}\" does not accept image input.`,\n          'UNSUPPORTED_CONTENT',\n        )\n      }\n      attachments = this.config.resolveAttachments?.()\n      if (attachments === undefined) {\n        throw new LlmError(\n          'DeepSeek image conversion requires the durable attachment service.',\n          'UNSUPPORTED_CONTENT',\n        )\n      }\n    }\n    const apiKey = await this.config.resolveApiKey(connection)\n    const userId = this.config.resolveUserId()\n    const consumer = new AbortController()\n    const upstream = options.signal === undefined\n      ? consumer.signal\n      : AbortSignal.any([options.signal, consumer.signal])","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-deepseek/src/adapter.ts#L429-L465","documentation":"Error \"DeepSeek model \"${options.model}\" does not accept image input.\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/llm/llm-deepseek/src/adapter.ts:447 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove image content from the request or switch to a DeepSeek model that accepts image input."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}