import gradio as gr import os import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from api.predict import predict_review, models_loaded def analyze_review(text): if not text or len(text.strip()) == 0: return "error: please enter some text" if not models_loaded: return "models are loading for the first time, this will take 20-30 minutes. please wait..." try: result = predict_review(text) if "error" in result and result["prediction"] == "error": return f"error: {result['error']}" prediction = result['prediction'] confidence = result['confidence'] is_fake = result['is_fake'] status = "FAKE" if is_fake else "GENUINE" output = f"""prediction: {status} confidence: {confidence:.2%} fake probability: {result['fake_probability']:.2%} genuine probability: {result['genuine_probability']:.2%} model agreement: {result['model_agreement']:.1f}% length category: {result['length_category']} token count: {result['token_count']}""" return output except Exception as e: return f"error: {str(e)}" demo = gr.Interface( fn=analyze_review, inputs=gr.Textbox( lines=5, placeholder="paste review text here...", label="review text" ), outputs=gr.Textbox( lines=10, label="analysis" ), title="review classifier", description="ensemble model for detecting fake reviews" ) if __name__ == "__main__": print("starting gradio interface", flush=True) print("models will load on first prediction request", flush=True) demo.launch(server_name="0.0.0.0", server_port=7860)