Update app.py
Browse files
app.py
CHANGED
@@ -7,8 +7,8 @@ import logging
|
|
7 |
import re
|
8 |
import time
|
9 |
|
10 |
-
|
11 |
-
|
12 |
from dotenv import load_dotenv
|
13 |
|
14 |
load_dotenv()
|
@@ -19,10 +19,10 @@ logger = logging.getLogger(__name__)
|
|
19 |
|
20 |
# Gemini API ํค ์ค์
|
21 |
GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY", "")
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
|
27 |
# ๋ฐฐ๊ฒฝ JSON ํ์ผ ๊ฒฝ๋ก ์ค์ - ์๋ ๊ฒฝ๋ก ์ฌ์ฉ
|
28 |
BACKGROUNDS_DIR = "./background"
|
@@ -110,8 +110,6 @@ def translate_prompt_to_english(prompt):
|
|
110 |
prompt = prompt.replace("IMAGE_TAG_ONE", "#1")
|
111 |
return prompt
|
112 |
|
113 |
-
# ๊ธฐ์กด: client = genai.Client(api_key=GEMINI_API_KEY)
|
114 |
-
client = genai_client # ์ ์ญ ๋ณ์ ์ฌ์ฉ
|
115 |
translation_prompt = f"""
|
116 |
Translate the following Korean text to English:
|
117 |
|
@@ -122,24 +120,20 @@ def translate_prompt_to_english(prompt):
|
|
122 |
"""
|
123 |
|
124 |
logger.info(f"Translation prompt: {translation_prompt}")
|
125 |
-
|
|
|
|
|
126 |
model="gemini-2.0-flash",
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
top_k=40,
|
133 |
-
max_output_tokens=512
|
134 |
-
)
|
135 |
)
|
136 |
|
137 |
-
translated_text =
|
138 |
-
for part in response.candidates[0].content.parts:
|
139 |
-
if hasattr(part, 'text') and part.text:
|
140 |
-
translated_text += part.text
|
141 |
|
142 |
-
if translated_text.strip():
|
143 |
translated_text = translated_text.replace("IMAGE_TAG_ONE", "#1")
|
144 |
logger.info(f"Translated text: {translated_text.strip()}")
|
145 |
return translated_text.strip()
|
@@ -363,20 +357,27 @@ def generate_prompt_with_gemini(product_name, background_info, additional_info="
|
|
363 |
8. ํ๋กฌํํธ ๋์ ๋ฏธ๋์ ๋ ํ๋ผ๋ฏธํฐ "--ar 1:1 --s 750 --q 2"๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์.
|
364 |
ํ๊ตญ์ด ์
๋ ฅ ๋ด์ฉ์ ์์ด๋ก ์ ์ ํ ๋ฒ์ญํ์ฌ ๋ฐ์ํด์ฃผ์ธ์.
|
365 |
"""
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
|
|
|
|
|
|
|
|
|
|
378 |
)
|
379 |
-
|
|
|
|
|
380 |
if "--ar 1:1" not in response_text:
|
381 |
response_text = response_text.rstrip(".") + ". --ar 1:1 --s 750 --q 2"
|
382 |
|
|
|
7 |
import re
|
8 |
import time
|
9 |
|
10 |
+
# ํจํค์ง ์ํฌํธ ๋ฐฉ์์ ๋ณ๊ฒฝ
|
11 |
+
import google.generativeai as genai
|
12 |
from dotenv import load_dotenv
|
13 |
|
14 |
load_dotenv()
|
|
|
19 |
|
20 |
# Gemini API ํค ์ค์
|
21 |
GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY", "")
|
22 |
+
if GEMINI_API_KEY:
|
23 |
+
genai.configure(api_key=GEMINI_API_KEY)
|
24 |
+
else:
|
25 |
+
logger.warning("GEMINI_API_KEY๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค.")
|
26 |
|
27 |
# ๋ฐฐ๊ฒฝ JSON ํ์ผ ๊ฒฝ๋ก ์ค์ - ์๋ ๊ฒฝ๋ก ์ฌ์ฉ
|
28 |
BACKGROUNDS_DIR = "./background"
|
|
|
110 |
prompt = prompt.replace("IMAGE_TAG_ONE", "#1")
|
111 |
return prompt
|
112 |
|
|
|
|
|
113 |
translation_prompt = f"""
|
114 |
Translate the following Korean text to English:
|
115 |
|
|
|
120 |
"""
|
121 |
|
122 |
logger.info(f"Translation prompt: {translation_prompt}")
|
123 |
+
|
124 |
+
# ์๋ก์ด API ์ฌ์ฉ ๋ฐฉ์
|
125 |
+
response = genai.generate_text(
|
126 |
model="gemini-2.0-flash",
|
127 |
+
prompt=translation_prompt,
|
128 |
+
temperature=0.2,
|
129 |
+
top_p=0.95,
|
130 |
+
top_k=40,
|
131 |
+
max_output_tokens=512
|
|
|
|
|
|
|
132 |
)
|
133 |
|
134 |
+
translated_text = response.result
|
|
|
|
|
|
|
135 |
|
136 |
+
if translated_text and translated_text.strip():
|
137 |
translated_text = translated_text.replace("IMAGE_TAG_ONE", "#1")
|
138 |
logger.info(f"Translated text: {translated_text.strip()}")
|
139 |
return translated_text.strip()
|
|
|
357 |
8. ํ๋กฌํํธ ๋์ ๋ฏธ๋์ ๋ ํ๋ผ๋ฏธํฐ "--ar 1:1 --s 750 --q 2"๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์.
|
358 |
ํ๊ตญ์ด ์
๋ ฅ ๋ด์ฉ์ ์์ด๋ก ์ ์ ํ ๋ฒ์ญํ์ฌ ๋ฐ์ํด์ฃผ์ธ์.
|
359 |
"""
|
360 |
+
|
361 |
+
# google-generativeai ํจํค์ง ์ฌ์ฉ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ
|
362 |
+
system_instruction = generate_system_instruction()
|
363 |
+
|
364 |
+
# GenerativeModel ๋์ genai.chat ์ฌ์ฉ
|
365 |
+
chat = genai.chat(
|
366 |
+
model="gemini-2.0-flash",
|
367 |
+
messages=[
|
368 |
+
{"role": "system", "content": system_instruction},
|
369 |
+
{"role": "user", "content": prompt_request}
|
370 |
+
],
|
371 |
+
generation_config={
|
372 |
+
"temperature": 0.7,
|
373 |
+
"top_p": 0.95,
|
374 |
+
"top_k": 64,
|
375 |
+
"max_output_tokens": 1024,
|
376 |
+
}
|
377 |
)
|
378 |
+
|
379 |
+
response_text = chat.last.text.strip()
|
380 |
+
|
381 |
if "--ar 1:1" not in response_text:
|
382 |
response_text = response_text.rstrip(".") + ". --ar 1:1 --s 750 --q 2"
|
383 |
|