mentora / app.py
phucdoankaizen's picture
Update app.py
d35302b verified
import gradio as gr
from huggingface_hub import InferenceClient
from llama_cpp import Llama
from huggingface_hub import hf_hub_download
import os
# 🧠 Load mô hình GGUF
llm = Llama.from_pretrained(repo_id="phucdoankaizen/gguf_mentora", filename = "modelQ4.gguf", n_ctx=1024)
# ✨ System prompt định hướng phản hồi
system_prompt = "Bạn là một chuyên gia tâm lý, luôn lắng nghe, thấu hiểu và phản hồi nhẹ nhàng bằng tiếng Việt."
def chat(user_input, history):
if history is None:
history = []
recent_history = history[-5:]
dialogue = "\n".join([f"User: {msg['user']}\nAssistant: {msg['bot']}" for msg in recent_history])
prompt = f"{system_prompt}\n{dialogue}\nUser: {user_input}\nAssistant:"
output = llm(
prompt,
max_tokens=200,
temperature=0.1,
top_p=0.4,
stop=["User:", "Assistant:"]
)
answer = output["choices"][0]["text"].strip()
history.append({"user": user_input, "bot": answer})
formatted_history = [(msg["user"], msg["bot"]) for msg in history]
return "", formatted_history, history
# 🎨 Giao diện Gradio
with gr.Blocks() as demo:
gr.Markdown("## Mentora - AI hỗ trợ tâm lý")
chatbot = gr.Chatbot()
msg = gr.Textbox(label="Nhập tin nhắn của bạn", placeholder="Bạn đang cảm thấy thế nào?")
send_btn = gr.Button("Gửi")
session_state = gr.State([]) # 🧩 Lưu lịch sử riêng cho mỗi user
send_btn.click(chat, inputs=[msg, session_state], outputs=[msg, chatbot, session_state])
msg.submit(chat, inputs=[msg, session_state], outputs=[msg, chatbot, session_state])
demo.launch()