Spaces:
Running
Running
| """ | |
| AIFinder Inference Module | |
| Load the trained model and predict AI provider | |
| """ | |
| import joblib | |
| import numpy as np | |
| from config import MODEL_DIR | |
| class AIFinder: | |
| def __init__(self, model_dir=MODEL_DIR): | |
| self.models = joblib.load(f"{model_dir}/rf_4provider.joblib") | |
| self.pipeline = joblib.load(f"{model_dir}/pipeline_4provider.joblib") | |
| self.le = joblib.load(f"{model_dir}/enc_4provider.joblib") | |
| def predict(self, text): | |
| """Predict the provider for a given text""" | |
| X = self.pipeline.transform([text]) | |
| proba = np.mean([m.predict_proba(X) for m in self.models], axis=0) | |
| pred_idx = np.argmax(proba[0]) | |
| return self.le.classes_[pred_idx] | |
| def predict_proba(self, text): | |
| """Get prediction probabilities""" | |
| X = self.pipeline.transform([text]) | |
| proba = np.mean([m.predict_proba(X) for m in self.models], axis=0) | |
| return dict(zip(self.le.classes_, proba[0])) | |
| def predict_with_confidence(self, text): | |
| """Predict with confidence score""" | |
| proba = self.predict_proba(text) | |
| provider = max(proba, key=proba.get) | |
| confidence = proba[provider] | |
| return provider, confidence | |
| if __name__ == "__main__": | |
| finder = AIFinder() | |
| test_texts = [ | |
| "AI is like a really smart robot helper.", | |
| "Yes, coding is one of my stronger skills!", | |
| "A lot, depending on what you need.", | |
| ] | |
| for text in test_texts: | |
| provider, conf = finder.predict_with_confidence(text) | |
| print(f"Text: {text[:50]}...") | |
| print(f"Provider: {provider} (confidence: {conf:.2f})") | |
| print() | |