import gradio as gr import onnxruntime as ort from transformers import AutoTokenizer import numpy as np # Load the ONNX model onnx_model_path = "fine-tuned_all-distilroberta-v1_quantized.onnx" ort_session = ort.InferenceSession(onnx_model_path) # Load the tokenizer tokenizer = AutoTokenizer.from_pretrained( "sentence-transformers/all-MiniLM-L6-v2") def predict_similarity(question, candidate_answer, ai_answer): # Combine question and answers candidate_combined = f"Question: {question} Answer: {candidate_answer}" ai_combined = f"Question: {question} Answer: {ai_answer}" # Tokenize inputs inputs = tokenizer([candidate_combined, ai_combined], padding=True, truncation=True, return_tensors="np") # Run inference ort_inputs = { "input_ids": inputs["input_ids"], "attention_mask": inputs["attention_mask"] } ort_outputs = ort_session.run(None, ort_inputs) # Calculate cosine similarity embeddings = ort_outputs[0] similarity = np.dot(embeddings[0], embeddings[1]) / \ (np.linalg.norm(embeddings[0]) * np.linalg.norm(embeddings[1])) return float(similarity) # Create Gradio interface iface = gr.Interface( fn=predict_similarity, inputs=[ gr.Textbox(label="Coding Question"), gr.Textbox(label="Candidate's Answer"), gr.Textbox(label="AI-generated Answer") ], outputs=gr.Number(label="Similarity Score"), title="AI Code Detector", description="Detect similarity between human-written and AI-generated coding answers." ) # Launch the app iface.launch()