| import pickle, random | |
| from sentence_transformers import SentenceTransformer | |
| # Load model once | |
| with open("intent_model.pkl", "rb") as f: | |
| data = pickle.load(f) | |
| clf = data["classifier"] | |
| id2label = data["id2label"] | |
| embedder = SentenceTransformer(data["embed_model"]) | |
| intents_meta = data["intents_meta"] | |
| def predict(text): | |
| emb = embedder.encode([text]) | |
| pred = clf.predict(emb)[0] | |
| intent = id2label[pred] | |
| meta = intents_meta[intent] | |
| response = random.choice(meta["responses"]) | |
| return { | |
| "intent": intent, | |
| "response": response, | |
| "action": meta["action"] | |
| } | |
| # Required entrypoint for Hugging Face inference API | |
| def predict_intent(inputs: str): | |
| return predict(inputs) | |