File size: 1,248 Bytes
3b7e70b
05fdee9
 
3b7e70b
05fdee9
 
3b7e70b
05fdee9
 
 
 
 
 
 
3b7e70b
05fdee9
 
 
 
 
3b7e70b
05fdee9
3b7e70b
05fdee9
 
 
 
 
 
 
 
3b7e70b
05fdee9
 
3b7e70b
05fdee9
 
3b7e70b
05fdee9
 
 
 
 
 
 
 
 
3b7e70b
05fdee9
 
3b7e70b
05fdee9
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
import gradio as gr
from transformers import pipeline
import torch

# Cek GPU
device = 0 if torch.cuda.is_available() else -1

# Load model (akan otomatis download pertama kali)
print("Loading AI model...")
generator = pipeline(
    'text-generation',
    model='microsoft/DialoGPT-small',  # Model kecil, cepat
    device=device
)

def chat(message, history):
    # Build context
    context = ""
    for h in history[-3:]:
        context += f"User: {h[0]}\nAI: {h[1]}\n"
    
    prompt = f"{context}User: {message}\nAI:"
    
    # Generate response
    result = generator(
        prompt,
        max_length=150,
        temperature=0.8,
        do_sample=True,
        pad_token_id=50256
    )
    
    response = result[0]['generated_text']
    response = response.replace(prompt, "").strip()
    
    if not response:
        response = "Maaf kak, saya kurang paham. Bisa diulang? 😊"
    
    history.append((message, response))
    return history, history

# UI
with gr.Blocks() as demo:
    gr.Markdown("# 🤖 Bangdim AI")
    chatbot = gr.Chatbot()
    msg = gr.Textbox(label="Pesan")
    clear = gr.Button("Clear")
    
    msg.submit(chat, [msg, chatbot], [chatbot, msg])
    clear.click(lambda: None, None, chatbot)

demo.launch()