Spaces:
Sleeping
Sleeping
fruitpicker01
commited on
Commit
•
f39b6dc
1
Parent(s):
7cfb07a
Update app.py
Browse files
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 |
-
|
|
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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)
|