| """ |
| 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() |
|
|