rafaldembski commited on
Commit
7d1bae2
1 Parent(s): 61d2b7a

Update utils/functions.py

Browse files
Files changed (1) hide show
  1. 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') # Zmiana na 'pl' dla polskiego
130
- operator = carrier.name_for_number(parsed_number, 'pl') # Zmiana na 'pl' dla polskiego
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" # Upewnij się, że to poprawny URL
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
- **📝 Analiza Treści Wiadomości:**
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
- **⚖️ Ocena Ryzyka Oszustwa:**
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
- **💡 Zalecenia dla Użytkownika:**
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, indem du einen tiefgreifenden Denkprozess nutzt und eine umfassende Bewertung lieferst. Deine Antwort sollte in drei Abschnitte unterteilt sein:
218
 
219
  <analysis>
220
- **📝 Nachrichteninhaltsanalyse:**
221
- - 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.
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
- **⚖️ Betrugsrisikobewertung:**
235
- - Bewerte die Wahrscheinlichkeit, dass die Nachricht betrügerisch ist, auf einer Skala von 1 bis 10, wobei 1 sehr geringes Risiko und 10 sehr hohes Risiko bedeutet.
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
- **💡 Empfehlungen für den Benutzer:**
248
- - Gib klare und spezifische Empfehlungen zu den nächsten Schritten, die der Benutzer unternehmen sollte.
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, utilizing a deep thinking process and providing a comprehensive assessment. Your response should be divided into three sections:
260
 
261
  <analysis>
262
- **📝 Message Content Analysis:**
263
- - Conduct a detailed analysis of the message content, identifying potential red flags such as language errors, requests for personal information, urgent contact requests, etc.
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
- **⚖️ Fraud Risk Assessment:**
277
- - Assess the likelihood that the message is fraudulent on a scale from 1 to 10, where 1 indicates very low risk and 10 indicates very high risk.
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
- **💡 User Recommendations:**
290
- - Provide clear and concrete recommendations regarding the next steps the user should take.
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", # Upewnij się, że to poprawny model API
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}