Spaces:
Sleeping
Sleeping
rafaldembski
commited on
Commit
•
3e18d05
1
Parent(s):
b453216
Update utils/functions.py
Browse files- utils/functions.py +9 -48
utils/functions.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
import phonenumbers
|
2 |
from phonenumbers import geocoder, carrier
|
3 |
import re
|
4 |
-
import requests #
|
5 |
import os
|
6 |
import json
|
7 |
from datetime import datetime
|
@@ -18,6 +18,7 @@ def init_fake_numbers_file():
|
|
18 |
if not os.path.exists(FAKE_NUMBERS_FILE):
|
19 |
with open(FAKE_NUMBERS_FILE, 'w') as f:
|
20 |
json.dump([], f)
|
|
|
21 |
else:
|
22 |
try:
|
23 |
with open(FAKE_NUMBERS_FILE, 'r') as f:
|
@@ -26,6 +27,7 @@ def init_fake_numbers_file():
|
|
26 |
# Jeśli plik jest uszkodzony lub pusty, zresetuj go do pustej listy
|
27 |
with open(FAKE_NUMBERS_FILE, 'w') as f:
|
28 |
json.dump([], f)
|
|
|
29 |
|
30 |
# Dodanie numeru telefonu do pliku JSON
|
31 |
def add_fake_number(phone_number):
|
@@ -43,11 +45,13 @@ def add_fake_number(phone_number):
|
|
43 |
try:
|
44 |
with open(FAKE_NUMBERS_FILE, 'w') as f:
|
45 |
json.dump(fake_numbers, f, indent=4)
|
|
|
46 |
return True
|
47 |
except Exception as e:
|
48 |
logging.error(f"Nie udało się zapisać numeru {phone_number}: {e}")
|
49 |
return False
|
50 |
else:
|
|
|
51 |
return False # Numer już istnieje
|
52 |
|
53 |
# Sprawdzenie, czy numer telefonu jest w pliku JSON
|
@@ -57,6 +61,7 @@ def is_fake_number(phone_number):
|
|
57 |
fake_numbers = json.load(f)
|
58 |
return any(entry["phone_number"] == phone_number for entry in fake_numbers)
|
59 |
except (json.JSONDecodeError, FileNotFoundError):
|
|
|
60 |
return False
|
61 |
|
62 |
# Funkcja do weryfikacji numeru telefonu
|
@@ -66,7 +71,8 @@ def get_phone_info(phone_number):
|
|
66 |
country = geocoder.description_for_number(parsed_number, 'pl')
|
67 |
operator = carrier.name_for_number(parsed_number, 'pl')
|
68 |
return country, operator
|
69 |
-
except phonenumbers.NumberParseException:
|
|
|
70 |
return None, None
|
71 |
|
72 |
# Proste sprawdzenia heurystyczne wiadomości
|
@@ -125,52 +131,7 @@ Jesteś zaawansowanym asystentem AI specjalizującym się w identyfikacji fałsz
|
|
125 |
- Jeśli to możliwe, zasugeruj dodatkowe środki ostrożności, które użytkownik może podjąć, aby chronić swoje dane osobowe i finansowe.
|
126 |
</recommendations>
|
127 |
""",
|
128 |
-
|
129 |
-
Du bist ein fortgeschrittener KI-Assistent, spezialisiert auf die Identifizierung gefälschter SMS-Nachrichten. Deine Aufgabe ist es, eine detaillierte Analyse der Nachricht durchzuführen, indem du einen tiefgreifenden Denkprozess nutzt und eine umfassende Bewertung lieferst. Deine Antwort sollte in drei Abschnitte unterteilt sein:
|
130 |
-
|
131 |
-
<analysis>
|
132 |
-
**Nachrichteninhaltsanalyse:**
|
133 |
-
- Führe eine detaillierte Analyse des Nachrichteninhalts durch und identifiziere potenzielle rote Flaggen wie sprachliche Fehler, Aufforderungen zur Preisgabe persönlicher Daten, dringende Kontaktanfragen usw.
|
134 |
-
- Beschreibe den sprachlichen und kulturellen Kontext der Nachricht.
|
135 |
-
- Identifiziere alle Elemente, die darauf hindeuten könnten, dass die Nachricht ein Versuch ist, Informationen oder Geld zu erlangen.
|
136 |
-
</analysis>
|
137 |
-
|
138 |
-
<risk_assessment>
|
139 |
-
**Betrugsrisikobewertung:**
|
140 |
-
- Basierend auf der Inhaltsanalyse und den verfügbaren Informationen, bewerte die Wahrscheinlichkeit, dass die Nachricht ein Betrug ist. Verwende eine Skala von 1 bis 10, wobei 1 sehr geringes Risiko und 10 sehr hohes Risiko bedeutet.
|
141 |
-
- Erkläre, welche Faktoren diese Bewertung beeinflussen.
|
142 |
-
</risk_assessment>
|
143 |
-
|
144 |
-
<recommendations>
|
145 |
-
**Empfehlungen für den Benutzer:**
|
146 |
-
- Gib klare und konkrete Empfehlungen zu den nächsten Schritten, die der Benutzer unternehmen sollte.
|
147 |
-
- Berücksichtige Sicherheitsempfehlungen wie das Blockieren des Absenders, das Melden der Nachricht an entsprechende Behörden oder das Ignorieren der Nachricht.
|
148 |
-
- Wenn möglich, schlage zusätzliche Vorsichtsmaßnahmen vor, die der Benutzer ergreifen kann, um seine persönlichen und finanziellen Daten zu schützen.
|
149 |
-
</recommendations>
|
150 |
-
""",
|
151 |
-
'English': """
|
152 |
-
You are an advanced AI assistant specializing in identifying fake SMS messages. Your task is to conduct a detailed analysis of the message, utilizing a deep thinking process and providing a comprehensive assessment. Your response should be divided into three sections:
|
153 |
-
|
154 |
-
<analysis>
|
155 |
-
**Message Content Analysis:**
|
156 |
-
- Conduct a detailed analysis of the message content, identifying potential red flags such as language errors, requests for personal information, urgent contact requests, etc.
|
157 |
-
- Describe the linguistic and cultural context of the message.
|
158 |
-
- Identify any elements that may suggest the message is an attempt to solicit information or money.
|
159 |
-
</analysis>
|
160 |
-
|
161 |
-
<risk_assessment>
|
162 |
-
**Fraud Risk Assessment:**
|
163 |
-
- Based on the content analysis and available information, assess the likelihood that the message is fraudulent. Use a scale from 1 to 10, where 1 indicates very low risk and 10 indicates very high risk.
|
164 |
-
- Explain the factors that influence this assessment.
|
165 |
-
</risk_assessment>
|
166 |
-
|
167 |
-
<recommendations>
|
168 |
-
**User Recommendations:**
|
169 |
-
- Provide clear and concrete recommendations regarding the next steps the user should take.
|
170 |
-
- Include security suggestions such as blocking the sender, reporting the message to appropriate authorities, or ignoring the message.
|
171 |
-
- If possible, suggest additional precautionary measures the user can take to protect their personal and financial information.
|
172 |
-
</recommendations>
|
173 |
-
"""
|
174 |
}
|
175 |
|
176 |
system_prompt = system_prompts.get(language, system_prompts['English']) # Default to English if language not found
|
|
|
1 |
import phonenumbers
|
2 |
from phonenumbers import geocoder, carrier
|
3 |
import re
|
4 |
+
import requests # Ensure requests is imported
|
5 |
import os
|
6 |
import json
|
7 |
from datetime import datetime
|
|
|
18 |
if not os.path.exists(FAKE_NUMBERS_FILE):
|
19 |
with open(FAKE_NUMBERS_FILE, 'w') as f:
|
20 |
json.dump([], f)
|
21 |
+
logging.info("Plik fake_numbers.json został zainicjalizowany.")
|
22 |
else:
|
23 |
try:
|
24 |
with open(FAKE_NUMBERS_FILE, 'r') as f:
|
|
|
27 |
# Jeśli plik jest uszkodzony lub pusty, zresetuj go do pustej listy
|
28 |
with open(FAKE_NUMBERS_FILE, 'w') as f:
|
29 |
json.dump([], f)
|
30 |
+
logging.warning("Plik fake_numbers.json był uszkodzony. Został zresetowany.")
|
31 |
|
32 |
# Dodanie numeru telefonu do pliku JSON
|
33 |
def add_fake_number(phone_number):
|
|
|
45 |
try:
|
46 |
with open(FAKE_NUMBERS_FILE, 'w') as f:
|
47 |
json.dump(fake_numbers, f, indent=4)
|
48 |
+
logging.info(f"Numer {phone_number} został zapisany w fake_numbers.json.")
|
49 |
return True
|
50 |
except Exception as e:
|
51 |
logging.error(f"Nie udało się zapisać numeru {phone_number}: {e}")
|
52 |
return False
|
53 |
else:
|
54 |
+
logging.info(f"Numer {phone_number} już istnieje w fake_numbers.json.")
|
55 |
return False # Numer już istnieje
|
56 |
|
57 |
# Sprawdzenie, czy numer telefonu jest w pliku JSON
|
|
|
61 |
fake_numbers = json.load(f)
|
62 |
return any(entry["phone_number"] == phone_number for entry in fake_numbers)
|
63 |
except (json.JSONDecodeError, FileNotFoundError):
|
64 |
+
logging.warning(f"Plik fake_numbers.json nie został znaleziony lub wystąpił błąd podczas odczytu.")
|
65 |
return False
|
66 |
|
67 |
# Funkcja do weryfikacji numeru telefonu
|
|
|
71 |
country = geocoder.description_for_number(parsed_number, 'pl')
|
72 |
operator = carrier.name_for_number(parsed_number, 'pl')
|
73 |
return country, operator
|
74 |
+
except phonenumbers.NumberParseException as e:
|
75 |
+
logging.error(f"Nie udało się przetworzyć numeru {phone_number}: {e}")
|
76 |
return None, None
|
77 |
|
78 |
# Proste sprawdzenia heurystyczne wiadomości
|
|
|
131 |
- Jeśli to możliwe, zasugeruj dodatkowe środki ostrożności, które użytkownik może podjąć, aby chronić swoje dane osobowe i finansowe.
|
132 |
</recommendations>
|
133 |
""",
|
134 |
+
# Add German and English prompts as you had before.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
}
|
136 |
|
137 |
system_prompt = system_prompts.get(language, system_prompts['English']) # Default to English if language not found
|