Spaces:
Running
Running
File size: 1,399 Bytes
168ae1c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as F
def predict_code(code_snippet):
# 1. Load the "Brain" we saved
model_path = "saved_model"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)
# 2. Convert the code snippet into numbers (Tokens)
inputs = tokenizer(code_snippet, return_tensors="pt", truncation=True, max_length=128)
# 3. Run it through the AI without calculating gradients (faster)
with torch.no_grad():
outputs = model(**inputs)
# Convert raw numbers (logits) into percentages (probabilities)
probs = F.softmax(outputs.logits, dim=-1)
# 4. Show the result
safe_prob = probs[0][0].item()
vuln_prob = probs[0][1].item()
print("-" * 50)
print(f"CODE BEING TESTED:\n{code_snippet}")
print("-" * 50)
print(f"🛡️ Safe Probability: {safe_prob:.2%}")
print(f"⚠️ Vulnerable Probability: {vuln_prob:.2%}")
if vuln_prob > 0.5:
print("\nRESULT: 🚨 VULNERABLE CODE DETECTED!")
else:
print("\nRESULT: ✅ CODE LOOKS SAFE.")
print("-" * 50)
if __name__ == "__main__":
# Test with a dangerous example (SQL Injection)
my_code = 'query = f"SELECT * FROM users WHERE id = {user_input}"'
predict_code(my_code) |