memengoc commited on
Commit
1bb59b6
·
verified ·
1 Parent(s): 1ae3460

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -44
app.py CHANGED
@@ -1,58 +1,46 @@
1
- from flask import Flask, request, jsonify, render_template
2
- from transformers import AutoTokenizer, AutoModelForCausalLM
3
- from peft import PeftModel
4
  import torch
 
 
5
 
6
- app = Flask(__name__)
7
- import os
8
- from huggingface_hub import login
9
-
10
- # Lấy token từ biến môi trường và đăng nhập HF Hub
11
- access_token = os.environ.get("HUGGING_FACE_HUB_TOKEN")
12
- if access_token is None:
13
- raise ValueError("Bạn chưa đặt biến môi trường HUGGING_FACE_HUB_TOKEN")
14
- login(token=access_token)
15
- # Cấu hình model
16
- BASE_MODEL = "openchat/openchat-3.5-0106"
17
- ADAPTER_PATH = "./chatbot-gpt35-peft"
18
-
19
  device = "cuda" if torch.cuda.is_available() else "cpu"
20
 
21
- # Load tokenizerbase model
22
- tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL, trust_remote_code=True)
23
- base_model = AutoModelForCausalLM.from_pretrained(
24
- BASE_MODEL,
25
- device_map="auto",
26
- torch_dtype=torch.float16,
27
- trust_remote_code=True,
28
- )
29
- # Load adapter PEFT
30
- model = PeftModel.from_pretrained(base_model, ADAPTER_PATH, device_map="auto", is_local=True)
31
- model = model.to(device)
32
  model.eval()
33
 
34
- @app.route("/")
35
- def home():
36
- return render_template("index.html") # Tạo file index.html ở thư mục templates
37
-
38
- @app.route("/chat", methods=["POST"])
39
- def chat():
40
- user_input = request.json.get("message", "")
41
- prompt = f"User: {user_input}\nAI:"
42
-
43
  inputs = tokenizer(prompt, return_tensors="pt").to(device)
44
  outputs = model.generate(
45
  **inputs,
46
- max_new_tokens=200,
47
  do_sample=True,
48
  temperature=0.7,
49
  top_p=0.9,
50
- pad_token_id=tokenizer.eos_token_id
51
  )
52
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
53
- # Loại bỏ phần prompt cũ nếu cần
54
- response = response[len(prompt):].strip()
55
- return jsonify({"response": response})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
 
57
- if __name__ == "__main__":
58
- app.run(host="0.0.0.0", port=5000, debug=True)
 
 
 
 
1
  import torch
2
+ import gradio as gr
3
+ from transformers import AutoTokenizer, AutoModelForCausalLM
4
 
5
+ MODEL_REPO = "memengoc/newchat"
 
 
 
 
 
 
 
 
 
 
 
 
6
  device = "cuda" if torch.cuda.is_available() else "cpu"
7
 
8
+ # Load modeltokenizer từ Hugging Face
9
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_REPO)
10
+ model = AutoModelForCausalLM.from_pretrained(MODEL_REPO).to(device)
 
 
 
 
 
 
 
 
11
  model.eval()
12
 
13
+ # Hàm sinh phản hồi
14
+ def generate_response(prompt):
 
 
 
 
 
 
 
15
  inputs = tokenizer(prompt, return_tensors="pt").to(device)
16
  outputs = model.generate(
17
  **inputs,
18
+ max_new_tokens=300,
19
  do_sample=True,
20
  temperature=0.7,
21
  top_p=0.9,
22
+ pad_token_id=tokenizer.eos_token_id,
23
  )
24
+ return tokenizer.decode(outputs[0], skip_special_tokens=True)
25
+
26
+ # Giao diện Gradio
27
+ def chat(user_input, history):
28
+ if history is None:
29
+ history = ""
30
+ prompt = f"{history}\nỨng viên: {user_input}\nNhà tuyển dụng:"
31
+ response = generate_response(prompt)
32
+ new_history = f"{prompt} {response}"
33
+ return response, new_history
34
+
35
+ with gr.Blocks() as demo:
36
+ gr.Markdown("## 🤖 Chatbot Phỏng Vấn AI (OpenChat 3.5 đã Fine-tuned)")
37
+
38
+ chat_history = gr.Textbox(visible=False)
39
+ user_input = gr.Textbox(label="Câu trả lời của ứng viên")
40
+ response_output = gr.Textbox(label="Phản hồi nhà tuyển dụng")
41
+
42
+ send_btn = gr.Button("Gửi")
43
+
44
+ send_btn.click(chat, inputs=[user_input, chat_history], outputs=[response_output, chat_history])
45
 
46
+ demo.launch()