























@@ -183,20 +183,33 @@ function resolveOutputMime(outputFormat?: ImageGenerationOutputFormat): {
183183return { mimeType: DEFAULT_OUTPUT_MIME, extension: DEFAULT_OUTPUT_EXTENSION };
184184}
185185186+type OpenAIImageRequest = Parameters<ImageGenerationProvider["generateImage"]>[0];
187+type OpenAIImageOptions = NonNullable<OpenAIImageRequest["providerOptions"]>["openai"];
188+189+function resolveOpenAIImageOutputCompression(
190+req: OpenAIImageRequest,
191+openai: OpenAIImageOptions,
192+): number | undefined {
193+if (openai?.outputCompression === undefined) {
194+return undefined;
195+}
196+const outputFormat = req.outputFormat ?? "png";
197+return outputFormat === "jpeg" || outputFormat === "webp" ? openai.outputCompression : undefined;
198+}
199+186200function appendOpenAIImageOptions(
187201target: Record<string, unknown> | FormData,
188202req: Parameters<ImageGenerationProvider["generateImage"]>[0],
189203): void {
190204const openai = req.providerOptions?.openai;
191205const background = openai?.background ?? req.background;
206+const outputCompression = resolveOpenAIImageOutputCompression(req, openai);
192207const entries: Record<string, unknown> = {
193208 ...(req.quality !== undefined ? { quality: req.quality } : {}),
194209 ...(req.outputFormat !== undefined ? { output_format: req.outputFormat } : {}),
195210 ...(background !== undefined ? { background } : {}),
196211 ...(openai?.moderation !== undefined ? { moderation: openai.moderation } : {}),
197- ...(openai?.outputCompression !== undefined
198- ? { output_compression: openai.outputCompression }
199- : {}),
212+ ...(outputCompression !== undefined ? { output_compression: outputCompression } : {}),
200213 ...(openai?.user !== undefined ? { user: openai.user } : {}),
201214};
202215for (const [key, value] of Object.entries(entries)) {
@@ -637,6 +650,7 @@ async function generateOpenAICodexImage(params: {
637650const timeoutMs = resolveOpenAIImageTimeoutMs(req.timeoutMs);
638651const openai = req.providerOptions?.openai;
639652const background = openai?.background ?? req.background;
653+const outputCompression = resolveOpenAIImageOutputCompression(req, openai);
640654headers.set("Content-Type", "application/json");
641655const content: Array<Record<string, unknown>> = [
642656{ type: "input_text", text: req.prompt },
@@ -668,9 +682,7 @@ async function generateOpenAICodexImage(params: {
668682 ...(req.quality !== undefined ? { quality: req.quality } : {}),
669683 ...(req.outputFormat !== undefined ? { output_format: req.outputFormat } : {}),
670684 ...(background !== undefined ? { background } : {}),
671- ...(openai?.outputCompression !== undefined
672- ? { output_compression: openai.outputCompression }
673- : {}),
685+ ...(outputCompression !== undefined ? { output_compression: outputCompression } : {}),
674686},
675687],
676688tool_choice: { type: "image_generation" },
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。