diff --git a/web/default/src/features/image-playground/index.tsx b/web/default/src/features/image-playground/index.tsx
index 2496c61e1..40fa6a5bd 100644
--- a/web/default/src/features/image-playground/index.tsx
+++ b/web/default/src/features/image-playground/index.tsx
@@ -33,6 +33,7 @@ import {
} from './types'
import type {
GeneratedImage,
+ GeneratedImageParams,
GroupOption,
ImagePlaygroundConfig,
ModelOption,
@@ -295,6 +296,15 @@ export function ImagePlayground() {
}
const durationMs = performance.now() - startTimeRef.current
+ const generationParams = {
+ prompt: prompt.trim(),
+ model: config.model,
+ group: config.group,
+ size: config.size,
+ quality: config.quality,
+ style: config.style,
+ n: generationCount,
+ }
const newImages: GeneratedImage[] = (response.data || []).map(
(item, index) => ({
id: pendingImages[index]?.id || `${Date.now()}-${index}`,
@@ -303,7 +313,7 @@ export function ImagePlayground() {
(item.b64_json
? `data:image/png;base64,${item.b64_json}`
: ''),
- prompt: prompt.trim(),
+ params: generationParams,
revisedPrompt: item.revised_prompt,
status: 'success' as const,
durationMs,
@@ -390,6 +400,15 @@ export function ImagePlayground() {
if (response.data && response.data.length > 0) {
const item = response.data[0]
+ const retryParams = {
+ prompt: prompt.trim(),
+ model: config.model,
+ group: config.group,
+ size: config.size,
+ quality: config.quality,
+ style: config.style,
+ n: 1,
+ }
setImages((prev) =>
prev.map((img) =>
img.id === id
@@ -400,7 +419,7 @@ export function ImagePlayground() {
(item.b64_json
? `data:image/png;base64,${item.b64_json}`
: ''),
- prompt: prompt.trim(),
+ params: retryParams,
revisedPrompt: item.revised_prompt,
status: 'success' as const,
durationMs,
@@ -441,6 +460,19 @@ export function ImagePlayground() {
setImages((prev) => prev.filter((img) => img.status !== 'failed'))
}, [])
+ const handleFillParams = useCallback((params: GeneratedImageParams) => {
+ setPrompt(params.prompt)
+ setConfig((prev) => ({
+ ...prev,
+ model: params.model,
+ group: params.group,
+ size: params.size,
+ quality: params.quality,
+ style: params.style,
+ n: params.n,
+ }))
+ }, [])
+
return (
{/* Header */}
@@ -573,6 +605,7 @@ export function ImagePlayground() {
onDeleteImage={handleDeleteImage}
onClearAll={handleClearAll}
onClearFailed={handleClearFailed}
+ onFillParams={handleFillParams}
/>
diff --git a/web/default/src/features/image-playground/types.ts b/web/default/src/features/image-playground/types.ts
index db9d99de5..92de39bc0 100644
--- a/web/default/src/features/image-playground/types.ts
+++ b/web/default/src/features/image-playground/types.ts
@@ -29,10 +29,20 @@ export interface ImageGenerationResponse {
export type GeneratedImageStatus = 'pending' | 'success' | 'failed'
+export interface GeneratedImageParams {
+ prompt: string
+ model: string
+ group: string
+ size: string
+ quality: string
+ style: string
+ n: number
+}
+
export interface GeneratedImage {
id: string
url: string
- prompt?: string
+ params?: GeneratedImageParams
revisedPrompt?: string
width?: number
height?: number
diff --git a/web/default/src/i18n/locales/zh.json b/web/default/src/i18n/locales/zh.json
index 133c4b4d9..16e04db64 100644
--- a/web/default/src/i18n/locales/zh.json
+++ b/web/default/src/i18n/locales/zh.json
@@ -4900,6 +4900,9 @@
"Upload": "上传",
"Ref": "参考",
"Remove": "移除",
- "Click or drag to upload reference images": "点击或拖拽上传参考图"
+ "Click or drag to upload reference images": "点击或拖拽上传参考图",
+ "Generation Parameters": "生成参数",
+ "Reuse parameters": "填入参数",
+ "Revised Prompt": "修订提示词"
}
}