fruitpicker01 commited on
Commit
f39b6dc
1 Parent(s): 7cfb07a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -8
app.py CHANGED
@@ -30,6 +30,7 @@ MISTRAL_API_KEY = os.getenv('MISTRAL_API_KEY')
30
  MISTRAL_API_KEY_2 = os.getenv('MISTRAL_API_KEY_2')
31
  MISTRAL_API_KEY_3 = os.getenv('MISTRAL_API_KEY_3')
32
  MISTRAL_API_KEY_4 = os.getenv('MISTRAL_API_KEY_4')
 
33
  token = os.getenv('GITHUB_TOKEN')
34
 
35
  # Клиент для генерации сообщений
@@ -39,6 +40,7 @@ client_mistral_generate = Mistral(api_key=MISTRAL_API_KEY)
39
  client_mistral_check = Mistral(api_key=MISTRAL_API_KEY_2)
40
  client_mistral_check_2 = Mistral(api_key=MISTRAL_API_KEY_3)
41
  client_mistral_check_3 = Mistral(api_key=MISTRAL_API_KEY_4)
 
42
 
43
  morph = pymorphy3.MorphAnalyzer()
44
 
@@ -346,7 +348,8 @@ async def generate_message_mistral_check_3(prompt, max_retries=5):
346
  print("Failed to get response from Mistral after maximum retries.")
347
  return None
348
 
349
- #def generate_check_gigachat_pro(prompt):
 
350
  # try:
351
  # messages = [SystemMessage(content=prompt)]
352
  # res2 = chat_pro_check(messages)
@@ -354,6 +357,34 @@ async def generate_message_mistral_check_3(prompt, max_retries=5):
354
  # return cleaned_message
355
  # except Exception as e:
356
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
 
358
  # Функция для замены сокращений с 'k' или 'К' на тысячи
359
  def replace_k_with_thousands(message):
@@ -1387,7 +1418,7 @@ async def check_synonymous_members(message):
1387
  если таких слов или выражений нет, **верни только** JSON {{"decision": false, "explanation": "<пояснение>"}}.
1388
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1389
 
1390
- response = await generate_message_mistral_check(prompt)
1391
  # await asyncio.sleep(3)
1392
  print("Mistral response:", response)
1393
  result = parse_json_response(response)
@@ -1425,7 +1456,7 @@ async def check_clickbait_phrases(message, description, benefits):
1425
 
1426
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1427
 
1428
- response = await generate_message_mistral_check(prompt)
1429
  # await asyncio.sleep(3)
1430
  print("Mistral response:", response)
1431
  result = parse_json_response(response)
@@ -1514,7 +1545,7 @@ async def check_specialized_terms(message):
1514
 
1515
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1516
 
1517
- response = await generate_message_mistral_check(prompt)
1518
  # await asyncio.sleep(3)
1519
  print("Mistral response:", response)
1520
  result = parse_json_response(response)
@@ -1543,7 +1574,7 @@ async def check_offensive_phrases(message):
1543
  если таких фраз нет, **верни только** JSON {{"decision": false, "explanation": "<пояснение>"}}.
1544
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1545
 
1546
- response = await generate_message_mistral_check(prompt)
1547
  # await asyncio.sleep(3)
1548
  print("Mistral response:", response)
1549
  result = parse_json_response(response)
@@ -1556,7 +1587,7 @@ async def check_offensive_phrases(message):
1556
  return None
1557
 
1558
  # 28. Проверка на речевые клише, рекламные штампы и канцеляризмы
1559
- async def check_cliches_and_bureaucratese_3(message, description, benefits):
1560
  print()
1561
  print("Проверка 28: Проверка на речевые клише, рекламные штампы и канцеляризмы")
1562
  print()
@@ -1588,7 +1619,7 @@ async def check_cliches_and_bureaucratese_3(message, description, benefits):
1588
  если в тексте **есть** такие выражения, **верни только** JSON {{"decision": true, "explanation": "<пояснение>"}}.
1589
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1590
 
1591
- response = await generate_message_mistral_check(prompt)
1592
  # await asyncio.sleep(3)
1593
  print("Mistral response:", response)
1594
  result = parse_json_response(response)
@@ -1674,7 +1705,7 @@ async def check_product_name_consistency(message, product_name):
1674
  Если название продукта **не** совпадает, **верни только** JSON {{"decision": true, "explanation": "<описание несоответствия>"}}.
1675
  **Не добавляй никакого дополнительного текста. Ответ должен быть только в формате JSON с закрывающими кавычками и скобками.**'''
1676
 
1677
- response = await generate_message_mistral_check(prompt)
1678
  # await asyncio.sleep(3)
1679
  print("Mistral response:", response)
1680
  result = parse_json_response(response)
 
30
  MISTRAL_API_KEY_2 = os.getenv('MISTRAL_API_KEY_2')
31
  MISTRAL_API_KEY_3 = os.getenv('MISTRAL_API_KEY_3')
32
  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
  # Клиент для генерации сообщений
 
40
  client_mistral_check = Mistral(api_key=MISTRAL_API_KEY_2)
41
  client_mistral_check_2 = Mistral(api_key=MISTRAL_API_KEY_3)
42
  client_mistral_check_3 = Mistral(api_key=MISTRAL_API_KEY_4)
43
+ client_mistral_check_4 = Mistral(api_key=MISTRAL_API_KEY_5)
44
 
45
  morph = pymorphy3.MorphAnalyzer()
46
 
 
348
  print("Failed to get response from Mistral after maximum retries.")
349
  return None
350
 
351
+ async def generate_message_mistral_check_4(prompt, max_retries=5):
352
+ #def generate_message_mistral_check(prompt):
353
  # try:
354
  # messages = [SystemMessage(content=prompt)]
355
  # res2 = chat_pro_check(messages)
 
357
  # return cleaned_message
358
  # except Exception as e:
359
  # return f"Ошибка при обращении к GigaChat-Pro: {e}"
360
+ retries = 0
361
+ while retries < max_retries:
362
+ try:
363
+ chat_response = await client_mistral_check_4.chat.complete_async(
364
+ model="mistral-large-latest",
365
+ temperature=0.2,
366
+ messages=[
367
+ {
368
+ "role": "user",
369
+ "content": prompt
370
+ },
371
+ ]
372
+ )
373
+ cleaned_message = clean_message(chat_response.choices[0].message.content.strip())
374
+ return cleaned_message
375
+ except Exception as e:
376
+ error_message = str(e)
377
+ if "Status 429" in error_message or "Server disconnected without sending a response" in error_message:
378
+ wait_time = 3
379
+ print(f"Rate limit exceeded or server did not respond. Waiting {wait_time} seconds before retrying...")
380
+ await asyncio.sleep(wait_time)
381
+ retries += 1
382
+ else:
383
+ print(f"Error calling Mistral: {e}")
384
+ return None
385
+ print("Failed to get response from Mistral after maximum retries.")
386
+ return None
387
+
388
 
389
  # Функция для замены сокращений с 'k' или 'К' на тысячи
390
  def replace_k_with_thousands(message):
 
1418
  если таких слов или выражений нет, **верни только** JSON {{"decision": false, "explanation": "<пояснение>"}}.
1419
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1420
 
1421
+ response = await generate_message_mistral_check_2(prompt)
1422
  # await asyncio.sleep(3)
1423
  print("Mistral response:", response)
1424
  result = parse_json_response(response)
 
1456
 
1457
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1458
 
1459
+ response = await generate_message_mistral_check_4(prompt)
1460
  # await asyncio.sleep(3)
1461
  print("Mistral response:", response)
1462
  result = parse_json_response(response)
 
1545
 
1546
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1547
 
1548
+ response = await generate_message_mistral_check_2(prompt)
1549
  # await asyncio.sleep(3)
1550
  print("Mistral response:", response)
1551
  result = parse_json_response(response)
 
1574
  если таких фраз нет, **верни только** JSON {{"decision": false, "explanation": "<пояснение>"}}.
1575
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1576
 
1577
+ response = await generate_message_mistral_check_4(prompt)
1578
  # await asyncio.sleep(3)
1579
  print("Mistral response:", response)
1580
  result = parse_json_response(response)
 
1587
  return None
1588
 
1589
  # 28. Проверка на речевые клише, рекламные штампы и канцеляризмы
1590
+ async def check_cliches_and_bureaucratese(message, description, benefits):
1591
  print()
1592
  print("Проверка 28: Проверка на речевые клише, рекламные штампы и канцеляризмы")
1593
  print()
 
1619
  если в тексте **есть** такие выражения, **верни только** JSON {{"decision": true, "explanation": "<пояснение>"}}.
1620
  **Не добавляй никакого дополнительного текста. Перед ответом убедись, что отвечаешь только в формате JSON с закрывающими кавычками и скобками.**'''
1621
 
1622
+ response = await generate_message_mistral_check_3(prompt)
1623
  # await asyncio.sleep(3)
1624
  print("Mistral response:", response)
1625
  result = parse_json_response(response)
 
1705
  Если название продукта **не** совпадает, **верни только** JSON {{"decision": true, "explanation": "<описание несоответствия>"}}.
1706
  **Не добавляй никакого дополнительного текста. Ответ должен быть только в формате JSON с закрывающими кавычками и скобками.**'''
1707
 
1708
+ response = await generate_message_mistral_check_3(prompt)
1709
  # await asyncio.sleep(3)
1710
  print("Mistral response:", response)
1711
  result = parse_json_response(response)