ScamVerifierV3 / app.py
AayanSuleri's picture
Update app.py
c314765 verified
Raw
History Blame Contribute Delete
3.41 kB
from flask import Flask, render_template, request, jsonify
import os
import time
from crewai import Agent, Task, Crew
from langchain_openai import ChatOpenAI
app = Flask(__name__)
# Ensure API key is set in environment
os.getenv("OPENAI_API_KEY") # Enter your OpenAI API key or set it via env var
def run_scam_analysis(message_content):
if not message_content.strip():
return "❗ Please enter a message or URL to analyze."
loading_messages = [
"πŸ›‘οΈ Initializing AI security team...",
"πŸ” Claim Extractor analyzing suspicious content...",
"βš–οΈ Fact Checker verifying claims and patterns...",
"πŸ“‹ Safety Advisor preparing guidance report...",
"🚨 Generating comprehensive scam analysis..."
]
try:
llm = ChatOpenAI(model_name="gpt-4o-mini", temperature=0.1)
extractor_agent = Agent(
role="Claim Extractor",
goal="Extract key claims, offers, and suspicious elements from messages or URLs",
backstory="Expert at parsing and identifying key claims in potentially fraudulent messages.",
llm=llm,
verbose=False
)
verifier_agent = Agent(
role="Fact Checker",
goal="Verify claims and assess scam probability using heuristic rules and pattern matching",
backstory="Cybersecurity expert who specializes in identifying scam patterns.",
llm=llm,
verbose=False
)
explainer_agent = Agent(
role="Safety Advisor",
goal="Provide clear, actionable guidance to users about potential scams",
backstory="Digital safety educator who explains complex security issues simply.",
llm=llm,
verbose=False
)
extract_task = Task(
description=f"Analyze and extract suspicious elements from: {message_content}",
expected_output="Structured summary of extracted claims, suspicious elements, and language patterns",
agent=extractor_agent
)
verify_task = Task(
description="Risk assessment with scam probability score, red flags, and evidence",
expected_output="Risk assessment with scam probability score, red flags, and evidence",
agent=verifier_agent,
context=[extract_task]
)
explain_task = Task(
description="User-friendly safety report with clear recommendations and next steps",
expected_output="User-friendly safety report with clear recommendations and next steps",
agent=explainer_agent,
context=[extract_task, verify_task]
)
crew = Crew(
agents=[extractor_agent, verifier_agent, explainer_agent],
tasks=[extract_task, verify_task, explain_task],
verbose=False,
process="sequential"
)
result = crew.kickoff()
return str(result)
except Exception as e:
return f"❌ Scam analysis failed: {str(e)}"
@app.route("/")
def index():
return render_template("index.html")
@app.route("/analyze", methods=["POST"])
def analyze():
data = request.get_json()
message = data.get("message", "")
result = run_scam_analysis(message)
return jsonify({"result": result})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860)