Ptul2x5 commited on
Commit
ebf7d97
·
verified ·
1 Parent(s): c7947de

Upload 11 files

Browse files
Files changed (2) hide show
  1. app.py +15 -8
  2. config.py +31 -0
app.py CHANGED
@@ -6,13 +6,13 @@ from flask_login import LoginManager, login_user, logout_user, login_required, c
6
  from models import db, User, Feedback
7
  from forms import RegistrationForm, LoginForm
8
  from PhoBERTMultiTask import PhoBERTMultiTask
 
9
 
10
  app = Flask(__name__)
11
 
12
  # Cấu hình
13
- app.config['SECRET_KEY'] = 'your-secret-key-change-this-in-production'
14
- app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///feedback_analysis.db'
15
- app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
16
 
17
  # Khởi tạo extensions
18
  db.init_app(app)
@@ -29,7 +29,7 @@ def load_user(user_id):
29
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
30
 
31
  # === Load tokenizer & model ===
32
- MODEL_REPO = "Ptul2x5/Student_Feedback_Sentiment" # 🔹 Repo Hugging Face của bạn
33
 
34
  print("🔄 Đang tải tokenizer và model từ Hugging Face...")
35
  tokenizer = AutoTokenizer.from_pretrained(MODEL_REPO, use_fast=False)
@@ -158,8 +158,8 @@ def predict():
158
  topic = torch.argmax(logits_topic, dim=1).item()
159
 
160
  # Mapping
161
- SENTIMENT_MAP = {0: "negative", 1: "neutral", 2: "positive"}
162
- TOPIC_MAP = {0: "lecturer", 1: "training_program", 2: "facility", 3: "others"}
163
 
164
  sentiment = SENTIMENT_MAP[sent]
165
  topic_result = TOPIC_MAP[topic]
@@ -200,5 +200,12 @@ with app.app_context():
200
  print("✅ Database đã sẵn sàng!")
201
 
202
  if __name__ == "__main__":
203
- # Hugging Face luôn yêu cầu port = 7860
204
- app.run(host="0.0.0.0", port=7860, debug=True)
 
 
 
 
 
 
 
 
6
  from models import db, User, Feedback
7
  from forms import RegistrationForm, LoginForm
8
  from PhoBERTMultiTask import PhoBERTMultiTask
9
+ from config import config
10
 
11
  app = Flask(__name__)
12
 
13
  # Cấu hình
14
+ config_name = os.environ.get('FLASK_ENV', 'default')
15
+ app.config.from_object(config[config_name])
 
16
 
17
  # Khởi tạo extensions
18
  db.init_app(app)
 
29
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
30
 
31
  # === Load tokenizer & model ===
32
+ MODEL_REPO = app.config['MODEL_REPO']
33
 
34
  print("🔄 Đang tải tokenizer và model từ Hugging Face...")
35
  tokenizer = AutoTokenizer.from_pretrained(MODEL_REPO, use_fast=False)
 
158
  topic = torch.argmax(logits_topic, dim=1).item()
159
 
160
  # Mapping
161
+ SENTIMENT_MAP = app.config['SENTIMENT_MAP']
162
+ TOPIC_MAP = app.config['TOPIC_MAP']
163
 
164
  sentiment = SENTIMENT_MAP[sent]
165
  topic_result = TOPIC_MAP[topic]
 
200
  print("✅ Database đã sẵn sàng!")
201
 
202
  if __name__ == "__main__":
203
+ # Hugging Face Spaces configuration
204
+ port = int(os.environ.get("PORT", 7860))
205
+ debug = os.environ.get("FLASK_ENV") != "production"
206
+
207
+ print(f"🚀 Starting Flask app on port {port}")
208
+ print(f"🔧 Debug mode: {debug}")
209
+ print(f"🌐 Environment: {os.environ.get('FLASK_ENV', 'default')}")
210
+
211
+ app.run(host="0.0.0.0", port=port, debug=debug)
config.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ class Config:
4
+ """Cấu hình cơ bản"""
5
+ SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secret-key-change-this-in-production'
6
+ SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///feedback_analysis.db'
7
+ SQLALCHEMY_TRACK_MODIFICATIONS = False
8
+
9
+ # Hugging Face Spaces configuration
10
+ MODEL_REPO = "Ptul2x5/Student_Feedback_Sentiment"
11
+
12
+ # Sentiment và Topic mapping
13
+ SENTIMENT_MAP = {0: "negative", 1: "neutral", 2: "positive"}
14
+ TOPIC_MAP = {0: "lecturer", 1: "training_program", 2: "facility", 3: "others"}
15
+
16
+ class ProductionConfig(Config):
17
+ """Cấu hình cho production"""
18
+ SECRET_KEY = os.environ.get('SECRET_KEY')
19
+ if not SECRET_KEY:
20
+ raise ValueError("SECRET_KEY environment variable must be set in production")
21
+
22
+ class DevelopmentConfig(Config):
23
+ """Cấu hình cho development"""
24
+ DEBUG = True
25
+
26
+ # Chọn config dựa trên environment
27
+ config = {
28
+ 'development': DevelopmentConfig,
29
+ 'production': ProductionConfig,
30
+ 'default': DevelopmentConfig
31
+ }