EduScam / main_gradio.py
Amalia-mahdi's picture
Update main_gradio.py
0d7e15f verified
import subprocess
import time
import gradio as gr
import requests
subprocess.Popen(["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"])
time.sleep(3)
API_URL = "http://localhost:8000"
session_id = None
chat_history = []
def start():
global session_id, chat_history
try:
res = requests.post(f"{API_URL}/start_chat")
res.raise_for_status()
data = res.json()
session_id = data["session_id"]
scammer_msg = data["scammer"]
chat_history = [{"role": "assistant", "content": scammer_msg}]
return "", chat_history
except Exception as e:
return "", [{"role": "assistant", "content": f"❌ Gagal mulai percakapan: {str(e)}"}]
def respond(user_input):
global session_id, chat_history
try:
payload = {"session_id": session_id, "content": user_input}
res = requests.post(f"{API_URL}/chat", json=payload)
res.raise_for_status()
scammer_response = res.json()["scammer"]
chat_history.append({"role": "user", "content": user_input})
chat_history.append({"role": "assistant", "content": scammer_response})
return "", chat_history
except Exception as e:
chat_history.append({"role": "user", "content": user_input})
chat_history.append({"role": "assistant", "content": f"❌ Error: {str(e)}"})
return "", chat_history
with gr.Blocks() as demo:
gr.Markdown("## 🕵️ Edu-Scam Chatbot Simulator")
btn_start = gr.Button("Start Scam Simulation")
chatbox = gr.Chatbot(type='messages')
txt = gr.Textbox(placeholder="Type your reply here...", show_label=False)
btn_start.click(start, outputs=[txt, chatbox])
txt.submit(respond, inputs=txt, outputs=[txt, chatbox])
demo.launch(server_name="0.0.0.0", server_port=7860)