Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig | |
| # Model ve tokenizer yüklemeleri için quantize ayarları | |
| bnb_config = BitsAndBytesConfig( | |
| load_in_8bit=True, | |
| llm_int8_threshold=6.0 | |
| ) | |
| def load_model(): | |
| try: | |
| tokenizer = AutoTokenizer.from_pretrained( | |
| "deepseek-ai/deepseek-r1", | |
| trust_remote_code=True | |
| ) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "deepseek-ai/deepseek-r1", | |
| trust_remote_code=True, | |
| quantization_config=bnb_config, | |
| device_map="auto", | |
| low_cpu_mem_usage=True | |
| ) | |
| return tokenizer, model | |
| except Exception as e: | |
| st.error(f"Model yüklenemedi: {str(e)}") | |
| st.stop() | |
| tokenizer, model = load_model() | |
| # Streamlit arayüzü | |
| st.title("DeepSeek-R1 ChatBot") | |
| st.markdown(""" | |
| **Not:** Bu demo modeli CPU üzerinde çalışmaktadır. Yanıt süreleri GPU'ya göre daha uzun olabilir. | |
| """) | |
| # Sohbet geçmişi yönetimi | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| # Geçmiş mesajları göster | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.markdown(message["content"]) | |
| # Kullanıcı girişi | |
| prompt = st.chat_input("Mesajınızı yazın...") | |
| if prompt: | |
| # Kullanıcı mesajını ekle | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| with st.chat_message("user"): | |
| st.markdown(prompt) | |
| # Asistan yanıtı oluştur | |
| with st.chat_message("assistant"): | |
| message_placeholder = st.empty() | |
| full_response = "" | |
| try: | |
| # Model için prompt formatı | |
| inputs = tokenizer.apply_chat_template( | |
| [{"role": "user", "content": prompt}], | |
| return_tensors="pt" | |
| ) | |
| # Generation ayarları | |
| outputs = model.generate( | |
| inputs.to(model.device), | |
| max_new_tokens=512, | |
| temperature=0.7, | |
| top_p=0.9, | |
| do_sample=True, | |
| pad_token_id=tokenizer.eos_token_id | |
| ) | |
| full_response = tokenizer.decode( | |
| outputs[0][len(inputs[0]):], | |
| skip_special_tokens=True | |
| ) | |
| except Exception as e: | |
| full_response = f"Hata oluştu: {str(e)}" | |
| message_placeholder.markdown(full_response) | |
| st.session_state.messages.append( | |
| {"role": "assistant", "content": full_response} | |
| ) |