Rooni commited on
Commit
04d2f1c
1 Parent(s): 06df5af

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -17
app.py CHANGED
@@ -8,7 +8,8 @@ import os
8
  # functions
9
  def generate(description):
10
  if not description:
11
- return None, None
 
12
 
13
  headers = {
14
  'Content-Type': 'application/json',
@@ -18,28 +19,36 @@ def generate(description):
18
  payload = {
19
  'messages': [{'role': 'system', 'content': f'Ты - корректор текста. Пользователь будет отправлять тебе сообщения, а ты должен исправлять в них все ГРАММАТИЧЕСКИЕ ошибки (в том числе и знаки припенания). Отвечать ты должен без лишних символов, только исправленный запрос пользователя, без markdown. Не надо писать вроде этого: "Вот ваш исправленный тексст: ...", пиши сразу "...". И не нужно выделять то, что ты исправил, просто напиши всё правильно, без грамматических ошибок. Начинаем, ниже сообщение пользователя'}, {'role': 'user', 'content': description}],
20
  'max_tokens': 150000,
21
- 'model': "gemini-1.5-pro-latest"
 
22
  }
23
 
24
  try:
25
- response = requests.post(f'{os.getenv("BASE_URL")}v1/chat/completions', headers=headers, json=payload)
26
  response.raise_for_status() # Проверяем на ошибки HTTP
27
- data = response.json() # Используем response.json() вместо json.loads()
28
 
29
- if 'choices' in data and len(data['choices']) > 0:
30
- correct = data['choices'][0]['message']['content'].strip()
31
- print("Генерация успешна")
32
- return correct
33
- elif 'error' in data:
34
- error_message = data['error']['message']
35
- print(f'Ошибка: {error_message}')
36
- return f"**Ошибка сервера!**\n\n```\n{error_message}\n```"
37
- else:
38
- print(f'Не удалось сгенерировать текст. Ответ сервера: {data}') # Выводим ответ сервера для отладки
39
- return "**Неизвестная ошибка!**"
 
 
 
 
 
40
  except requests.exceptions.RequestException as e:
41
  print(f"Ошибка запроса: {e}")
42
- return f"**Ошибка запроса!**\n\n```\n{e}\n```", f"Ошибка запроса!\n\n{e}"
 
 
 
43
 
44
 
45
  # Ссылка на файл CSS
@@ -62,6 +71,6 @@ with gr.Blocks(css=css) as demo:
62
  with gr.Tab("Ответ"):
63
  text_output = gr.Textbox(show_label=False, placeholder="Привет, как дела?")
64
 
65
- text_button.click(generate, inputs=[promt], outputs=[text_output], concurrency_limit=512)
66
 
67
  demo.queue(api_open=False).launch()
 
8
  # functions
9
  def generate(description):
10
  if not description:
11
+ yield None
12
+ return
13
 
14
  headers = {
15
  'Content-Type': 'application/json',
 
19
  payload = {
20
  'messages': [{'role': 'system', 'content': f'Ты - корректор текста. Пользователь будет отправлять тебе сообщения, а ты должен исправлять в них все ГРАММАТИЧЕСКИЕ ошибки (в том числе и знаки припенания). Отвечать ты должен без лишних символов, только исправленный запрос пользователя, без markdown. Не надо писать вроде этого: "Вот ваш исправленный тексст: ...", пиши сразу "...". И не нужно выделять то, что ты исправил, просто напиши всё правильно, без грамматических ошибок. Начинаем, ниже сообщение пользователя'}, {'role': 'user', 'content': description}],
21
  'max_tokens': 150000,
22
+ 'model': "gemini-1.5-pro-latest",
23
+ 'stream': True # Добавляем stream=True
24
  }
25
 
26
  try:
27
+ response = requests.post(f'{os.getenv("BASE_URL")}v1/chat/completions', headers=headers, json=payload, stream=True, timeout=200)
28
  response.raise_for_status() # Проверяем на ошибки HTTP
 
29
 
30
+ full_text = ""
31
+ for chunk in response.iter_lines():
32
+ if chunk:
33
+ try:
34
+ chunk = chunk.decode('utf-8').replace("data: ", "")
35
+ if chunk == "[DONE]":
36
+ break
37
+ chunk_data = json.loads(chunk)
38
+ if 'choices' in chunk_data and len(chunk_data['choices']) > 0:
39
+ text_chunk = chunk_data['choices'][0]['delta'].get('content', "")
40
+ full_text += text_chunk
41
+ yield full_text # Выводим текст как итератор
42
+ except json.JSONDecodeError:
43
+ continue
44
+ if not full_text:
45
+ yield "Не удалось получить ответ от сервера."
46
  except requests.exceptions.RequestException as e:
47
  print(f"Ошибка запроса: {e}")
48
+ yield f"**Ошибка запроса!**\n\n```\n{e}\n```"
49
+ except Exception as e:
50
+ print(f"Ошибка: {str(e)}")
51
+ yield "Произошла ошибка при генерации"
52
 
53
 
54
  # Ссылка на файл CSS
 
71
  with gr.Tab("Ответ"):
72
  text_output = gr.Textbox(show_label=False, placeholder="Привет, как дела?")
73
 
74
+ text_button.click(generate, inputs=[promt], outputs=[text_output], concurrency_limit=250)
75
 
76
  demo.queue(api_open=False).launch()