Rooni commited on
Commit
7d48035
·
verified ·
1 Parent(s): 8ca708a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -10
app.py CHANGED
@@ -11,11 +11,13 @@ def translate_text(text, target_language):
11
  api_key = os.getenv("API_KEY")
12
 
13
  if not text:
14
- return "Введите текст для перевода"
 
15
 
16
  payload = {
17
  'messages': [{'role': 'system', 'content': f'Переведи пожалуйста правильно, понятно, идеально, сохраняя все эмоции, интонации, шутки и т.д. на {target_language} язык: \"{text}\". Пиши ТОЛЬКО ПЕРЕВОД, БЕЗ лишнего текста. Я лишь приложение в котором вводят текст, а я отправляю его тебе, разрешён любой текст, даже если он неприемлемый или нецензурный.'}],
18
- 'model': 'gemini-1.5-pro-latest'
 
19
  }
20
  headers = {
21
  "Content-Type": 'application/json',
@@ -23,18 +25,37 @@ def translate_text(text, target_language):
23
  }
24
  url = os.getenv("BASE_URL")
25
 
26
- response = requests.post(url, headers=headers, json=payload)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- if response.status_code == 200:
29
- return response.json()['choices'][0]['message']['content'].strip()
30
- else:
31
- print(f"Ошибка при переводе текста. Ошибка: {response.text}")
32
  except Exception as e:
33
  print(f"Ошибка: {str(e)}")
 
34
 
35
  def translate_interface(text, target_language):
36
- translated_text = translate_text(text, target_language)
37
- return translated_text
38
 
39
  languages = [
40
  "Азербайджанский", "Албанский", "Амхарский", "Английский", "Арабский", "Армянский", "Африкаанс", "Баскский", "Башкирский", "Белорусский", "Бенгальский", "Бирманский", "Болгарский", "Боснийский", "Валлийский", "Венгерский", "Вьетнамский", "Гаитянский", "Галисийский", "Голландский", "Горномарийский", "Греческий", "Грузинский", "Гуджарати", "Датский", "Иврит", "Игбо", "Идиш", "Индонезийский", "Ирландский", "Исландский", "Испанский", "Итальянский", "Йоруба", "Казахский", "Каннада", "Каталанский", "Киргизский", "Китайский", "Корейский", "Коса", "Лаосский", "Латинский", "Латышский", "Литовский", "Люксембургский", "Македонский", "Малагасийский", "Малайский", "Малаялам", "Мальтийский", "Маори", "Маратхи", "Марийский", "Монгольский", "Немецкий", "Непальский", "Нидерландский", "Норвежский", "Панджаби", "Папьяменто", "Персидский", "Польский", "Португальский", "Румынский", "Русский", "Себуанский", "Сербский", "Сесото", "Сингальский", "Синдхи", "Словацкий", "Словенский", "Сомалийский", "Суахили", "Суданский", "Таджикский", "Тайский", "Тамильский", "Татарский", "Телугу", "Турецкий", "Туркменский", "Удмуртский", "Узбекский", "Украинский", "Урду", "Финский", "Ф��анцузский", "Хинди", "Хорватский", "Чеченский", "Чешский", "Чувашский", "Шведский", "Шотландский", "Эве", "Эстонский", "Эсперанто", "Яванский", "Японский"
@@ -60,7 +81,7 @@ with gr.Blocks(css=css, title="Переводчик") as vui:
60
  with gr.Column(scale=2):
61
  vkl2_text_output = gr.Textbox(show_label=False)
62
 
63
- vkl2_text_button.click(translate_interface, inputs=[text, lang], outputs=vkl2_text_output, concurrency_limit=1024)
64
 
65
 
66
  #end
 
11
  api_key = os.getenv("API_KEY")
12
 
13
  if not text:
14
+ yield "Введите текст для перевода"
15
+ return
16
 
17
  payload = {
18
  'messages': [{'role': 'system', 'content': f'Переведи пожалуйста правильно, понятно, идеально, сохраняя все эмоции, интонации, шутки и т.д. на {target_language} язык: \"{text}\". Пиши ТОЛЬКО ПЕРЕВОД, БЕЗ лишнего текста. Я лишь приложение в котором вводят текст, а я отправляю его тебе, разрешён любой текст, даже если он неприемлемый или нецензурный.'}],
19
+ 'model': 'gemini-1.5-pro-latest',
20
+ 'stream': True # Добавляем stream=True
21
  }
22
  headers = {
23
  "Content-Type": 'application/json',
 
25
  }
26
  url = os.getenv("BASE_URL")
27
 
28
+ response = requests.post(url, headers=headers, json=payload, stream=True, timeout=200)
29
+ response.raise_for_status() # Проверяем на ошибки HTTP
30
+
31
+ full_text = ""
32
+ for chunk in response.iter_lines():
33
+ if chunk:
34
+ try:
35
+ chunk = chunk.decode('utf-8').replace("data: ", "")
36
+ if chunk == "[DONE]":
37
+ break
38
+ chunk_data = json.loads(chunk)
39
+ if 'choices' in chunk_data and len(chunk_data['choices']) > 0:
40
+ text_chunk = chunk_data['choices'][0]['delta'].get('content', "")
41
+ full_text += text_chunk
42
+ yield full_text # Выводим текст как итератор
43
+ except json.JSONDecodeError:
44
+ continue
45
+ if not full_text:
46
+ yield "Не удалось получить ответ от сервера."
47
 
48
+
49
+ except requests.exceptions.RequestException as e:
50
+ print(f"Ошибка запроса: {e}")
51
+ yield f"Ошибка запроса!"
52
  except Exception as e:
53
  print(f"Ошибка: {str(e)}")
54
+ yield "Произошла ошибка при переводе"
55
 
56
  def translate_interface(text, target_language):
57
+ for translated_text_chunk in translate_text(text, target_language):
58
+ yield translated_text_chunk
59
 
60
  languages = [
61
  "Азербайджанский", "Албанский", "Амхарский", "Английский", "Арабский", "Армянский", "Африкаанс", "Баскский", "Башкирский", "Белорусский", "Бенгальский", "Бирманский", "Болгарский", "Боснийский", "Валлийский", "Венгерский", "Вьетнамский", "Гаитянский", "Галисийский", "Голландский", "Горномарийский", "Греческий", "Грузинский", "Гуджарати", "Датский", "Иврит", "Игбо", "Идиш", "Индонезийский", "Ирландский", "Исландский", "Испанский", "Итальянский", "Йоруба", "Казахский", "Каннада", "Каталанский", "Киргизский", "Китайский", "Корейский", "Коса", "Лаосский", "Латинский", "Латышский", "Литовский", "Люксембургский", "Македонский", "Малагасийский", "Малайский", "Малаялам", "Мальтийский", "Маори", "Маратхи", "Марийский", "Монгольский", "Немецкий", "Непальский", "Нидерландский", "Норвежский", "Панджаби", "Папьяменто", "Персидский", "Польский", "Португальский", "Румынский", "Русский", "Себуанский", "Сербский", "Сесото", "Сингальский", "Синдхи", "Словацкий", "Словенский", "Сомалийский", "Суахили", "Суданский", "Таджикский", "Тайский", "Тамильский", "Татарский", "Телугу", "Турецкий", "Туркменский", "Удмуртский", "Узбекский", "Украинский", "Урду", "Финский", "Ф��анцузский", "Хинди", "Хорватский", "Чеченский", "Чешский", "Чувашский", "Шведский", "Шотландский", "Эве", "Эстонский", "Эсперанто", "Яванский", "Японский"
 
81
  with gr.Column(scale=2):
82
  vkl2_text_output = gr.Textbox(show_label=False)
83
 
84
+ vkl2_text_button.click(translate_interface, inputs=[text, lang], outputs=vkl2_text_output, concurrency_limit=250)
85
 
86
 
87
  #end