fruitpicker01 commited on
Commit
75eaff0
1 Parent(s): 37f9d6f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +146 -72
app.py CHANGED
@@ -20,6 +20,7 @@ from transformers import AutoTokenizer, AutoModel
20
  from utils import best_text_choice
21
  import asyncio
22
  import inspect
 
23
 
24
  tokenizer = AutoTokenizer.from_pretrained("ai-forever/ru-en-RoSBERTa")
25
  model = AutoModel.from_pretrained("ai-forever/ru-en-RoSBERTa")
@@ -33,6 +34,8 @@ MISTRAL_API_KEY_4 = os.getenv('MISTRAL_API_KEY_4')
33
  MISTRAL_API_KEY_5 = os.getenv('MISTRAL_API_KEY_5')
34
  token = os.getenv('GITHUB_TOKEN')
35
 
 
 
36
  # Клиент для генерации сообщений
37
  client_mistral_generate = Mistral(api_key=MISTRAL_API_KEY)
38
 
@@ -211,32 +214,64 @@ async def generate_message_mistral_generate(prompt, max_retries=5):
211
  retries = 0
212
  while retries < max_retries:
213
  try:
214
- chat_response = await client_mistral_generate.chat.complete_async(
215
- model="open-mistral-nemo",
216
- temperature=1.0,
217
- min_tokens=71,
218
- max_tokens=96,
219
- messages=[
220
- {
221
- "role": "user",
222
- "content": prompt
223
- },
224
- ]
225
  )
226
- cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
 
 
227
  return cleaned_message
 
228
  except Exception as e:
229
  error_message = str(e)
 
230
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
231
- wait_time = 3
232
- print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
233
  await asyncio.sleep(wait_time)
234
  retries += 1
235
  else:
236
- print(f"Error calling Mistral: {e}")
 
237
  return None
238
- print("Failed to get response from Mistral after maximum retries.")
 
 
239
  return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
 
241
  async def generate_message_mistral_check(prompt, max_retries=5):
242
  #def generate_message_mistral_check(prompt):
@@ -250,29 +285,31 @@ async def generate_message_mistral_check(prompt, max_retries=5):
250
  retries = 0
251
  while retries < max_retries:
252
  try:
253
- chat_response = await client_mistral_check.chat.complete_async(
254
- model="open-mistral-nemo",
255
- temperature=0.2,
256
- messages=[
257
- {
258
- "role": "user",
259
- "content": prompt
260
- },
261
- ]
262
  )
263
- cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
 
 
264
  return cleaned_message
 
265
  except Exception as e:
266
  error_message = str(e)
 
267
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
268
- wait_time = 3
269
- print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
270
  await asyncio.sleep(wait_time)
271
  retries += 1
272
  else:
273
- print(f"Error calling Mistral: {e}")
 
274
  return None
275
- print("Failed to get response from Mistral after maximum retries.")
 
 
276
  return None
277
 
278
  async def generate_message_mistral_check_2(prompt, max_retries=5):
@@ -284,33 +321,64 @@ async def generate_message_mistral_check_2(prompt, max_retries=5):
284
  # return cleaned_message
285
  # except Exception as e:
286
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
 
287
  retries = 0
288
  while retries < max_retries:
289
  try:
290
- chat_response = await client_mistral_check_2.chat.complete_async(
291
- model="open-mistral-nemo",
292
- temperature=0.2,
293
- messages=[
294
- {
295
- "role": "user",
296
- "content": prompt
297
- },
298
- ]
299
  )
300
- cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
 
 
301
  return cleaned_message
 
302
  except Exception as e:
303
  error_message = str(e)
 
304
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
305
- wait_time = 3
306
- print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
307
  await asyncio.sleep(wait_time)
308
  retries += 1
309
  else:
310
- print(f"Error calling Mistral: {e}")
 
311
  return None
312
- print("Failed to get response from Mistral after maximum retries.")
 
 
313
  return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
 
315
  async def generate_message_mistral_check_3(prompt, max_retries=5):
316
  #def generate_message_mistral_check(prompt):
@@ -321,32 +389,35 @@ async def generate_message_mistral_check_3(prompt, max_retries=5):
321
  # return cleaned_message
322
  # except Exception as e:
323
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
 
324
  retries = 0
325
  while retries < max_retries:
326
  try:
327
- chat_response = await client_mistral_check_3.chat.complete_async(
328
- model="open-mistral-nemo",
329
- temperature=0.2,
330
- messages=[
331
- {
332
- "role": "user",
333
- "content": prompt
334
- },
335
- ]
336
  )
337
- cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
 
 
338
  return cleaned_message
 
339
  except Exception as e:
340
  error_message = str(e)
 
341
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
342
- wait_time = 3
343
- print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
344
  await asyncio.sleep(wait_time)
345
  retries += 1
346
  else:
347
- print(f"Error calling Mistral: {e}")
 
348
  return None
349
- print("Failed to get response from Mistral after maximum retries.")
 
 
350
  return None
351
 
352
  async def generate_message_mistral_check_4(prompt, max_retries=5):
@@ -358,32 +429,35 @@ async def generate_message_mistral_check_4(prompt, max_retries=5):
358
  # return cleaned_message
359
  # except Exception as e:
360
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
 
361
  retries = 0
362
  while retries < max_retries:
363
  try:
364
- chat_response = await client_mistral_check_4.chat.complete_async(
365
- model="open-mistral-nemo",
366
- temperature=0.2,
367
- messages=[
368
- {
369
- "role": "user",
370
- "content": prompt
371
- },
372
- ]
373
  )
374
- cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
 
 
375
  return cleaned_message
 
376
  except Exception as e:
377
  error_message = str(e)
 
378
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
379
- wait_time = 3
380
- print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
381
  await asyncio.sleep(wait_time)
382
  retries += 1
383
  else:
384
- print(f"Error calling Mistral: {e}")
 
385
  return None
386
- print("Failed to get response from Mistral after maximum retries.")
 
 
387
  return None
388
 
389
 
 
20
  from utils import best_text_choice
21
  import asyncio
22
  import inspect
23
+ from together import AsyncTogether
24
 
25
  tokenizer = AutoTokenizer.from_pretrained("ai-forever/ru-en-RoSBERTa")
26
  model = AutoModel.from_pretrained("ai-forever/ru-en-RoSBERTa")
 
34
  MISTRAL_API_KEY_5 = os.getenv('MISTRAL_API_KEY_5')
35
  token = os.getenv('GITHUB_TOKEN')
36
 
37
+ async_client = AsyncTogether(api_key=os.environ.get("TOGETHER_API_KEY"))
38
+
39
  # Клиент для генерации сообщений
40
  client_mistral_generate = Mistral(api_key=MISTRAL_API_KEY)
41
 
 
214
  retries = 0
215
  while retries < max_retries:
216
  try:
217
+ # Отправляем запрос к модели Qwen через Together API
218
+ response = await async_client.chat.completions.create(
219
+ model="Qwen/Qwen2.5-72B-Instruct-Turbo",
220
+ messages=[{"role": "user", "content": prompt}],
221
+ temperature=0.8, # Параметры можно настроить по необходимости
222
+ max_tokens=74
 
 
 
 
 
223
  )
224
+
225
+ # Извлекаем и очищаем ответ
226
+ cleaned_message = clean_message(response.choices[0].message.content.strip())
227
  return cleaned_message
228
+
229
  except Exception as e:
230
  error_message = str(e)
231
+ # Проверяем, связана ли ошибка с превышением лимита или разрывом соединения
232
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
233
+ wait_time = 3 # Время ожидания перед повторной попыткой
234
+ print(f"Лимит запросов превышен или сервер не ответил. Ожидание {wait_time} секунд перед повторной попыткой...")
235
  await asyncio.sleep(wait_time)
236
  retries += 1
237
  else:
238
+ # Для других типов ошибок выводим сообщение и прекращаем попытки
239
+ print(f"Ошибка при вызове Together API: {e}")
240
  return None
241
+
242
+ # Если все попытки исчерпаны, сообщаем об этом
243
+ print("Не удалось получить ответ от Together API после максимального количества попыток.")
244
  return None
245
+
246
+ # retries = 0
247
+ # while retries < max_retries:
248
+ # try:
249
+ # chat_response = await client_mistral_generate.chat.complete_async(
250
+ # model="open-mistral-nemo",
251
+ # temperature=1.0,
252
+ # min_tokens=71,
253
+ # max_tokens=96,
254
+ # messages=[
255
+ # {
256
+ # "role": "user",
257
+ # "content": prompt
258
+ # },
259
+ # ]
260
+ # )
261
+ # cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
262
+ # return cleaned_message
263
+ # except Exception as e:
264
+ # error_message = str(e)
265
+ # if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
266
+ # wait_time = 3
267
+ # print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
268
+ # await asyncio.sleep(wait_time)
269
+ # retries += 1
270
+ # else:
271
+ # print(f"Error calling Mistral: {e}")
272
+ # return None
273
+ # print("Failed to get response from Mistral after maximum retries.")
274
+ # return None
275
 
276
  async def generate_message_mistral_check(prompt, max_retries=5):
277
  #def generate_message_mistral_check(prompt):
 
285
  retries = 0
286
  while retries < max_retries:
287
  try:
288
+ # Отправляем запрос к модели Qwen через Together API
289
+ response = await async_client.chat.completions.create(
290
+ model="Qwen/Qwen2.5-72B-Instruct-Turbo",
291
+ messages=[{"role": "user", "content": prompt}],
 
 
 
 
 
292
  )
293
+
294
+ # Извлекаем и очищаем ответ
295
+ cleaned_message = clean_message(response.choices[0].message.content.strip())
296
  return cleaned_message
297
+
298
  except Exception as e:
299
  error_message = str(e)
300
+ # Проверяем, связана ли ошибка с превышением лимита или разрывом соединения
301
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
302
+ wait_time = 3 # Время ожидания перед повторной попыткой
303
+ print(f"Лимит запросов превышен или сервер не ответил. Ожидание {wait_time} секунд перед повторной попыткой...")
304
  await asyncio.sleep(wait_time)
305
  retries += 1
306
  else:
307
+ # Для других типов ошибок выводим сообщение и прекращаем попытки
308
+ print(f"Ошибка при вызове Together API: {e}")
309
  return None
310
+
311
+ # Если все попытки исчерпаны, сообщаем об этом
312
+ print("Не удалось получить ответ от Together API после максимального количества попыток.")
313
  return None
314
 
315
  async def generate_message_mistral_check_2(prompt, max_retries=5):
 
321
  # return cleaned_message
322
  # except Exception as e:
323
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
324
+
325
  retries = 0
326
  while retries < max_retries:
327
  try:
328
+ # Отправляем запрос к модели Qwen через Together API
329
+ response = await async_client.chat.completions.create(
330
+ model="Qwen/Qwen2.5-72B-Instruct-Turbo",
331
+ messages=[{"role": "user", "content": prompt}],
 
 
 
 
 
332
  )
333
+
334
+ # Извлекаем и очищаем ответ
335
+ cleaned_message = clean_message(response.choices[0].message.content.strip())
336
  return cleaned_message
337
+
338
  except Exception as e:
339
  error_message = str(e)
340
+ # Проверяем, связана ли ошибка с превышением лимита или разрывом соединения
341
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
342
+ wait_time = 3 # Время ожидания перед повторной попыткой
343
+ print(f"Лимит запросов превышен или сервер не ответил. Ожидание {wait_time} секунд перед повторной попыткой...")
344
  await asyncio.sleep(wait_time)
345
  retries += 1
346
  else:
347
+ # Для других типов ошибок выводим сообщение и прекращаем попытки
348
+ print(f"Ошибка при вызове Together API: {e}")
349
  return None
350
+
351
+ # Если все попытки исчерпаны, сообщаем об этом
352
+ print("Не удалось получить ответ от Together API после максимального к��личества попыток.")
353
  return None
354
+
355
+ # retries = 0
356
+ # while retries < max_retries:
357
+ # try:
358
+ # chat_response = await client_mistral_check_2.chat.complete_async(
359
+ # model="open-mistral-nemo",
360
+ # temperature=0.2,
361
+ # messages=[
362
+ # {
363
+ # "role": "user",
364
+ # "content": prompt
365
+ # },
366
+ # ]
367
+ # )
368
+ # cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
369
+ # return cleaned_message
370
+ # except Exception as e:
371
+ # error_message = str(e)
372
+ # if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
373
+ # wait_time = 3
374
+ # print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
375
+ # await asyncio.sleep(wait_time)
376
+ # retries += 1
377
+ # else:
378
+ # print(f"Error calling Mistral: {e}")
379
+ # return None
380
+ # print("Failed to get response from Mistral after maximum retries.")
381
+ # return None
382
 
383
  async def generate_message_mistral_check_3(prompt, max_retries=5):
384
  #def generate_message_mistral_check(prompt):
 
389
  # return cleaned_message
390
  # except Exception as e:
391
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
392
+
393
  retries = 0
394
  while retries < max_retries:
395
  try:
396
+ # Отправляем запрос к модели Qwen через Together API
397
+ response = await async_client.chat.completions.create(
398
+ model="Qwen/Qwen2.5-72B-Instruct-Turbo",
399
+ messages=[{"role": "user", "content": prompt}],
 
 
 
 
 
400
  )
401
+
402
+ # Извлекаем и очищаем ответ
403
+ cleaned_message = clean_message(response.choices[0].message.content.strip())
404
  return cleaned_message
405
+
406
  except Exception as e:
407
  error_message = str(e)
408
+ # Проверяем, связана ли ошибка с превышением лимита или разрывом соединения
409
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
410
+ wait_time = 3 # Время ожидания перед повторной попыткой
411
+ print(f"Лимит запросов превышен или сервер не ответил. Ожидание {wait_time} секунд перед повторной попыткой...")
412
  await asyncio.sleep(wait_time)
413
  retries += 1
414
  else:
415
+ # Для других типов ошибок выводим сообщение и прекращаем попытки
416
+ print(f"Ошибка при вызове Together API: {e}")
417
  return None
418
+
419
+ # Если все попытки исчерпаны, сообщаем об этом
420
+ print("Не удалось получить ответ от Together API после максимального количества попыток.")
421
  return None
422
 
423
  async def generate_message_mistral_check_4(prompt, max_retries=5):
 
429
  # return cleaned_message
430
  # except Exception as e:
431
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
432
+
433
  retries = 0
434
  while retries < max_retries:
435
  try:
436
+ # Отправляем запрос к модели Qwen через Together API
437
+ response = await async_client.chat.completions.create(
438
+ model="Qwen/Qwen2.5-72B-Instruct-Turbo",
439
+ messages=[{"role": "user", "content": prompt}],
 
 
 
 
 
440
  )
441
+
442
+ # Извлекаем и очищаем ответ
443
+ cleaned_message = clean_message(response.choices[0].message.content.strip())
444
  return cleaned_message
445
+
446
  except Exception as e:
447
  error_message = str(e)
448
+ # Проверяем, связана ли ошибка с превышением лимита или разрывом соединения
449
  if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
450
+ wait_time = 3 # Время ожидания перед повторной попыткой
451
+ print(f"Лимит запросов превышен или сервер не ответил. Ожидание {wait_time} секунд перед повторной попыткой...")
452
  await asyncio.sleep(wait_time)
453
  retries += 1
454
  else:
455
+ # Для других типов ошибок выводим сообщение и прекращаем попытки
456
+ print(f"Ошибка при вызове Together API: {e}")
457
  return None
458
+
459
+ # Если все попытки исчерпаны, сообщаем об этом
460
+ print("Не удалось получить ответ от Together API после максимального количества попыток.")
461
  return None
462
 
463