[
https://issues.apache.org/jira/browse/CAMEL-23967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-23967:
--------------------------------
Fix Version/s: 4.23.0
> camel-openai: add image generation and edit operations
> ------------------------------------------------------
>
> Key: CAMEL-23967
> URL: https://issues.apache.org/jira/browse/CAMEL-23967
> Project: Camel
> Issue Type: New Feature
> Components: camel-openai
> Affects Versions: 4.21.0
> Reporter: Federico Mariani
> Priority: Minor
> Labels: ai
> Fix For: 4.23.0
>
>
> The pinned SDK (4.41.0) exposes {{images().generate(...)}},
> {{images().edit(...)}} and {{images().createVariation(...)}} (plus streaming
> variants), none of which are reachable from camel-openai. Image generation is
> a common integration step (product imagery pipelines, notification
> enrichment) that chains naturally into Camel's file/storage/messaging
> components.
> Proposal: new operation {{openai:image-generation}} (and optionally
> {{image-edit}}):
> * body: prompt String (edit: image file/byte[] with prompt via option/header,
> reusing the vision-input body handling and {{MimeTypeHelper}});
> * options/headers: {{imageModel}} (e.g. {{gpt-image-1}}), {{imageSize}},
> {{imageQuality}}, {{imageResponseFormat}} (b64_json/url), {{imageCount}};
> * output: {{byte[]}} body for a single b64 image, {{List<byte[]>}} or URLs
> for multiple; response metadata via headers and {{storeFullResponse}}.
> Intended usage:
> {code:java}
> // generate a product image from a description and store it
> from("direct:product-image")
> .setBody(simple("Studio photo of ${header.productName} on a white
> background"))
> .to("openai:image-generation?imageModel=gpt-image-1&imageSize=1024x1024")
> .to("file:target/images?fileName=${header.productName}.png");
> // edit an existing image coming from S3
> from("aws2-s3:marketing-assets")
> .setHeader(OpenAIConstants.USER_MESSAGE, constant("Add a red SALE banner
> in the top-right corner"))
> .to("openai:image-edit?imageModel=gpt-image-1")
> .to("aws2-s3:marketing-assets-processed");
> {code}
> Variations can be a follow-up. Skip suggestion for the same review:
> {{videos()}} and {{containers()}} services — too niche for now.
> Testing note: unit tests should extend {{camel-test-infra-openai-mock}} with
> an image-generation expectation (e.g.
> {{whenImageGeneration()}}/{{replyWithImage(byte[])}} serving a {{b64_json}}
> payload), like the existing embeddings/transcription mocking — no real model
> or GPU needed. No mainstream local OpenAI-compatible image backend is
> CI-suitable today (Ollama's image generation is experimental, macOS-only and
> has no OpenAI-compatible endpoint; LocalAI works but is heavyweight and
> amd64-oriented, so an optional IT would need
> {{skipITs.ppc64le}}/{{skipITs.s390x}}).
> _This issue was drafted by Claude Code on behalf of Federico Mariani_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)