Team Ai
Apppublic

Rockingstar1/llm-human-code-detection

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
app.py82 linesDownload Raw Back to root
1import gradio as gr2import sys3import os4 5# add project path6sys.path.append(os.path.join(os.path.dirname(__file__), "reflex_ui"))7 8from reflex_ui.reflex_ui.backend_bridge import run_prediction9 10 11def predict(code, language, top_k):12    if not code.strip():13        return "Please enter code.", "", "", ""14 15    try:16        result = run_prediction(code=code, language=language, top_k=int(top_k))17 18        label = result.label19        prob = f"{result.prob_ai:.4f}"20 21        groups = "\n".join(22            [f"{k}: {v:.4f}" for k, v in result.grouped_importance.items()]23        )24 25        shap_table = "\n".join(26            [27                f"{row['rank']}. {row['feature']} ({row['impact_str']}) → {row['pushes_toward']}"28                for row in result.shap_rows29            ]30        )31 32        explanation = result.explanation33 34        return label, prob, groups, shap_table + "\n\n" + explanation35 36    except Exception as e:37        return f"Error: {str(e)}", "", "", ""38 39 40with gr.Blocks(title="AI vs Human Code Classifier") as demo:41 42    gr.Markdown("# AI vs Human Code Classifier")43    gr.Markdown("Detect AI-generated vs human-written code using XGBoost + SHAP.")44 45    with gr.Row():46 47        with gr.Column():48            code = gr.Code(49                label="Paste Python or Java Code",50                language="python",51                lines=15,52            )53 54            language = gr.Dropdown(55                ["python", "java"],56                value="python",57                label="Programming Language",58            )59 60            top_k = gr.Slider(61                minimum=3,62                maximum=20,63                value=6,64                step=1,65                label="Top SHAP Features",66            )67 68            btn = gr.Button("Predict")69 70        with gr.Column():71            label = gr.Textbox(label="Prediction")72            prob = gr.Textbox(label="AI Probability")73            groups = gr.Textbox(label="Feature Groups")74            shap = gr.Textbox(label="SHAP Explanation", lines=10)75 76    btn.click(77        predict,78        inputs=[code, language, top_k],79        outputs=[label, prob, groups, shap],80    )81 82demo.launch(server_name="0.0.0.0", server_port=7860)