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() |