Update app.py
Browse files
app.py
CHANGED
@@ -101,9 +101,6 @@ def preprocess_prompt(prompt, image1, image2, image3):
|
|
101 |
else:
|
102 |
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์์ ๋ชจ๋ ํ
์คํธ๋ฅผ ์ฐพ์ ์์ฐ์ค๋ฝ๊ฒ ์ ๊ฑฐํด์ฃผ์ธ์. ๊น๋ํ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด์ฃผ์ธ์."
|
103 |
|
104 |
-
elif "3. ์ผ๊ตด๋ฐ๊พธ๊ธฐ" in prompt:
|
105 |
-
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์ธ๋ฌผ ์ผ๊ตด์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์ผ๊ตด๋ก ์์ฐ์ค๋ฝ๊ฒ ๊ต์ฒดํด์ฃผ์ธ์. ์ผ๊ตด์ ํ์ ๊ณผ ํน์ง์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋ฅด๋, ๋๋จธ์ง ๋ถ๋ถ์ ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์ ์งํด์ฃผ์ธ์."
|
106 |
-
|
107 |
elif "4. ์ท๋ฐ๊พธ๊ธฐ" in prompt:
|
108 |
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์ธ๋ฌผ ์์์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์์์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์. ์์์ ์คํ์ผ๊ณผ ์์์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋ฅด๋, ์ ์ฒด ๋น์จ๊ณผ ํฌ์ฆ๋ ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์ ์งํด์ฃผ์ธ์."
|
109 |
|
@@ -113,12 +110,6 @@ def preprocess_prompt(prompt, image1, image2, image3):
|
|
113 |
elif "6. ์ด๋ฏธ์ง ํฉ์ฑ(์ํํฌํจ)" in prompt:
|
114 |
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง(๋๋ ์ธ ๋ฒ์งธ ์ด๋ฏธ์ง)๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฉ์ฑํด์ฃผ์ธ์. ๋ชจ๋ ์ด๋ฏธ์ง์ ์ฃผ์ ์์๋ฅผ ํฌํจํ๊ณ , ํนํ ์ํ์ด ๋๋ณด์ด๋๋ก ์กฐํ๋กญ๊ฒ ํตํฉํด์ฃผ์ธ์."
|
115 |
|
116 |
-
elif "7. ์ด๋ฏธ์ง ํฉ์ฑ(์คํ์ผ์ ์ฉ)" in prompt:
|
117 |
-
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์ ๋ด์ฉ์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์คํ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์. ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์ฃผ์ ํผ์ฌ์ฒด์ ๊ตฌ๋๋ ์ ์งํ๋, ๋ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์์ ์ ์คํ์ผ, ์์, ์ง๊ฐ์ ์ ์ฉํด์ฃผ์ธ์."
|
118 |
-
|
119 |
-
elif "์ ๋ถ์์์ผ๋ก ๋ฐ๊ฟ๋ผ" in prompt or "๋ฅผ ๋ถ์์์ผ๋ก ๋ฐ๊ฟ๋ผ" in prompt:
|
120 |
-
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ๋ถ์์ ํค์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์. ์ ์ฒด์ ์ธ ์์์ ๋ถ์ ๊ณ์ด๋ก ์กฐ์ ํ๊ณ ์์ฐ์ค๋ฌ์ด ๋๋์ ์ ์งํด์ฃผ์ธ์."
|
121 |
-
|
122 |
prompt += " ์ด๋ฏธ์ง๋ฅผ ์์ฑํด์ฃผ์ธ์."
|
123 |
|
124 |
return prompt
|
@@ -179,49 +170,47 @@ def generate_with_images(prompt, images):
|
|
179 |
|
180 |
def process_images_with_prompt(image1, image2, image3, prompt):
|
181 |
"""
|
182 |
-
3๊ฐ์ ์ด๋ฏธ์ง์ ํ๋กฌํํธ๋ฅผ ์ฒ๋ฆฌํ๋
|
|
|
183 |
"""
|
184 |
try:
|
185 |
images = [image1, image2, image3]
|
186 |
valid_images = [img for img in images if img is not None]
|
187 |
if not valid_images:
|
188 |
-
return None, "์ ์ด๋ ํ๋์ ์ด๋ฏธ์ง๋ฅผ ์
๋ก๋ํด์ฃผ์ธ์."
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
if len(valid_images) == 1:
|
194 |
-
|
195 |
logger.info("Default prompt generated for single image")
|
196 |
elif len(valid_images) == 2:
|
197 |
-
|
198 |
logger.info("Default prompt generated for two images")
|
199 |
else:
|
200 |
-
|
201 |
logger.info("Default prompt generated for three images")
|
202 |
-
|
203 |
-
|
204 |
-
return
|
205 |
except Exception as e:
|
206 |
logger.exception("์ด๋ฏธ์ง ์ฒ๋ฆฌ ์ค ์ค๋ฅ ๋ฐ์:")
|
207 |
-
return None, f"์ค๋ฅ ๋ฐ์: {str(e)}"
|
208 |
|
209 |
def process_and_show_prompt(image1, image2, image3, prompt):
|
210 |
-
|
211 |
-
|
|
|
212 |
try:
|
213 |
-
|
214 |
-
|
215 |
-
if len(valid_images) == 1:
|
216 |
-
auto_prompt = "Please creatively transform this image into a more vivid and artistic version."
|
217 |
-
elif len(valid_images) == 2:
|
218 |
-
auto_prompt = "Please seamlessly composite these two images, integrating their key elements harmoniously into a single image."
|
219 |
-
else:
|
220 |
-
auto_prompt = "Please creatively composite these three images, combining their main elements into a cohesive and natural scene."
|
221 |
-
else:
|
222 |
-
auto_prompt = preprocess_prompt(prompt, image1, image2, image3)
|
223 |
-
result_img, status = process_images_with_prompt(image1, image2, image3, prompt)
|
224 |
-
return result_img, status, auto_prompt
|
225 |
except Exception as e:
|
226 |
logger.exception("์ฒ๋ฆฌ ์ค ์ค๋ฅ ๋ฐ์:")
|
227 |
return None, f"์ค๋ฅ ๋ฐ์: {str(e)}", prompt
|
@@ -248,35 +237,31 @@ with gr.Blocks() as demo:
|
|
248 |
placeholder="ํ๋กฌํํธ๋ฅผ ์
๋ ฅํ๊ฑฐ๋ ๋น์๋๋ฉด ์๋ ํฉ์ฑ๋ฉ๋๋ค.",
|
249 |
label="ํ๋กฌํํธ (์ ํ ์ฌํญ)"
|
250 |
)
|
251 |
-
# ๋งํฌ๋ค์ด์ผ๋ก ์ ํ ์ต์
๋ฆฌ์คํธ ํ์ (
|
252 |
gr.Markdown(
|
253 |
"""
|
254 |
**์ ํ ์ต์
:**
|
255 |
|
256 |
1. **์ด๋ฏธ์ง ๋ณ๊ฒฝ:** `#1 ์ด๋ฏธ์ง์ [๋ค๋ฅธ ๋ชจ์ต]์ผ๋ก ๋ณ๊ฒฝํ๋ผ.`
|
257 |
2. **๊ธ์์ง์ฐ๊ธฐ:** `#1 ์ด๋ฏธ์ง์ [์ค๊ตญ์ด๋ฅผ ๋ชจ๋]๋ฅผ ์ ๊ฑฐํ๋ผ.`
|
258 |
-
3.
|
259 |
-
4.
|
260 |
-
5.
|
261 |
-
6. **์ด๋ฏธ์ง ํฉ์ฑ(์ํํฌํจ):** `#1 ์ด๋ฏธ์ง์ #2 ์ด๋ฏธ์ง(๋๋ #3 ์ด๋ฏธ์ง)๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฉ์ฑํ๋ผ.`
|
262 |
-
7. **์ด๋ฏธ์ง ํฉ์ฑ(์คํ์ผ์ ์ฉ):** `#1 ์ด๋ฏธ์ง์ ๋ด์ฉ์ #2 ์ด๋ฏธ์ง์ ์คํ์ผ๋ก ๋ณ๊ฒฝํ๋ผ.`
|
263 |
"""
|
264 |
)
|
265 |
with gr.Row():
|
266 |
image_change_btn = gr.Button("์ด๋ฏธ์ง ๋ณ๊ฒฝ")
|
267 |
text_remove_btn = gr.Button("๊ธ์์ง์ฐ๊ธฐ")
|
268 |
-
face_swap_btn = gr.Button("์ผ๊ตด๋ฐ๊พธ๊ธฐ")
|
269 |
clothes_change_btn = gr.Button("์ท๋ฐ๊พธ๊ธฐ")
|
270 |
background_change_btn = gr.Button("๋ฐฐ๊ฒฝ๋ฐ๊พธ๊ธฐ")
|
271 |
composite_product_btn = gr.Button("์ด๋ฏธ์ง ํฉ์ฑ(์ํํฌํจ)")
|
272 |
-
composite_style_btn = gr.Button("์ด๋ฏธ์ง ํฉ์ฑ(์คํ์ผ์ ์ฉ)")
|
273 |
submit_btn = gr.Button("์ด๋ฏธ์ง ์์ฑ", variant="primary")
|
274 |
with gr.Column():
|
275 |
output_image = gr.Image(label="์์ฑ๋ ์ด๋ฏธ์ง")
|
276 |
output_text = gr.Textbox(label="์ํ ๋ฉ์์ง")
|
277 |
-
prompt_display = gr.Textbox(label="์ฌ์ฉ๋ ํ๋กฌํํธ", visible=True)
|
278 |
|
279 |
-
# ์ ํ ์ต์
๋ฒํผ ํด๋ฆญ ์ ํ๋กฌํํธ ์
๋ ฅ๋ ์
๋ฐ์ดํธ (
|
280 |
image_change_btn.click(
|
281 |
fn=lambda: "#1 ์ด๋ฏธ์ง์ [๋ค๋ฅธ ๋ชจ์ต]์ผ๋ก ๋ณ๊ฒฝํ๋ผ.",
|
282 |
inputs=[],
|
@@ -287,11 +272,6 @@ with gr.Blocks() as demo:
|
|
287 |
inputs=[],
|
288 |
outputs=prompt_input
|
289 |
)
|
290 |
-
face_swap_btn.click(
|
291 |
-
fn=lambda: "#1 ์ด๋ฏธ์ง์ ์ธ๋ฌผ ์ผ๊ตด์ #2 ์ด๋ฏธ์ง์ ์ผ๊ตด๋ก ๊ต์ฒดํ๋ผ.",
|
292 |
-
inputs=[],
|
293 |
-
outputs=prompt_input
|
294 |
-
)
|
295 |
clothes_change_btn.click(
|
296 |
fn=lambda: "#1 ์ด๋ฏธ์ง์ ์ธ๋ฌผ ์์์ #2 ์ด๋ฏธ์ง์ ์์์ผ๋ก ๋ณ๊ฒฝํ๋ผ.",
|
297 |
inputs=[],
|
@@ -307,11 +287,6 @@ with gr.Blocks() as demo:
|
|
307 |
inputs=[],
|
308 |
outputs=prompt_input
|
309 |
)
|
310 |
-
composite_style_btn.click(
|
311 |
-
fn=lambda: "#1 ์ด๋ฏธ์ง์ ๋ด์ฉ์ #2 ์ด๋ฏธ์ง์ ์คํ์ผ๋ก ๋ณ๊ฒฝํ๋ผ.",
|
312 |
-
inputs=[],
|
313 |
-
outputs=prompt_input
|
314 |
-
)
|
315 |
|
316 |
submit_btn.click(
|
317 |
fn=process_and_show_prompt,
|
@@ -327,7 +302,7 @@ with gr.Blocks() as demo:
|
|
327 |
2. **์ด๋ฏธ์ง ์ฐธ์กฐ**: #1, #2, #3์ผ๋ก ๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
|
328 |
3. **์ผ๋ถ ์ด๋ฏธ์ง๋ง**: ํ์ํ ์ด๋ฏธ์ง๋ง ์
๋ก๋ํด๋ ๊ธฐ๋ฅ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
|
329 |
4. **์ ํ ์ต์
**: ์์ ๋งํฌ๋ค์ด ํ์์ ์ต์
์์ ์ํ๋ ํญ๋ชฉ์ ํด๋ฆญํ๋ฉด ํ๋กฌํํธ ์
๋ ฅ๋์ ํ๊ตญ์ด ๋ฌธ๊ตฌ๊ฐ ์ฑ์์ง๊ณ ,
|
330 |
-
์ดํ Geminiโ2.0โflash ๋ชจ๋ธ์ ํตํด ์์ด๋ก ๋ฒ์ญ๋์ด ์ ์ฉ๋ฉ๋๋ค.
|
331 |
|
332 |
> **ํ**: ํ๋กฌํํธ๋ฅผ ์ง์ ์์ ํ ์๋ ์์ต๋๋ค.
|
333 |
"""
|
|
|
101 |
else:
|
102 |
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์์ ๋ชจ๋ ํ
์คํธ๋ฅผ ์ฐพ์ ์์ฐ์ค๋ฝ๊ฒ ์ ๊ฑฐํด์ฃผ์ธ์. ๊น๋ํ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด์ฃผ์ธ์."
|
103 |
|
|
|
|
|
|
|
104 |
elif "4. ์ท๋ฐ๊พธ๊ธฐ" in prompt:
|
105 |
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์ธ๋ฌผ ์์์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง์ ์์์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์. ์์์ ์คํ์ผ๊ณผ ์์์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋ฅด๋, ์ ์ฒด ๋น์จ๊ณผ ํฌ์ฆ๋ ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง๋ฅผ ์ ์งํด์ฃผ์ธ์."
|
106 |
|
|
|
110 |
elif "6. ์ด๋ฏธ์ง ํฉ์ฑ(์ํํฌํจ)" in prompt:
|
111 |
prompt = "์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง์ ๋ ๋ฒ์งธ ์ด๋ฏธ์ง(๋๋ ์ธ ๋ฒ์งธ ์ด๋ฏธ์ง)๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฉ์ฑํด์ฃผ์ธ์. ๋ชจ๋ ์ด๋ฏธ์ง์ ์ฃผ์ ์์๋ฅผ ํฌํจํ๊ณ , ํนํ ์ํ์ด ๋๋ณด์ด๋๋ก ์กฐํ๋กญ๊ฒ ํตํฉํด์ฃผ์ธ์."
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
prompt += " ์ด๋ฏธ์ง๋ฅผ ์์ฑํด์ฃผ์ธ์."
|
114 |
|
115 |
return prompt
|
|
|
170 |
|
171 |
def process_images_with_prompt(image1, image2, image3, prompt):
|
172 |
"""
|
173 |
+
3๊ฐ์ ์ด๋ฏธ์ง์ ํ๋กฌํํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์.
|
174 |
+
์ต์ข
์ ์ผ๋ก ์์ด๋ก ๋ฒ์ญ๋ ํ๋กฌํํธ(final_prompt)๋ฅผ ์์ฑํ์ฌ API์ ์ ์ฉํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ์ ํจ๊ป ๋ฐํํฉ๋๋ค.
|
175 |
"""
|
176 |
try:
|
177 |
images = [image1, image2, image3]
|
178 |
valid_images = [img for img in images if img is not None]
|
179 |
if not valid_images:
|
180 |
+
return None, "์ ์ด๋ ํ๋์ ์ด๋ฏธ์ง๋ฅผ ์
๋ก๋ํด์ฃผ์ธ์.", ""
|
181 |
+
|
182 |
+
# ํ๋กฌํํธ๊ฐ ์
๋ ฅ๋ ๊ฒฝ์ฐ: ์ ์ฒ๋ฆฌ ํ ์ต์ข
์์ด ํ๋กฌํํธ ์์ฑ
|
183 |
+
if prompt and prompt.strip():
|
184 |
+
processed_prompt = preprocess_prompt(prompt, image1, image2, image3)
|
185 |
+
if re.search("[๊ฐ-ํฃ]", processed_prompt):
|
186 |
+
final_prompt = translate_prompt_to_english(processed_prompt)
|
187 |
+
else:
|
188 |
+
final_prompt = processed_prompt
|
189 |
+
else:
|
190 |
+
# ํ๋กฌํํธ ๋ฏธ์
๋ ฅ ์, ์ด๋ฏธ์ง ๊ฐ์์ ๋ฐ๋ฅธ ๊ธฐ๋ณธ ํ๋กฌํํธ (์์ด)
|
191 |
if len(valid_images) == 1:
|
192 |
+
final_prompt = "Please creatively transform this image into a more vivid and artistic version."
|
193 |
logger.info("Default prompt generated for single image")
|
194 |
elif len(valid_images) == 2:
|
195 |
+
final_prompt = "Please seamlessly composite these two images, integrating their key elements harmoniously into a single image."
|
196 |
logger.info("Default prompt generated for two images")
|
197 |
else:
|
198 |
+
final_prompt = "Please creatively composite these three images, combining their main elements into a cohesive and natural scene."
|
199 |
logger.info("Default prompt generated for three images")
|
200 |
+
|
201 |
+
result_img, status = generate_with_images(final_prompt, valid_images)
|
202 |
+
return result_img, status, final_prompt
|
203 |
except Exception as e:
|
204 |
logger.exception("์ด๋ฏธ์ง ์ฒ๋ฆฌ ์ค ์ค๋ฅ ๋ฐ์:")
|
205 |
+
return None, f"์ค๋ฅ ๋ฐ์: {str(e)}", prompt
|
206 |
|
207 |
def process_and_show_prompt(image1, image2, image3, prompt):
|
208 |
+
"""
|
209 |
+
์ต์ข
์ ์ผ๋ก ์ด๋ฏธ์ง ์์ฑ ๋ฐ ์์ด ์ต์ข
ํ๋กฌํํธ๋ฅผ ๋ฐํํ๋ ํจ์.
|
210 |
+
"""
|
211 |
try:
|
212 |
+
result_img, status, final_prompt = process_images_with_prompt(image1, image2, image3, prompt)
|
213 |
+
return result_img, status, final_prompt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
except Exception as e:
|
215 |
logger.exception("์ฒ๋ฆฌ ์ค ์ค๋ฅ ๋ฐ์:")
|
216 |
return None, f"์ค๋ฅ ๋ฐ์: {str(e)}", prompt
|
|
|
237 |
placeholder="ํ๋กฌํํธ๋ฅผ ์
๋ ฅํ๊ฑฐ๋ ๋น์๋๋ฉด ์๋ ํฉ์ฑ๋ฉ๋๋ค.",
|
238 |
label="ํ๋กฌํํธ (์ ํ ์ฌํญ)"
|
239 |
)
|
240 |
+
# ๋งํฌ๋ค์ด์ผ๋ก ์ ํ ์ต์
๋ฆฌ์คํธ ํ์ (์ผ๊ตด๋ฐ๊พธ๊ธฐ, ์ด๋ฏธ์ง ํฉ์ฑ(์คํ์ผ์ ์ฉ) ์ ์ธ)
|
241 |
gr.Markdown(
|
242 |
"""
|
243 |
**์ ํ ์ต์
:**
|
244 |
|
245 |
1. **์ด๋ฏธ์ง ๋ณ๊ฒฝ:** `#1 ์ด๋ฏธ์ง์ [๋ค๋ฅธ ๋ชจ์ต]์ผ๋ก ๋ณ๊ฒฝํ๋ผ.`
|
246 |
2. **๊ธ์์ง์ฐ๊ธฐ:** `#1 ์ด๋ฏธ์ง์ [์ค๊ตญ์ด๋ฅผ ๋ชจ๋]๋ฅผ ์ ๊ฑฐํ๋ผ.`
|
247 |
+
3. **์ท๋ฐ๊พธ๊ธฐ:** `#1 ์ด๋ฏธ์ง์ ์ธ๋ฌผ ์์์ #2 ์ด๋ฏธ์ง์ ์์์ผ๋ก ๋ณ๊ฒฝํ๋ผ.`
|
248 |
+
4. **๋ฐฐ๊ฒฝ๋ฐ๊พธ๊ธฐ:** `#1 ์ด๋ฏธ์ง์ ๋ฐฐ๊ฒฝ์ #2 ์ด๋ฏธ์ง์ ๋ฐฐ๊ฒฝ์ผ๋ก ๋ณ๊ฒฝํ๋ผ.`
|
249 |
+
5. **์ด๋ฏธ์ง ํฉ์ฑ(์ํํฌํจ):** `#1 ์ด๋ฏธ์ง์ #2 ์ด๋ฏธ์ง(๋๋ #3 ์ด๋ฏธ์ง)๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฉ์ฑํ๋ผ.`
|
|
|
|
|
250 |
"""
|
251 |
)
|
252 |
with gr.Row():
|
253 |
image_change_btn = gr.Button("์ด๋ฏธ์ง ๋ณ๊ฒฝ")
|
254 |
text_remove_btn = gr.Button("๊ธ์์ง์ฐ๊ธฐ")
|
|
|
255 |
clothes_change_btn = gr.Button("์ท๋ฐ๊พธ๊ธฐ")
|
256 |
background_change_btn = gr.Button("๋ฐฐ๊ฒฝ๋ฐ๊พธ๊ธฐ")
|
257 |
composite_product_btn = gr.Button("์ด๋ฏธ์ง ํฉ์ฑ(์ํํฌํจ)")
|
|
|
258 |
submit_btn = gr.Button("์ด๋ฏธ์ง ์์ฑ", variant="primary")
|
259 |
with gr.Column():
|
260 |
output_image = gr.Image(label="์์ฑ๋ ์ด๋ฏธ์ง")
|
261 |
output_text = gr.Textbox(label="์ํ ๋ฉ์์ง")
|
262 |
+
prompt_display = gr.Textbox(label="์ฌ์ฉ๋ ํ๋กฌํํธ (์์ด)", visible=True)
|
263 |
|
264 |
+
# ์ ํ ์ต์
๋ฒํผ ํด๋ฆญ ์ ํ๋กฌํํธ ์
๋ ฅ๋ ์
๋ฐ์ดํธ (ํ๊ตญ์ด ๋ฌธ๊ตฌ ์
๋ ฅ)
|
265 |
image_change_btn.click(
|
266 |
fn=lambda: "#1 ์ด๋ฏธ์ง์ [๋ค๋ฅธ ๋ชจ์ต]์ผ๋ก ๋ณ๊ฒฝํ๋ผ.",
|
267 |
inputs=[],
|
|
|
272 |
inputs=[],
|
273 |
outputs=prompt_input
|
274 |
)
|
|
|
|
|
|
|
|
|
|
|
275 |
clothes_change_btn.click(
|
276 |
fn=lambda: "#1 ์ด๋ฏธ์ง์ ์ธ๋ฌผ ์์์ #2 ์ด๋ฏธ์ง์ ์์์ผ๋ก ๋ณ๊ฒฝํ๋ผ.",
|
277 |
inputs=[],
|
|
|
287 |
inputs=[],
|
288 |
outputs=prompt_input
|
289 |
)
|
|
|
|
|
|
|
|
|
|
|
290 |
|
291 |
submit_btn.click(
|
292 |
fn=process_and_show_prompt,
|
|
|
302 |
2. **์ด๋ฏธ์ง ์ฐธ์กฐ**: #1, #2, #3์ผ๋ก ๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
|
303 |
3. **์ผ๋ถ ์ด๋ฏธ์ง๋ง**: ํ์ํ ์ด๋ฏธ์ง๋ง ์
๋ก๋ํด๋ ๊ธฐ๋ฅ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
|
304 |
4. **์ ํ ์ต์
**: ์์ ๋งํฌ๋ค์ด ํ์์ ์ต์
์์ ์ํ๋ ํญ๋ชฉ์ ํด๋ฆญํ๋ฉด ํ๋กฌํํธ ์
๋ ฅ๋์ ํ๊ตญ์ด ๋ฌธ๊ตฌ๊ฐ ์ฑ์์ง๊ณ ,
|
305 |
+
์ดํ Geminiโ2.0โflash ๋ชจ๋ธ์ ํตํด ์์ด๋ก ๋ฒ์ญ๋์ด ์ค์ API ํธ์ถ ํ๋กฌํํธ๋ก ์ ์ฉ๋ฉ๋๋ค.
|
306 |
|
307 |
> **ํ**: ํ๋กฌํํธ๋ฅผ ์ง์ ์์ ํ ์๋ ์์ต๋๋ค.
|
308 |
"""
|