Rooni commited on
Commit
ed7ed0d
·
verified ·
1 Parent(s): ca01b8b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -25
app.py CHANGED
@@ -1,10 +1,8 @@
1
  import gradio as gr
2
  import requests
3
- #from matplotlib import container
4
- #from gradio_autocompletetextbox import AutocompleteTextbox
5
- #from numpy import place
6
  import json
7
  import os
 
8
 
9
  what = [
10
  "Новый Год", "День Рождения", "Рождество Христово", "День защитника Отечества (23 февраля)", "Международный женский день (8 марта)", "Праздник Весны и Труда (1 мая)", "День Победы (9 мая)", "День России (12 июня)", "День народного единства (4 ноября)", "Старый Новый год", "Масленица", "Пасха", "Троица", "День знаний (1 сентября)", "День матери (последнее воскресенье ноября)"
@@ -13,10 +11,11 @@ whom = [
13
  "Маме", "Папе", "Родителям", "Ребенку", "Детям", "Сыну", "Дочери", "Внуку", "Внукам", "Бабушке", "Дедушке", "Сестре", "Брату", "Племяннику", "Племяннице", "Другу", "Подруге", "Друзьям", "Подругам", "Супругу", "Супруге", "Партнеру", "Партнерше", "Коллеге", "Коллегам", "Начальнику", "Начальнице", "Боссу", "Ментору", "Учителю", "Учителям", "Студенту", "Студентке", "Клиенту", "Клиентке", "Пациенту", "Пациентке", "Члену семьи", "Членам семьи", "Теще", "Свекру", "Свекрови", "Законному отцу", "Законной матери", "Законным родителям", "Законному ребенку", "Законным детям", "Члену команды", "Членам команды", "Коллеге по работе", "Коллегам по работе", "Коллеге по учебе", "Коллегам по учебе", "Любимому", "Любимой", "Родственнику", "Родственнице", "Родственникам", "Знакомому", "Знакомой", "Знакомым", "Соседу", "Соседке", "Соседям", "Однокласснику", "Однокласснице", "Одноклассникам", "Одногруппнику", "Одногруппнице", "Одногруппникам", "Куму", "Куме", "Крестнику", "Крестнице", "Крестным", "Руководителю", "Подчиненному", "Подчиненным", "Преподавателю", "Преподавателям", "Воспитаннику", "Воспитанникам", "Ученику", "Ученикам", "Наставнику", "Консультанту", "Специалисту", "Юбиляру", "Имениннику", "Имениннице"
14
  ]
15
 
16
- # Функция для генерации текста
17
  def generate(whomtb="Бабушке", fromtb="Внука", whattb="Новый Год", doptb=""):
18
  if not whomtb or not whattb:
19
- return None
 
20
 
21
  system_role = """Ты поздравитель, написатель шикарных, искренних поздравлений. Пользователь будет писать с чем поздравить, кого и возможно дополнительную информацию. Твоя задача - написать по запросу пользователя ИДЕАЛЬНОЕ поздравление. Без форматирования"""
22
  user_msg = f"На праздник: '{whattb}', кому: '{whomtb}', от: '{fromtb}', дополнительно: '{doptb}'"
@@ -29,28 +28,35 @@ def generate(whomtb="Бабушке", fromtb="Внука", whattb="Новый Г
29
  payload = {
30
  'messages': [{'role': 'system', 'content': system_role}, {'role': 'user', 'content': user_msg}],
31
  'max_tokens': 2500,
32
- 'model': "openai"
 
33
  }
34
-
35
  try:
36
- response = requests.post(os.getenv("BASE_URL"), headers=headers, json=payload, timeout=200)
37
- response.raise_for_status() # Проверяем на ошибки HTTP
38
- data = response.json() # Используем response.json() вместо json.loads()
39
-
40
- if 'choices' in data and len(data['choices']) > 0:
41
- congratulation = data['choices'][0]['message']['content'].strip()
42
- print("Генерация успешна")
43
- return congratulation
44
- elif 'error' in data:
45
- error_message = data['error']['message']
46
- print(f'Ошибка: {error_message}')
47
- return f"Ошибка сервера!"
48
- else:
49
- print(f'Не удалось написать поздравление. Ответ сервера: {data}') # Выводим ответ сервера для отладки
50
- return "Неизвестная ошибка!"
 
 
 
 
 
51
  except requests.exceptions.RequestException as e:
52
  print(f"Ошибка запроса: {e}")
53
- return f"Ошибка запроса!"
 
54
 
55
  # Ссылка на файл CSS
56
  css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
@@ -66,10 +72,8 @@ with gr.Blocks(css=css) as demo:
66
  with gr.Column():
67
  with gr.Row():
68
  fromtb = gr.Textbox(show_label=True, placeholder="Внука", label="От кого", interactive=True, container=True,)
69
- #whomtb = AutocompleteTextbox(show_label=True, value="Бабушке", label="Кому", commands=whom, interactive=True, container=True,)
70
  whomtb = gr.Textbox(show_label=True, placeholder="Бабушке", label="Кому", interactive=True, container=True,)
71
  with gr.Row():
72
- #whattb = AutocompleteTextbox(show_label=True, value="Новый Год", label="Праздник", commands=what, interactive=True, container=True,)
73
  whattb = gr.Textbox(show_label=True, placeholder="Новый Год", label="Праздник", interactive=True, container=True,)
74
  with gr.Row():
75
  doptb = gr.Textbox(show_label=True, placeholder="50-летней", label="Дополнительно")
 
1
  import gradio as gr
2
  import requests
 
 
 
3
  import json
4
  import os
5
+ import time
6
 
7
  what = [
8
  "Новый Год", "День Рождения", "Рождество Христово", "День защитника Отечества (23 февраля)", "Международный женский день (8 марта)", "Праздник Весны и Труда (1 мая)", "День Победы (9 мая)", "День России (12 июня)", "День народного единства (4 ноября)", "Старый Новый год", "Масленица", "Пасха", "Троица", "День знаний (1 сентября)", "День матери (последнее воскресенье ноября)"
 
11
  "Маме", "Папе", "Родителям", "Ребенку", "Детям", "Сыну", "Дочери", "Внуку", "Внукам", "Бабушке", "Дедушке", "Сестре", "Брату", "Племяннику", "Племяннице", "Другу", "Подруге", "Друзьям", "Подругам", "Супругу", "Супруге", "Партнеру", "Партнерше", "Коллеге", "Коллегам", "Начальнику", "Начальнице", "Боссу", "Ментору", "Учителю", "Учителям", "Студенту", "Студентке", "Клиенту", "Клиентке", "Пациенту", "Пациентке", "Члену семьи", "Членам семьи", "Теще", "Свекру", "Свекрови", "Законному отцу", "Законной матери", "Законным родителям", "Законному ребенку", "Законным детям", "Члену команды", "Членам команды", "Коллеге по работе", "Коллегам по работе", "Коллеге по учебе", "Коллегам по учебе", "Любимому", "Любимой", "Родственнику", "Родственнице", "Родственникам", "Знакомому", "Знакомой", "Знакомым", "Соседу", "Соседке", "Соседям", "Однокласснику", "Однокласснице", "Одноклассникам", "Одногруппнику", "Одногруппнице", "Одногруппникам", "Куму", "Куме", "Крестнику", "Крестнице", "Крестным", "Руководителю", "Подчиненному", "Подчиненным", "Преподавателю", "Преподавателям", "Воспитаннику", "Воспитанникам", "Ученику", "Ученикам", "Наставнику", "Консультанту", "Специалисту", "Юбиляру", "Имениннику", "Имениннице"
12
  ]
13
 
14
+ # Функция для генерации текста с потоковой передачей
15
  def generate(whomtb="Бабушке", fromtb="Внука", whattb="Новый Год", doptb=""):
16
  if not whomtb or not whattb:
17
+ yield "Пожалуйста, заполните все обязательные поля."
18
+ return
19
 
20
  system_role = """Ты поздравитель, написатель шикарных, искренних поздравлений. Пользователь будет писать с чем поздравить, кого и возможно дополнительную информацию. Твоя задача - написать по запросу пользователя ИДЕАЛЬНОЕ поздравление. Без форматирования"""
21
  user_msg = f"На праздник: '{whattb}', кому: '{whomtb}', от: '{fromtb}', дополнительно: '{doptb}'"
 
28
  payload = {
29
  'messages': [{'role': 'system', 'content': system_role}, {'role': 'user', 'content': user_msg}],
30
  'max_tokens': 2500,
31
+ 'model': "openai",
32
+ 'stream': True # Включаем потоковую передачу
33
  }
34
+
35
  try:
36
+ response = requests.post(os.getenv("BASE_URL"), headers=headers, json=payload, stream=True, timeout=200)
37
+ response.raise_for_status() # Проверяем на ошибки HTTP
38
+
39
+ full_text = ""
40
+ for chunk in response.iter_lines():
41
+ if chunk:
42
+ try:
43
+ chunk = chunk.decode('utf-8').replace("data: ", "")
44
+ if chunk == "[DONE]":
45
+ break
46
+ chunk_data = json.loads(chunk)
47
+ if 'choices' in chunk_data and len(chunk_data['choices']) > 0:
48
+ text_chunk = chunk_data['choices'][0]['delta'].get('content', "")
49
+ full_text += text_chunk
50
+ yield full_text # Выводим текст как итератор
51
+ except json.JSONDecodeError:
52
+ continue
53
+ if not full_text:
54
+ yield "Не удалось получить ответ от сервера."
55
+
56
  except requests.exceptions.RequestException as e:
57
  print(f"Ошибка запроса: {e}")
58
+ yield f"Ошибка запроса!"
59
+
60
 
61
  # Ссылка на файл CSS
62
  css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
 
72
  with gr.Column():
73
  with gr.Row():
74
  fromtb = gr.Textbox(show_label=True, placeholder="Внука", label="От кого", interactive=True, container=True,)
 
75
  whomtb = gr.Textbox(show_label=True, placeholder="Бабушке", label="Кому", interactive=True, container=True,)
76
  with gr.Row():
 
77
  whattb = gr.Textbox(show_label=True, placeholder="Новый Год", label="Праздник", interactive=True, container=True,)
78
  with gr.Row():
79
  doptb = gr.Textbox(show_label=True, placeholder="50-летней", label="Дополнительно")