Kgshop commited on
Commit
d3908cc
·
verified ·
1 Parent(s): 1b526a1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -37
app.py CHANGED
@@ -55,13 +55,14 @@ COLOR_SCHEMES = {
55
  'lavender': 'Лавандовый',
56
  'vintage': 'Винтажный',
57
  'dark': 'Полночь (тёмная)',
58
- 'mint': 'Свежая мята',
59
- 'rose_gold': 'Розовое золото',
60
- 'graphite': 'Графитовый',
61
- 'cosmic': 'Космическая ночь'
 
 
62
  }
63
 
64
-
65
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
66
 
67
  def download_db_from_hf(specific_file=None, retries=DOWNLOAD_RETRIES, delay=DOWNLOAD_DELAY):
@@ -288,7 +289,7 @@ def generate_ai_description_from_image(image_data, language):
288
  final_prompt = f"{base_prompt}{lang_suffix}"
289
 
290
  try:
291
- model = genai.GenerativeModel('gemini-1.5-flash')
292
 
293
  response = model.generate_content([final_prompt, image])
294
 
@@ -307,7 +308,7 @@ def generate_ai_description_from_image(image_data, language):
307
  elif " Billing account not found" in str(e):
308
  raise ValueError("Проблема с биллингом аккаунта Google Cloud. Проверьте ваш аккаунт.")
309
  elif "Could not find model" in str(e):
310
- raise ValueError(f"Модель 'gemini-1.5-flash' не найдена или недоступна.")
311
  elif "resource has been exhausted" in str(e).lower():
312
  raise ValueError("Квота запросов исчерпана. Попробуйте позже.")
313
  elif "content has been blocked" in str(e).lower():
@@ -377,24 +378,21 @@ def generate_chat_response(message, chat_history_from_client, env_id):
377
  response = None
378
 
379
  try:
380
- model = genai.GenerativeModel('gemini-1.5-flash')
381
-
382
- model_chat_history_for_gemini = []
383
 
 
 
 
384
  for entry in chat_history_from_client:
385
  gemini_role = 'model' if entry['role'] == 'ai' else 'user'
386
  model_chat_history_for_gemini.append({
387
  'role': gemini_role,
388
  'parts': [{'text': entry['text']}]
389
  })
390
-
391
- full_prompt = [
392
- {'role': 'user', 'parts': [{'text': system_instruction_content}]},
393
- *model_chat_history_for_gemini,
394
- {'role': 'user', 'parts': [{'text': message}]}
395
- ]
396
-
397
- response = model.generate_content(full_prompt, generation_config={'max_output_tokens': 1000})
398
 
399
  if hasattr(response, 'text'):
400
  generated_text = response.text
@@ -424,20 +422,19 @@ def generate_chat_response(message, chat_history_from_client, env_id):
424
  else:
425
  return f"Извините, произошла ошибка: {e}"
426
 
427
- LANDING_TEMPLATE = '''
428
  <!DOCTYPE html>
429
  <html lang="ru">
430
  <head>
431
  <meta charset="UTF-8">
432
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
433
- <title>AI Agent</title>
434
  <style>
435
  body, html {
436
  margin: 0;
437
  padding: 0;
438
- overflow: hidden;
439
  height: 100%;
440
- width: 100%;
441
  }
442
  iframe {
443
  border: none;
@@ -608,14 +605,18 @@ CATALOG_TEMPLATE = '''
608
  :root { --bg-dark: #5D4037; --bg-medium: #A1887F; --accent: #D7CCC8; --accent-hover: #EFEBE9; --text-light: #F5F5F5; --text-dark: #3E2723; --danger: #BF360C; --danger-hover: #F4511E; }
609
  {% elif settings.color_scheme == 'dark' %}
610
  :root { --bg-dark: #121212; --bg-medium: #1E1E1E; --accent: #BB86FC; --accent-hover: #A764FC; --text-light: #E1E1E1; --text-dark: #FFFFFF; --danger: #CF6679; --danger-hover: #D98899; }
611
- {% elif settings.color_scheme == 'mint' %}
612
- :root { --bg-dark: #006A4E; --bg-medium: #50C878; --accent: #98FF98; --accent-hover: #B9FFB9; --text-light: #F0FFF0; --text-dark: #003322; --danger: #E34234; --danger-hover: #FF5733; }
613
- {% elif settings.color_scheme == 'rose_gold' %}
614
- :root { --bg-dark: #B76E79; --bg-medium: #D9A7A0; --accent: #FADCD9; --accent-hover: #FDEFEA; --text-light: #FFF8F7; --text-dark: #5C373C; --danger: #C3447A; --danger-hover: #D96291; }
615
- {% elif settings.color_scheme == 'graphite' %}
616
- :root { --bg-dark: #2C3E50; --bg-medium: #5D6D7E; --accent: #BDC3C7; --accent-hover: #D6DBDF; --text-light: #ECF0F1; --text-dark: #212F3D; --danger: #E74C3C; --danger-hover: #EC7063; }
617
  {% elif settings.color_scheme == 'cosmic' %}
618
- :root { --bg-dark: #0F0C29; --bg-medium: #302B63; --accent: #A770EF; --accent-hover: #D1A7FF; --text-light: #F3EFFF; --text-dark: #FFFFFF; --danger: #F83D5C; --danger-hover: #FA6079; }
 
 
 
 
 
 
 
 
 
 
619
  {% else %}
620
  :root { --bg-dark: #003C43; --bg-medium: #135D66; --accent: #48D1CC; --accent-hover: #77E4D8; --text-light: #E3FEF7; --text-dark: #333; --danger: #E57373; --danger-hover: #EF5350; }
621
  {% endif %}
@@ -1330,14 +1331,18 @@ CHAT_TEMPLATE = '''
1330
  :root { --bg-dark: #5D4037; --bg-medium: #A1887F; --accent: #D7CCC8; --accent-hover: #EFEBE9; --text-light: #F5F5F5; --text-dark: #3E2723; --danger: #BF360C; --danger-hover: #F4511E; --chat-bg: #EFEBE9; }
1331
  {% elif settings.color_scheme == 'dark' %}
1332
  :root { --bg-dark: #1F1F1F; --bg-medium: #333333; --accent: #BB86FC; --accent-hover: #A764FC; --text-light: #E1E1E1; --text-dark: #FFFFFF; --danger: #CF6679; --danger-hover: #D98899; --chat-bg: #121212; }
1333
- {% elif settings.color_scheme == 'mint' %}
1334
- :root { --bg-dark: #006A4E; --bg-medium: #50C878; --accent: #98FF98; --accent-hover: #B9FFB9; --text-light: #F0FFF0; --text-dark: #003322; --danger: #E34234; --danger-hover: #FF5733; --chat-bg: #F0FFF0; }
1335
- {% elif settings.color_scheme == 'rose_gold' %}
1336
- :root { --bg-dark: #B76E79; --bg-medium: #D9A7A0; --accent: #FADCD9; --accent-hover: #FDEFEA; --text-light: #FFF8F7; --text-dark: #5C373C; --danger: #C3447A; --danger-hover: #D96291; --chat-bg: #FFF8F7; }
1337
- {% elif settings.color_scheme == 'graphite' %}
1338
- :root { --bg-dark: #2C3E50; --bg-medium: #5D6D7E; --accent: #BDC3C7; --accent-hover: #D6DBDF; --text-light: #ECF0F1; --text-dark: #212F3D; --danger: #E74C3C; --danger-hover: #EC7063; --chat-bg: #ECF0F1; }
1339
  {% elif settings.color_scheme == 'cosmic' %}
1340
- :root { --bg-dark: #0F0C29; --bg-medium: #302B63; --accent: #A770EF; --accent-hover: #D1A7FF; --text-light: #F3EFFF; --text-dark: #FFFFFF; --danger: #F83D5C; --danger-hover: #FA6079; --chat-bg: #1a163a; }
 
 
 
 
 
 
 
 
 
 
1341
  {% else %}
1342
  :root { --bg-dark: #003C43; --bg-medium: #135D66; --accent: #48D1CC; --accent-hover: #77E4D8; --text-light: #E3FEF7; --text-dark: #333; --danger: #E57373; --danger-hover: #EF5350; --chat-bg: #f0f2f5; }
1343
  {% endif %}
@@ -2653,7 +2658,7 @@ ADMIN_TEMPLATE = '''
2653
 
2654
  @app.route('/')
2655
  def index():
2656
- return render_template_string(LANDING_TEMPLATE)
2657
 
2658
  @app.route('/admhosto', methods=['GET'])
2659
  def admhosto():
 
55
  'lavender': 'Лавандовый',
56
  'vintage': 'Винтажный',
57
  'dark': 'Полночь (тёмная)',
58
+ 'cosmic': 'Космическая ночь',
59
+ 'minty': 'Свежая мята',
60
+ 'mocha': 'Кофейный мокко',
61
+ 'crimson': 'Багровый рассвет',
62
+ 'solar': 'Солнечная вспышка',
63
+ 'cyberpunk': 'Киберпанк неон'
64
  }
65
 
 
66
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
67
 
68
  def download_db_from_hf(specific_file=None, retries=DOWNLOAD_RETRIES, delay=DOWNLOAD_DELAY):
 
289
  final_prompt = f"{base_prompt}{lang_suffix}"
290
 
291
  try:
292
+ model = genai.GenerativeModel('gemma-3-27b-it')
293
 
294
  response = model.generate_content([final_prompt, image])
295
 
 
308
  elif " Billing account not found" in str(e):
309
  raise ValueError("Проблема с биллингом аккаунта Google Cloud. Проверьте ваш аккаунт.")
310
  elif "Could not find model" in str(e):
311
+ raise ValueError(f"Модель 'learnlm-2.0-flash-experimental' не найдена или недоступна.")
312
  elif "resource has been exhausted" in str(e).lower():
313
  raise ValueError("Квота запросов исчерпана. Попробуйте позже.")
314
  elif "content has been blocked" in str(e).lower():
 
378
  response = None
379
 
380
  try:
381
+ model = genai.GenerativeModel('gemma-3-27b-it')
 
 
382
 
383
+ model_chat_history_for_gemini = [
384
+ {'role': 'user', 'parts': [{'text': system_instruction_content}]}
385
+ ]
386
  for entry in chat_history_from_client:
387
  gemini_role = 'model' if entry['role'] == 'ai' else 'user'
388
  model_chat_history_for_gemini.append({
389
  'role': gemini_role,
390
  'parts': [{'text': entry['text']}]
391
  })
392
+
393
+ chat = model.start_chat(history=model_chat_history_for_gemini)
394
+
395
+ response = chat.send_message(message, generation_config={'max_output_tokens': 1000})
 
 
 
 
396
 
397
  if hasattr(response, 'text'):
398
  generated_text = response.text
 
422
  else:
423
  return f"Извините, произошла ошибка: {e}"
424
 
425
+ LANDING_PAGE_TEMPLATE = '''
426
  <!DOCTYPE html>
427
  <html lang="ru">
428
  <head>
429
  <meta charset="UTF-8">
430
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
431
+ <title>Gippo312 - AI Ассистент для Вашего Бизнеса</title>
432
  <style>
433
  body, html {
434
  margin: 0;
435
  padding: 0;
 
436
  height: 100%;
437
+ overflow: hidden;
438
  }
439
  iframe {
440
  border: none;
 
605
  :root { --bg-dark: #5D4037; --bg-medium: #A1887F; --accent: #D7CCC8; --accent-hover: #EFEBE9; --text-light: #F5F5F5; --text-dark: #3E2723; --danger: #BF360C; --danger-hover: #F4511E; }
606
  {% elif settings.color_scheme == 'dark' %}
607
  :root { --bg-dark: #121212; --bg-medium: #1E1E1E; --accent: #BB86FC; --accent-hover: #A764FC; --text-light: #E1E1E1; --text-dark: #FFFFFF; --danger: #CF6679; --danger-hover: #D98899; }
 
 
 
 
 
 
608
  {% elif settings.color_scheme == 'cosmic' %}
609
+ :root { --bg-dark: #2c003e; --bg-medium: #4a0072; --accent: #ff00c1; --accent-hover: #ff5fd8; --text-light: #f3e5f5; --text-dark: #ffffff; --danger: #e91e63; --danger-hover: #f06292; }
610
+ {% elif settings.color_scheme == 'minty' %}
611
+ :root { --bg-dark: #64B5F6; --bg-medium: #81D4FA; --accent: #B2EBF2; --accent-hover: #E0F7FA; --text-light: #000000; --text-dark: #000000; --danger: #ef5350; --danger-hover: #e57373; }
612
+ {% elif settings.color_scheme == 'mocha' %}
613
+ :root { --bg-dark: #3e2723; --bg-medium: #5d4037; --accent: #a1887f; --accent-hover: #bcaaa4; --text-light: #efebe9; --text-dark: #ffffff; --danger: #d32f2f; --danger-hover: #e57373; }
614
+ {% elif settings.color_scheme == 'crimson' %}
615
+ :root { --bg-dark: #121212; --bg-medium: #b71c1c; --accent: #f44336; --accent-hover: #ef5350; --text-light: #ffffff; --text-dark: #ffffff; --danger: #ff5252; --danger-hover: #ff8a80; }
616
+ {% elif settings.color_scheme == 'solar' %}
617
+ :root { --bg-dark: #ff6f00; --bg-medium: #ff8f00; --accent: #ffca28; --accent-hover: #ffd54f; --text-light: #212121; --text-dark: #212121; --danger: #d32f2f; --danger-hover: #e57373; }
618
+ {% elif settings.color_scheme == 'cyberpunk' %}
619
+ :root { --bg-dark: #000000; --bg-medium: #0d0221; --accent: #00f0ff; --accent-hover: #81f5ff; --text-light: #ffffff; --text-dark: #ffffff; --danger: #f50057; --danger-hover: #ff4081; }
620
  {% else %}
621
  :root { --bg-dark: #003C43; --bg-medium: #135D66; --accent: #48D1CC; --accent-hover: #77E4D8; --text-light: #E3FEF7; --text-dark: #333; --danger: #E57373; --danger-hover: #EF5350; }
622
  {% endif %}
 
1331
  :root { --bg-dark: #5D4037; --bg-medium: #A1887F; --accent: #D7CCC8; --accent-hover: #EFEBE9; --text-light: #F5F5F5; --text-dark: #3E2723; --danger: #BF360C; --danger-hover: #F4511E; --chat-bg: #EFEBE9; }
1332
  {% elif settings.color_scheme == 'dark' %}
1333
  :root { --bg-dark: #1F1F1F; --bg-medium: #333333; --accent: #BB86FC; --accent-hover: #A764FC; --text-light: #E1E1E1; --text-dark: #FFFFFF; --danger: #CF6679; --danger-hover: #D98899; --chat-bg: #121212; }
 
 
 
 
 
 
1334
  {% elif settings.color_scheme == 'cosmic' %}
1335
+ :root { --bg-dark: #2c003e; --bg-medium: #4a0072; --accent: #ff00c1; --accent-hover: #ff5fd8; --text-light: #f3e5f5; --text-dark: #ffffff; --danger: #e91e63; --danger-hover: #f06292; --chat-bg: #1a0024; }
1336
+ {% elif settings.color_scheme == 'minty' %}
1337
+ :root { --bg-dark: #64B5F6; --bg-medium: #81D4FA; --accent: #B2EBF2; --accent-hover: #E0F7FA; --text-light: #000000; --text-dark: #000000; --danger: #ef5350; --danger-hover: #e57373; --chat-bg: #f1f8e9; }
1338
+ {% elif settings.color_scheme == 'mocha' %}
1339
+ :root { --bg-dark: #3e2723; --bg-medium: #5d4037; --accent: #a1887f; --accent-hover: #bcaaa4; --text-light: #efebe9; --text-dark: #ffffff; --danger: #d32f2f; --danger-hover: #e57373; --chat-bg: #d7ccc8; }
1340
+ {% elif settings.color_scheme == 'crimson' %}
1341
+ :root { --bg-dark: #121212; --bg-medium: #b71c1c; --accent: #f44336; --accent-hover: #ef5350; --text-light: #ffffff; --text-dark: #ffffff; --danger: #ff5252; --danger-hover: #ff8a80; --chat-bg: #212121; }
1342
+ {% elif settings.color_scheme == 'solar' %}
1343
+ :root { --bg-dark: #ff6f00; --bg-medium: #ff8f00; --accent: #ffca28; --accent-hover: #ffd54f; --text-light: #212121; --text-dark: #212121; --danger: #d32f2f; --danger-hover: #e57373; --chat-bg: #fff8e1; }
1344
+ {% elif settings.color_scheme == 'cyberpunk' %}
1345
+ :root { --bg-dark: #000000; --bg-medium: #0d0221; --accent: #00f0ff; --accent-hover: #81f5ff; --text-light: #ffffff; --text-dark: #ffffff; --danger: #f50057; --danger-hover: #ff4081; --chat-bg: #0a0116; }
1346
  {% else %}
1347
  :root { --bg-dark: #003C43; --bg-medium: #135D66; --accent: #48D1CC; --accent-hover: #77E4D8; --text-light: #E3FEF7; --text-dark: #333; --danger: #E57373; --danger-hover: #EF5350; --chat-bg: #f0f2f5; }
1348
  {% endif %}
 
2658
 
2659
  @app.route('/')
2660
  def index():
2661
+ return render_template_string(LANDING_PAGE_TEMPLATE)
2662
 
2663
  @app.route('/admhosto', methods=['GET'])
2664
  def admhosto():