ScamDetector / app.py
rafaldembski's picture
Update app.py
8d47315 verified
raw
history blame
4.1 kB
import streamlit as st
from utils.functions import get_phone_info, simple_checks, analyze_message
import os
def main():
st.set_page_config(page_title="📱 Detektor Fałszywych Wiadomości SMS", page_icon="📱")
st.title("📱 Detektor Fałszywych Wiadomości SMS")
st.write("Wprowadź treść wiadomości SMS oraz numer telefonu nadawcy, aby przeprowadzić analizę pod kątem potencjalnego oszustwa.")
with st.form("sms_form"):
message = st.text_area("Treść wiadomości SMS", height=150)
phone_number = st.text_input("Numer telefonu nadawcy (w formacie międzynarodowym, np. +48123123123)")
st.markdown("### Dodatkowe Informacje")
# Dodane pytania
frequency = st.selectbox(
"Jak często otrzymujesz wiadomości od tego numeru?",
('Pierwszy raz', 'Sporadycznie', 'Regularnie')
)
last_received = st.selectbox(
"Kiedy ostatnio otrzymałeś podobną wiadomość?",
('Dziś', 'W ciągu ostatniego tygodnia', 'W ciągu ostatniego miesiąca', 'Dłużej')
)
confidence_level = st.slider(
"Jak bardzo jesteś pewny, że wiadomość jest autentyczna?",
1, 5, 3,
help="1: Bardzo mało pewny, 5: Bardzo pewny"
)
unexpected = st.radio(
"Czy otrzymanie tej wiadomości było dla Ciebie niespodziewane?",
('Tak', 'Nie')
)
additional_notes = st.text_area("Dodatkowe uwagi lub informacje (opcjonalnie)", height=100)
submitted = st.form_submit_button("Analizuj wiadomość")
if submitted:
if not message.strip():
st.error("Proszę wprowadzić treść wiadomości.")
elif not phone_number.strip():
st.error("Proszę wprowadzić numer telefonu nadawcy.")
else:
# Informacje o numerze telefonu
country, operator = get_phone_info(phone_number)
if country and operator:
st.write(f"**Informacje o numerze telefonu:**")
st.write(f"- **Kraj:** {country}")
st.write(f"- **Operator:** {operator}")
else:
st.write("Nie udało się uzyskać informacji o numerze telefonu.")
# Heurystyczne sprawdzenia
warnings = simple_checks(message)
if warnings:
st.warning("Znaleziono następujące potencjalne czerwone flagi:")
for warn in warnings:
st.write(f"- {warn}")
# Zbierz dodatkowe informacje
additional_info = f"""
**Jak często otrzymujesz wiadomości od tego numeru?** {frequency}
**Kiedy ostatnio otrzymałeś podobną wiadomość?** {last_received}
**Jak bardzo jesteś pewny, że wiadomość jest autentyczna?** {confidence_level}/5
**Czy otrzymanie tej wiadomości było dla Ciebie niespodziewane?** {unexpected}
**Dodatkowe uwagi lub informacje:** {additional_notes}
"""
# Pobierz klucz API
api_key = os.getenv('SAMBANOVA_API_KEY')
if not api_key:
st.error("Brak klucza API. Ustaw zmienną środowiskową SAMBANOVA_API_KEY w ustawieniach aplikacji.")
else:
# Analiza za pomocą modelu AI
with st.spinner("Analizuję wiadomość przy użyciu modelu AI..."):
analysis_text, risk_text, recommendations_text = analyze_message(message, phone_number, additional_info, api_key)
st.subheader("📑 Analiza treści wiadomości:")
st.markdown(analysis_text)
st.subheader("⚠️ Ocena ryzyka oszustwa:")
st.markdown(risk_text)
st.subheader("✅ Zalecenia dla użytkownika:")
st.markdown(recommendations_text)
st.info("📌 Pamiętaj: zawsze zachowuj ostrożność przy otrzymywaniu wiadomości od nieznanych nadawców. Nie udostępniaj poufnych informacji i nie klikaj w podejrzane linki.")
if __name__ == "__main__":
main()