Spaces:
Sleeping
Sleeping
rafaldembski
commited on
Commit
•
7d1bae2
1
Parent(s):
61d2b7a
Update utils/functions.py
Browse files- utils/functions.py +29 -112
utils/functions.py
CHANGED
@@ -6,8 +6,8 @@ import os
|
|
6 |
from datetime import datetime
|
7 |
import logging
|
8 |
import json
|
9 |
-
from PIL import Image
|
10 |
-
import pytesseract
|
11 |
|
12 |
# Konfiguracja logowania
|
13 |
logging.basicConfig(
|
@@ -81,9 +81,7 @@ def add_to_history(message, phone_number, analysis, risk, recommendations):
|
|
81 |
"phone_number": phone_number,
|
82 |
"analysis": analysis,
|
83 |
"risk_assessment": risk,
|
84 |
-
"recommendations": recommendations
|
85 |
-
"type": "SMS", # Typ analizy, możesz zmienić na odpowiedni typ
|
86 |
-
"date": datetime.now().date().isoformat() # Dodanie daty
|
87 |
})
|
88 |
save_json(HISTORY_FILE, history)
|
89 |
logging.info(f"Dodano wpis do history.json dla numeru {phone_number}.")
|
@@ -94,20 +92,9 @@ def get_history():
|
|
94 |
logging.info("Historia analiz została pobrana pomyślnie.")
|
95 |
return history
|
96 |
|
97 |
-
def get_analysis_history():
|
98 |
-
"""Zwraca szczegółową historię analiz z pliku history.json."""
|
99 |
-
history = load_json(HISTORY_FILE)
|
100 |
-
if history:
|
101 |
-
return history
|
102 |
-
else:
|
103 |
-
logging.info("Brak zapisanej historii analiz.")
|
104 |
-
return []
|
105 |
-
|
106 |
def update_stats(fraud_detected=False):
|
107 |
"""Aktualizuje statystyki analiz w pliku stats.json."""
|
108 |
stats = load_json(STATS_FILE)
|
109 |
-
if not stats:
|
110 |
-
stats = {"total_analyses": 0, "total_frauds_detected": 0}
|
111 |
stats["total_analyses"] += 1
|
112 |
if fraud_detected:
|
113 |
stats["total_frauds_detected"] += 1
|
@@ -117,17 +104,20 @@ def update_stats(fraud_detected=False):
|
|
117 |
def get_stats():
|
118 |
"""Pobiera statystyki analiz z pliku stats.json."""
|
119 |
stats = load_json(STATS_FILE)
|
120 |
-
if not stats:
|
121 |
-
return {"total_analyses": 0, "total_frauds_detected": 0}
|
122 |
logging.info("Statystyki zostały pobrane pomyślnie.")
|
123 |
return stats
|
124 |
|
|
|
|
|
|
|
|
|
|
|
125 |
def get_phone_info(phone_number):
|
126 |
"""Weryfikuje numer telefonu i zwraca informacje o kraju i operatorze."""
|
127 |
try:
|
128 |
parsed_number = phonenumbers.parse(phone_number, None)
|
129 |
-
country = geocoder.description_for_number(parsed_number, 'pl')
|
130 |
-
operator = carrier.name_for_number(parsed_number, 'pl')
|
131 |
if not country:
|
132 |
country = "Nieznany"
|
133 |
if not operator:
|
@@ -164,7 +154,7 @@ def analyze_message(message, phone_number, additional_info, api_key, language):
|
|
164 |
logging.error("Brak klucza API.")
|
165 |
return "Brak klucza API.", "Brak klucza API.", "Brak klucza API."
|
166 |
|
167 |
-
url = "https://api.sambanova.ai/v1/chat/completions"
|
168 |
headers = {
|
169 |
"Authorization": f"Bearer {api_key}",
|
170 |
"Content-Type": "application/json"
|
@@ -175,129 +165,56 @@ def analyze_message(message, phone_number, additional_info, api_key, language):
|
|
175 |
Jesteś zaawansowanym asystentem AI specjalizującym się w identyfikacji fałszywych wiadomości SMS. Twoim zadaniem jest przeprowadzenie szczegółowej analizy wiadomości, wykorzystując głęboki proces myślenia i dostarczając kompleksową ocenę. Twoja odpowiedź powinna być podzielona na trzy sekcje:
|
176 |
|
177 |
<analysis>
|
178 |
-
|
179 |
- Przeprowadź szczegółową analizę treści wiadomości, identyfikując potencjalne czerwone flagi, takie jak błędy językowe, prośby o dane osobowe, pilne prośby o kontakt itp.
|
180 |
- Jakie elementy treści mogą wskazywać na oszustwo?
|
181 |
-
- Jakie słowa kluczowe są używane w wiadomości? (np. "pieniądze", "przelew", "nagroda")
|
182 |
-
- Jakie są reakcje na tę wiadomość w kontekście kulturowym i językowym?
|
183 |
-
|
184 |
-
**❓ Dodatkowe pytania do przemyślenia:**
|
185 |
-
- Kiedy i jak często otrzymujesz wiadomości z tego numeru?
|
186 |
-
- Czy numer nadawcy jest znany z innych źródeł?
|
187 |
-
- Jakie są konsekwencje dla Ciebie, jeśli ta wiadomość jest oszustwem?
|
188 |
-
- Jakie masz doświadczenia z podobnymi wiadomościami w przeszłości?
|
189 |
</analysis>
|
190 |
|
191 |
<risk_assessment>
|
192 |
-
|
193 |
- Na podstawie analizy treści i dostępnych informacji oceń prawdopodobieństwo, że wiadomość jest oszustwem. Użyj skali od 1 do 10, gdzie 1 oznacza bardzo niskie ryzyko, a 10 bardzo wysokie ryzyko.
|
194 |
-
- Jakie czynniki wpływają na tę ocenę?
|
195 |
-
- Jakie są argumenty za i przeciw ocenie tej wiadomości jako oszustwa?
|
196 |
-
|
197 |
-
**❓ Dodatkowe pytania do przemyślenia:**
|
198 |
-
- Jakie inne wiadomości z tego numeru otrzymywałeś w przeszłości?
|
199 |
-
- Czy wiadomość zawiera jakiekolwiek inne informacje, które mogłyby być użyteczne w ocenie ryzyka?
|
200 |
-
- Jakie są Twoje dotychczasowe doświadczenia z oszustwami SMS?
|
201 |
-
- Jakie są Twoje przemyślenia na temat nadawcy tej wiadomości?
|
202 |
</risk_assessment>
|
203 |
|
204 |
<recommendations>
|
205 |
-
|
206 |
- Podaj jasne i konkretne zalecenia dotyczące dalszych kroków, które użytkownik powinien podjąć.
|
207 |
-
- Jakie środki bezpieczeństwa powinny być wdrożone?
|
208 |
-
|
209 |
-
**❓ Dodatkowe pytania do przemyślenia:**
|
210 |
-
- Czy powinieneś zgłosić tę wiadomość do operatora sieci?
|
211 |
-
- Jakie dodatkowe kroki możesz podjąć, aby upewnić się, że nie padłeś ofiarą oszustwa?
|
212 |
-
- Czy masz dostęp do innych narzędzi, które mogą pomóc w ocenie tej wiadomości?
|
213 |
-
- Jakie działania możesz podjąć, aby zwiększyć swoje bezpieczeństwo w przyszłości?
|
214 |
</recommendations>
|
215 |
""",
|
216 |
'German': """
|
217 |
-
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
|
218 |
|
219 |
<analysis>
|
220 |
-
|
221 |
-
- Führe eine detaillierte Analyse des Nachrichteninhalts durch und identifiziere potenzielle rote Flaggen
|
222 |
-
- Welche Elemente im Inhalt könnten auf Betrug hinweisen?
|
223 |
-
- Welche Schlüsselwörter werden in der Nachricht verwendet? (z. B. "Geld", "Überweisung", "Preis")
|
224 |
-
- Wie reagieren die Menschen auf diese Nachricht im kulturellen und sprachlichen Kontext?
|
225 |
-
|
226 |
-
**❓ Zusätzliche Fragen zur Überlegung:**
|
227 |
-
- Wann und wie oft erhältst du Nachrichten von dieser Nummer?
|
228 |
-
- Ist die Nummer des Absenders aus anderen Quellen bekannt?
|
229 |
-
- Was sind die Konsequenzen für dich, wenn diese Nachricht ein Betrug ist?
|
230 |
-
- Welche Erfahrungen hast du in der Vergangenheit mit ähnlichen Nachrichten gemacht?
|
231 |
</analysis>
|
232 |
|
233 |
<risk_assessment>
|
234 |
-
|
235 |
-
- Bewerte die Wahrscheinlichkeit, dass die Nachricht betrügerisch ist
|
236 |
-
- Welche Faktoren beeinflussen diese Bewertung?
|
237 |
-
- Was sind die Argumente für und gegen die Bewertung dieser Nachricht als Betrug?
|
238 |
-
|
239 |
-
**❓ Zusätzliche Fragen zur Überlegung:**
|
240 |
-
- Welche anderen Nachrichten hast du in der Vergangenheit von dieser Nummer erhalten?
|
241 |
-
- Enthält die Nachricht weitere Informationen, die bei der Risikobewertung hilfreich sein könnten?
|
242 |
-
- Welche bisherigen Erfahrungen hast du mit SMS-Betrügereien gemacht?
|
243 |
-
- Welche Gedanken hast du über den Absender dieser Nachricht?
|
244 |
</risk_assessment>
|
245 |
|
246 |
<recommendations>
|
247 |
-
|
248 |
-
- Gib klare und spezifische Empfehlungen zu den nächsten Schritten
|
249 |
-
- Welche Sicherheitsmaßnahmen sollten umgesetzt werden?
|
250 |
-
|
251 |
-
**❓ Zusätzne Fragen zur Überlegung:**
|
252 |
-
- Solltest du diese Nachricht deinem Mobilfunkanbieter melden?
|
253 |
-
- Welche weiteren Schritte kannst du unternehmen, um sicherzustellen, dass du nicht Opfer eines Betrugs geworden bist?
|
254 |
-
- Hast du Zugriff auf andere Werkzeuge, die dir helfen können, diese Nachricht zu bewerten?
|
255 |
-
- Welche Maßnahmen kannst du ergreifen, um deine Sicherheit in Zukunft zu erhöhen?
|
256 |
</recommendations>
|
257 |
""",
|
258 |
'English': """
|
259 |
-
You are an advanced AI assistant specializing in identifying fake SMS messages. Your task is to conduct a detailed analysis of the message
|
260 |
|
261 |
<analysis>
|
262 |
-
|
263 |
-
- Conduct a detailed analysis of the message content
|
264 |
-
- What elements of the content may indicate fraud?
|
265 |
-
- What keywords are used in the message? (e.g., "money", "transfer", "prize")
|
266 |
-
- What are the cultural and linguistic reactions to this message?
|
267 |
-
|
268 |
-
**❓ Additional questions to consider:**
|
269 |
-
- When and how often do you receive messages from this number?
|
270 |
-
- Is the sender's number known from other sources?
|
271 |
-
- What are the consequences for you if this message is a fraud?
|
272 |
-
- What experiences have you had in the past with similar messages?
|
273 |
</analysis>
|
274 |
|
275 |
<risk_assessment>
|
276 |
-
|
277 |
-
- Assess the likelihood that the message is fraudulent
|
278 |
-
- What factors influence this assessment?
|
279 |
-
- What are the arguments for and against assessing this message as fraud?
|
280 |
-
|
281 |
-
**❓ Additional questions to consider:**
|
282 |
-
- What other messages have you received from this number in the past?
|
283 |
-
- Does the message contain any other information that could be useful in assessing the risk?
|
284 |
-
- What previous experiences do you have with SMS scams?
|
285 |
-
- What are your thoughts on the sender of this message?
|
286 |
</risk_assessment>
|
287 |
|
288 |
<recommendations>
|
289 |
-
|
290 |
-
- Provide clear and
|
291 |
-
- What security measures should be implemented?
|
292 |
-
|
293 |
-
**❓ Additional questions to consider:**
|
294 |
-
- Should you report this message to your service provider?
|
295 |
-
- What additional steps can you take to ensure that you have not fallen victim to a scam?
|
296 |
-
- Do you have access to other tools that can help you assess this message?
|
297 |
-
- What actions can you take to enhance your security in the future?
|
298 |
</recommendations>
|
299 |
-
|
300 |
-
Your response should be formatted exactly as specified above, using the <analysis>, <risk_assessment>, and <recommendations> tags. Ensure that each section is thoroughly and comprehensively filled out.
|
301 |
"""
|
302 |
}
|
303 |
|
@@ -314,7 +231,7 @@ Additional Information:
|
|
314 |
Provide your analysis and conclusions following the guidelines above."""
|
315 |
|
316 |
payload = {
|
317 |
-
"model": "Meta-Llama-3.1-8B-Instruct",
|
318 |
"messages": [
|
319 |
{"role": "system", "content": system_prompt},
|
320 |
{"role": "user", "content": user_prompt}
|
|
|
6 |
from datetime import datetime
|
7 |
import logging
|
8 |
import json
|
9 |
+
from PIL import Image # Ensure you have installed this library: pip install pillow
|
10 |
+
import pytesseract # Ensure you have installed this library: pip install pytesseract
|
11 |
|
12 |
# Konfiguracja logowania
|
13 |
logging.basicConfig(
|
|
|
81 |
"phone_number": phone_number,
|
82 |
"analysis": analysis,
|
83 |
"risk_assessment": risk,
|
84 |
+
"recommendations": recommendations
|
|
|
|
|
85 |
})
|
86 |
save_json(HISTORY_FILE, history)
|
87 |
logging.info(f"Dodano wpis do history.json dla numeru {phone_number}.")
|
|
|
92 |
logging.info("Historia analiz została pobrana pomyślnie.")
|
93 |
return history
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
def update_stats(fraud_detected=False):
|
96 |
"""Aktualizuje statystyki analiz w pliku stats.json."""
|
97 |
stats = load_json(STATS_FILE)
|
|
|
|
|
98 |
stats["total_analyses"] += 1
|
99 |
if fraud_detected:
|
100 |
stats["total_frauds_detected"] += 1
|
|
|
104 |
def get_stats():
|
105 |
"""Pobiera statystyki analiz z pliku stats.json."""
|
106 |
stats = load_json(STATS_FILE)
|
|
|
|
|
107 |
logging.info("Statystyki zostały pobrane pomyślnie.")
|
108 |
return stats
|
109 |
|
110 |
+
def get_statistics():
|
111 |
+
"""Zwraca szczegółowe statystyki analiz z pliku stats.json."""
|
112 |
+
stats = load_json(STATS_FILE)
|
113 |
+
return stats
|
114 |
+
|
115 |
def get_phone_info(phone_number):
|
116 |
"""Weryfikuje numer telefonu i zwraca informacje o kraju i operatorze."""
|
117 |
try:
|
118 |
parsed_number = phonenumbers.parse(phone_number, None)
|
119 |
+
country = geocoder.description_for_number(parsed_number, 'pl')
|
120 |
+
operator = carrier.name_for_number(parsed_number, 'pl')
|
121 |
if not country:
|
122 |
country = "Nieznany"
|
123 |
if not operator:
|
|
|
154 |
logging.error("Brak klucza API.")
|
155 |
return "Brak klucza API.", "Brak klucza API.", "Brak klucza API."
|
156 |
|
157 |
+
url = "https://api.sambanova.ai/v1/chat/completions"
|
158 |
headers = {
|
159 |
"Authorization": f"Bearer {api_key}",
|
160 |
"Content-Type": "application/json"
|
|
|
165 |
Jesteś zaawansowanym asystentem AI specjalizującym się w identyfikacji fałszywych wiadomości SMS. Twoim zadaniem jest przeprowadzenie szczegółowej analizy wiadomości, wykorzystując głęboki proces myślenia i dostarczając kompleksową ocenę. Twoja odpowiedź powinna być podzielona na trzy sekcje:
|
166 |
|
167 |
<analysis>
|
168 |
+
**Analiza Treści Wiadomości:**
|
169 |
- Przeprowadź szczegółową analizę treści wiadomości, identyfikując potencjalne czerwone flagi, takie jak błędy językowe, prośby o dane osobowe, pilne prośby o kontakt itp.
|
170 |
- Jakie elementy treści mogą wskazywać na oszustwo?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
</analysis>
|
172 |
|
173 |
<risk_assessment>
|
174 |
+
**Ocena Ryzyka Oszustwa:**
|
175 |
- Na podstawie analizy treści i dostępnych informacji oceń prawdopodobieństwo, że wiadomość jest oszustwem. Użyj skali od 1 do 10, gdzie 1 oznacza bardzo niskie ryzyko, a 10 bardzo wysokie ryzyko.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
</risk_assessment>
|
177 |
|
178 |
<recommendations>
|
179 |
+
**Zalecenia dla Użytkownika:**
|
180 |
- Podaj jasne i konkretne zalecenia dotyczące dalszych kroków, które użytkownik powinien podjąć.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
</recommendations>
|
182 |
""",
|
183 |
'German': """
|
184 |
+
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. Deine Antwort sollte in drei Abschnitte unterteilt sein:
|
185 |
|
186 |
<analysis>
|
187 |
+
**Nachrichteninhaltsanalyse:**
|
188 |
+
- Führe eine detaillierte Analyse des Nachrichteninhalts durch und identifiziere potenzielle rote Flaggen.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
</analysis>
|
190 |
|
191 |
<risk_assessment>
|
192 |
+
**Betrugsrisikobewertung:**
|
193 |
+
- Bewerte die Wahrscheinlichkeit, dass die Nachricht betrügerisch ist.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
</risk_assessment>
|
195 |
|
196 |
<recommendations>
|
197 |
+
**Empfehlungen für den Benutzer:**
|
198 |
+
- Gib klare und spezifische Empfehlungen zu den nächsten Schritten.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
</recommendations>
|
200 |
""",
|
201 |
'English': """
|
202 |
+
You are an advanced AI assistant specializing in identifying fake SMS messages. Your task is to conduct a detailed analysis of the message. Your response should be divided into three sections:
|
203 |
|
204 |
<analysis>
|
205 |
+
**Message Content Analysis:**
|
206 |
+
- Conduct a detailed analysis of the message content and identify potential red flags.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
</analysis>
|
208 |
|
209 |
<risk_assessment>
|
210 |
+
**Fraud Risk Assessment:**
|
211 |
+
- Assess the likelihood that the message is fraudulent.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
</risk_assessment>
|
213 |
|
214 |
<recommendations>
|
215 |
+
**User Recommendations:**
|
216 |
+
- Provide clear and specific recommendations regarding the next steps the user should take.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
</recommendations>
|
|
|
|
|
218 |
"""
|
219 |
}
|
220 |
|
|
|
231 |
Provide your analysis and conclusions following the guidelines above."""
|
232 |
|
233 |
payload = {
|
234 |
+
"model": "Meta-Llama-3.1-8B-Instruct",
|
235 |
"messages": [
|
236 |
{"role": "system", "content": system_prompt},
|
237 |
{"role": "user", "content": user_prompt}
|