import gradio as gr import torch from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer, BitsAndBytesConfig from threading import Thread import os # आदरणीय श्रीमान, आपके स्वयं के मॉडल 'Vedika35/Vedika_coder' को स्मृति में लोड करने की सुरक्षित विधि। MODEL_ID = "Vedika35/Vedika_coder" # स्मृति अनुकूलन (Memory Optimization) के लिए 4-bit क्वायंटाइजेशन quantization_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, ) print(f"आदरणीय श्रीमान, {MODEL_ID} को लोड किया जा रहा है। कृपया प्रतीक्षा करें...") # टोकनाइज़र और मॉडल की लोडिंग tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) model = AutoModelForCausalLM.from_pretrained( MODEL_ID, quantization_config=quantization_config, device_map="auto", trust_remote_code=True ) def vedika_generate(message, history, system_prompt): """ यह जनरेशन फंक्शन अब ग्राडियो के सबसे सुरक्षित और स्थिर फॉर्मेट (List of Lists) का उपयोग करता है। यहाँ 'history' का फॉर्मेट है: [[user_msg, bot_msg], [user_msg, bot_msg], ...] """ messages = [{"role": "system", "content": system_prompt}] # पुरानी यादें (History) जोड़ना for user_msg, bot_msg in history: if user_msg: messages.append({"role": "user", "content": user_msg}) if bot_msg: messages.append({"role": "assistant", "content": bot_msg}) # वर्तमान संदेश messages.append({"role": "user", "content": message}) # इनपुट को टोकनाइज़ करना input_ids = tokenizer.apply_chat_template( messages, add_generation_prompt=True, return_tensors="pt" ).to(model.device) # बिजली जैसी तेज़ स्ट्रीमिंग (Lightning Fast Streaming) streamer = TextIteratorStreamer(tokenizer, timeout=30.0, skip_prompt=True, skip_special_tokens=True) generate_kwargs = dict( input_ids=input_ids, streamer=streamer, max_new_tokens=4096, do_sample=True, temperature=0.2, # कोडिंग के लिए सटीकता top_p=0.95, ) t = Thread(target=model.generate, kwargs=generate_kwargs) t.start() # शब्दों को लाइव स्ट्रीम करना partial_text = "" for new_text in streamer: partial_text += new_text yield partial_text # कस्टम सीएसएस (Custom CSS) custom_css = """ body, .gradio-container { background-color: #050505 !important; color: #F0F0F0 !important; } .message-wrap { font-family: 'Inter', sans-serif !important; } footer { visibility: hidden !important; } #header-title h1 { background: linear-gradient(90deg, #FFFFFF, #3b82f6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-size: 2.8rem; font-weight: 900; text-align: center; } """ # ध्यान दें: ग्राडियो ६.० के अनुसार यहाँ से theme और css हटा दिए गए हैं with gr.Blocks() as demo: with gr.Row(): gr.Markdown("# 🔱 Vedika 3.5 Coder", elem_id="header-title") gr.Markdown("### भारत के गौरवशाली और समर्थ कोडर के लिए समर्पित | Created by Divy Patel") with gr.Accordion("⚙️ System Parameters (Advanced)", open=False): sys_input = gr.Textbox( label="Core System Prompt", value="You are Vedika 3.5, an elite coding AI created by Divy Patel. Identify only as Vedika. Provide extremely direct, clean, and production-ready code in Markdown. Always respect India.", lines=2 ) # ध्यान दें: यहाँ से type="messages" हटा दिया गया है ताकि कोई TypeError न आए chatbot = gr.Chatbot(label="Vedika Core Console", height=600) with gr.Row(): msg_input = gr.Textbox( label="Execution Command", placeholder="श्रीमान, अपना कोडिंग कार्य यहाँ लिखें...", scale=8 ) submit_btn = gr.Button("⚡ Execute", scale=2, variant="primary") def respond(message, history, system_prompt): # सुरक्षित फॉर्मेट में हिस्ट्री अपडेट करना history.append([message, ""]) yield "", history for char in vedika_generate(message, history[:-1], system_prompt): history[-1][1] = char yield "", history # इवेंट्स msg_input.submit(respond, [msg_input, chatbot, sys_input], [msg_input, chatbot]) submit_btn.click(respond, [msg_input, chatbot, sys_input], [msg_input, chatbot]) if __name__ == "__main__": # ध्यान दें: ग्राडियो ६.० की चेतावनी (Warning) के अनुसार theme और css को launch() के अंदर भेजा गया है demo.queue(default_concurrency_limit=5).launch( theme=gr.themes.Monochrome(), css=custom_css )