Update app.py
Browse files
app.py
CHANGED
|
@@ -4,38 +4,72 @@ from PIL import Image
|
|
| 4 |
import io
|
| 5 |
import numpy as np
|
| 6 |
|
| 7 |
-
def generate_content(api_key,
|
|
|
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
# image = Image.open(io.BytesIO(image_data))
|
| 13 |
image = Image.fromarray(np.uint8(image_data)).convert('RGB')
|
| 14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
model = genai.GenerativeModel('gemini-2.0-flash')
|
| 16 |
|
| 17 |
-
|
|
|
|
| 18 |
response.resolve()
|
| 19 |
return response.text
|
| 20 |
|
|
|
|
|
|
|
|
|
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
-
|
| 24 |
-
gr.
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
| 27 |
|
| 28 |
-
#
|
| 29 |
-
image_input = gr.Image(label="Загрузить изображение
|
| 30 |
-
|
|
|
|
| 31 |
generate_button = gr.Button("Пуск")
|
| 32 |
-
|
| 33 |
-
|
|
|
|
|
|
|
|
|
|
| 34 |
generate_button.click(
|
| 35 |
-
generate_content,
|
| 36 |
-
inputs=[api_key_input,
|
| 37 |
outputs=output
|
| 38 |
)
|
| 39 |
|
| 40 |
-
app
|
| 41 |
-
|
|
|
|
| 4 |
import io
|
| 5 |
import numpy as np
|
| 6 |
|
| 7 |
+
def generate_content(api_key, image_data, language):
|
| 8 |
+
genai.configure(api_key=api_key)
|
| 9 |
|
| 10 |
+
# Convert uploaded image data into a PIL image
|
| 11 |
+
if image_data is None:
|
| 12 |
+
return "Пожалуйста, загрузите изображение!"
|
|
|
|
| 13 |
image = Image.fromarray(np.uint8(image_data)).convert('RGB')
|
| 14 |
|
| 15 |
+
# Base prompt
|
| 16 |
+
base_prompt = "Напиши большой и красивый, содержательный рекламный пост минимум на 1000 символов со смайликами и 25 тематических хэштегов с ключевыми словами разных вариантов, чтобы мои клиенты могли найти меня в поиске Instagram, Google и т.д. по ключевым словам. Пост пиши исключительно под товар, который на фото, без адресов и номеров телефона."
|
| 17 |
+
|
| 18 |
+
# Modify prompt based on selected language
|
| 19 |
+
if language == "Русский":
|
| 20 |
+
final_prompt = f"{base_prompt} Пиши на русском языке."
|
| 21 |
+
elif language == "Кыргызский":
|
| 22 |
+
final_prompt = f"{base_prompt} Пиши на кыргызском языке."
|
| 23 |
+
elif language == "Казахский":
|
| 24 |
+
final_prompt = f"{base_prompt} Пиши на казахском языке."
|
| 25 |
+
elif language == "Узбекский":
|
| 26 |
+
final_prompt = f"{base_prompt} Пиши на узбекском языке."
|
| 27 |
+
else:
|
| 28 |
+
final_prompt = base_prompt # Default to Russian if no language selected
|
| 29 |
+
|
| 30 |
+
# Initialize the model
|
| 31 |
model = genai.GenerativeModel('gemini-2.0-flash')
|
| 32 |
|
| 33 |
+
# Generate content with the image and prompt
|
| 34 |
+
response = model.generate_content([final_prompt, image])
|
| 35 |
response.resolve()
|
| 36 |
return response.text
|
| 37 |
|
| 38 |
+
# Gradio interface
|
| 39 |
+
with gr.Blocks(title="EVA - Генератор рекламных постов") as app:
|
| 40 |
+
gr.Markdown("# EVA - Загрузи изображение, выбери язык и получи красивый рекламный пост!")
|
| 41 |
|
| 42 |
+
# API Key input
|
| 43 |
+
api_key_input = gr.Textbox(
|
| 44 |
+
label="API Key",
|
| 45 |
+
type="password",
|
| 46 |
+
value="AIzaSyBtBdQiAQUeA4rKplFPuKd8zTP9r1LTVvA",
|
| 47 |
+
placeholder="Введите ваш API Key",
|
| 48 |
+
lines=1
|
| 49 |
+
)
|
| 50 |
|
| 51 |
+
# Language selection
|
| 52 |
+
language_input = gr.Radio(
|
| 53 |
+
choices=["Русский", "Кыргызский", "Казахский", "Узбекский"],
|
| 54 |
+
label="Выберите язык поста",
|
| 55 |
+
value="Русский" # Default value
|
| 56 |
+
)
|
| 57 |
|
| 58 |
+
# Image input
|
| 59 |
+
image_input = gr.Image(label="Загрузить изображение")
|
| 60 |
+
|
| 61 |
+
# Generate button
|
| 62 |
generate_button = gr.Button("Пуск")
|
| 63 |
+
|
| 64 |
+
# Output
|
| 65 |
+
output = gr.Markdown(label="Результат")
|
| 66 |
+
|
| 67 |
+
# Button click event
|
| 68 |
generate_button.click(
|
| 69 |
+
fn=generate_content,
|
| 70 |
+
inputs=[api_key_input, image_input, language_input],
|
| 71 |
outputs=output
|
| 72 |
)
|
| 73 |
|
| 74 |
+
# Launch the app
|
| 75 |
+
app.launch()
|