File size: 2,023 Bytes
da4d1f9
cf9addc
76de232
cf9addc
 
f1fc130
cf9addc
76de232
 
 
0f06294
76de232
 
f1fc130
cf9addc
 
 
 
76de232
 
 
 
 
 
1d398ee
76de232
d9b7716
76de232
 
cf9addc
f1fc130
da4d1f9
 
 
f70ab9c
 
da4d1f9
 
76de232
da4d1f9
a4a178e
 
 
 
 
 
 
 
 
 
 
 
f1fc130
76de232
62a0bb6
cf9addc
b0d2e27
 
 
 
62a0bb6
da4d1f9
 
 
cf9addc
da4d1f9
 
 
cf9addc
 
b0d2e27
da4d1f9
 
cf9addc
da4d1f9
 
 
ba4780e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline


# Load tokenizer và model
print("Đang tải model...")
model_name = "cochi1706/codingassistant"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Xác định device cho pipeline (0 cho cuda, -1 cho cpu)
device = 0 if torch.cuda.is_available() else -1

# Set padding token nếu chưa có
if tokenizer.pad_token is None:
    tokenizer.pad_token = tokenizer.eos_token

# Tạo pipeline để sinh text
text_generator = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    device=device,
    max_length=520,
    do_sample=True,
    temperature=0.7
)

model.eval()
print(f"Model đã sẵn sàng! Device: {device}")


def respond(
    message,
    history=None
):
    """
    Tạo phản hồi từ model coding assistant sử dụng pipeline
    """
    # Xử lý message - có thể là dict hoặc string
    if isinstance(message, dict):
        user_message = message.get("content", "")
    else:
        user_message = str(message) if message else ""
    
    # Nếu không có message, trả về thông báo lỗi
    if not user_message:
        return "Xin lỗi, tôi không nhận được câu hỏi của bạn."
    
    # Sử dụng pipeline để generate text
    generated = text_generator(user_message, num_return_sequences=1)
    
    # Lấy câu trả lời từ kết quả
    answer = generated[0]['generated_text']
    
    # Đảm bảo trả về string không rỗng
    if not answer or len(answer.strip()) == 0:
        answer = "Xin lỗi, tôi không thể tạo phản hồi."
    
    return answer


"""
Chatbot hỗ trợ lập trình sử dụng Qwen3 fine-tuned model
"""
chatbot = gr.ChatInterface(
    respond,
    title="🤖 Coding Assistant",
    description="Chatbot hỗ trợ lập trình",
    type="messages"
)

demo = chatbot


if __name__ == "__main__":
    demo.launch()