import requests from config import HEADERS # 📌 預設載入的模型 CURRENT_MODEL = "cardiffnlp/twitter-xlm-roberta-base-sentiment" API_URL = f"https://api-inference.huggingface.co/models/{CURRENT_MODEL}" # 轉換英文分類為中文 def translate_sentiment(label): if "positive" in label.lower(): return "😃 **正向**" elif "neutral" in label.lower(): return "😐 **中立**" else: return "😡 **負向**" # 轉換信心度 def convert_confidence(score): percentage = round(score * 100) if score >= 0.90: return f"🌟 **極高信心** ({percentage}%)" elif score >= 0.75: return f"✅ **高信心** ({percentage}%)" elif score >= 0.50: return f"⚠️ **中等信心** ({percentage}%)" elif score >= 0.30: return f"❓ **低信心** ({percentage}%)" else: return f"❌ **極低信心(建議忽略)** ({percentage}%)" # 📌 調用 Hugging Face API 進行情緒分析 def analyze_sentiment(text, model_id=None): global CURRENT_MODEL, API_URL # **只在模型變更時更新 API URL** if model_id and model_id != CURRENT_MODEL: CURRENT_MODEL = model_id API_URL = f"https://api-inference.huggingface.co/models/{CURRENT_MODEL}" try: response = requests.post(API_URL, headers=HEADERS, json={"inputs": text}) result = response.json() if isinstance(result, list) and len(result) > 0: sentiment = translate_sentiment(result[0]["label"]) confidence = result[0]["score"] confidence_label = convert_confidence(confidence) return f"**情緒分類**: {sentiment}\n**AI 判斷的信心度**: {confidence_label}", confidence else: return "⚠️ **無法分析文本,請稍後再試**", 0.0 except Exception as e: return f"❌ **錯誤**: {str(e)}", 0.0