Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import AutoModelForCausalLM, AutoTokenizer | |
import torch | |
# Model ve Tokenizer Yükleme | |
model_name = "microsoft/DialoGPT-medium" # Alternatif olarak başka bir model de seçebilirsiniz | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
# Chat Fonksiyonu | |
def chatbot_response(input_text, chat_history=[]): | |
# Kullanıcı girdisini encode et | |
new_user_input_ids = tokenizer.encode(input_text + tokenizer.eos_token, return_tensors='pt') | |
# Önceki sohbet geçmişi ile birleştir | |
bot_input_ids = torch.cat([torch.LongTensor(chat_history)] + [new_user_input_ids], dim=-1) if chat_history else new_user_input_ids | |
# Model ile yanıt üret | |
chat_history = model.generate(bot_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id) | |
# Yanıtı decode et | |
output = tokenizer.decode(chat_history[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True) | |
# Sohbet geçmişini güncelle | |
chat_history = chat_history.tolist() | |
return output, chat_history | |
# Gradio Arayüzü | |
with gr.Blocks() as demo: | |
chatbot = gr.Chatbot(label="AI ChatBot") | |
state = gr.State([]) # Sohbet geçmişini tutmak için bir state | |
with gr.Row(): | |
with gr.Column(scale=1): | |
txt = gr.Textbox(show_label=False, placeholder="Type your message...") # Mesaj giriş kutusu | |
# Girdi gönderildiğinde çalışacak işlev | |
def submit_message(user_input, chat_history): | |
output, chat_history = chatbot_response(user_input, chat_history) | |
chat_history.append((user_input, output)) | |
return chat_history, chat_history | |
# Girdiyi işleme ve güncelleme | |
txt.submit(submit_message, [txt, state], [chatbot, state]) | |
# Uygulamayı Çalıştır | |
demo.launch() | |