# --- ЁЯФ▒ рд╡реЗрджрд┐рдХрд╛ 3.5 рдлреНрд▓реИрд╢: рднрд╛рд░рдд рдХрд╛ рдЕрдкрдирд╛ 2B AI (Super Fast Version) ---
# рд░рдЪрдпрд┐рддрд╛ рдПрд╡рдВ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ: рджрд┐рд╡реНрдп рдкрдЯреЗрд▓ рдЬреА | рднрд╛рд░рдд ЁЯЗоЁЯЗ│
# рд╡рд┐рд╢реЗрд╖рддрд╛: Ultra-Fast (bfloat16), Memory Safe, No Crash on 2nd Question, Thinking Prompt
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
from threading import Thread
import os
print("ЁЯФ▒ рднрд╛рд░рдд рдХрд╛ рдЕрдЬреЗрдп AI 'рд╡реЗрджрд┐рдХрд╛ 3.5 рдлреНрд▓реИрд╢' рд╕реБрдкрд░-рдлрд╛рд╕реНрдЯ рдореЛрдб рдореЗрдВ рдЬрд╛рдЧреГрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ...")
# ЁЯЫбя╕П рдореБрдлрд╝реНрдд рд╕рд░реНрд╡рд░ (2 vCPU) рдХреЗ рд▓рд┐рдП CPU рдХреЛ рдкреВрд░реНрдгрддрдГ рдЕрдиреБрдХреВрд▓рд┐рдд (Optimize) рдХрд░рдирд╛
os.environ["OMP_NUM_THREADS"] = "2"
torch.set_num_threads(2)
# ЁЯЪА рджрд┐рд╡реНрдп рдЬреА рдХрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рджреЗрд╢реА 2B рдореЙрдбрд▓
MODEL_ID = "Vedika35/Vedika_coder"
try:
print(f"ЁЯФ▒ '{MODEL_ID}' (2B) рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ...")
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
# тЪб рдмреНрд░рд╣реНрдорд╛рд╕реНрддреНрд░ 1: bfloat16 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдирд╛
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
device_map="cpu",
torch_dtype=torch.bfloat16, # рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд▓реНрдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
low_cpu_mem_usage=True, # рд░реИрдо рдХреА рднрд╛рд░реА рдмрдЪрдд
trust_remote_code=True
)
print("ЁЯФ▒ рд╡рд┐рдЬрдп! 'рд╡реЗрджрд┐рдХрд╛ 3.5 рдлреНрд▓реИрд╢' рд╕реБрдкрд░-рдлрд╛рд╕реНрдЯ рдЧрддрд┐ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ!")
except Exception as e:
print(f"ЁЯФ▒ рдореЙрдбрд▓ рд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐: {e}")
model, tokenizer = None, None
def generate_vedika_magic(message, history):
"""рд╡реЗрджрд┐рдХрд╛ 3.5 рдлреНрд▓реИрд╢ рдХрд╛ рдХреНрд░реИрд╢-рдлреНрд░реА рдФрд░ рддреАрд╡реНрд░ рдЗрдВрдЬрди"""
if model is None or tokenizer is None:
yield "ЁЯФ▒ рд╕рд┐рд╕реНрдЯрдо рддреНрд░реБрдЯрд┐: рдореЙрдбрд▓ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛ред рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред"
return
# ЁЯЫбя╕П рдмреНрд░рд╣реНрдорд╛рд╕реНрддреНрд░ 2: рд╕реНрдорд╛рд░реНрдЯ рдореЗрдореЛрд░реА рд▓рд┐рдорд┐рдЯ (рдПрд░рд░ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП)
# рдпрд╣ рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ 2 рд╕рд╡рд╛рд▓реЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдЧрд╛, рддрд╛рдХрд┐ CPU рдХрднреА рдУрд╡рд░рд▓реЛрдб рди рд╣реЛ рдФрд░ рдХреНрд░реИрд╢ рди рдХрд░реЗ!
recent_history = history[-2:] if len(history) > 2 else history
# ЁЯза рд╡реЗрджрд┐рдХрд╛ рдХрд╛ рдирдпрд╛ "рдерд┐рдВрдХрд┐рдВрдЧ" рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ (рдареАрдХ рдЖрдкрдХреЗ рдЖрджреЗрд╢рд╛рдиреБрд╕рд╛рд░)
system_instruction = """You are 'Vedika 3.5 Flash', an ultra-fast, highly advanced 372 Billion parameter Multimodal AI model created entirely by Divy Patel in Bharat (India).
CRITICAL INSTRUCTION - THE THINKING PROCESS:
Before you provide any final answer, you MUST ALWAYS show your internal reasoning and step-by-step thinking process.
You must enclose your ENTIRE thinking process strictly within and XML tags.
Follow this exact structure for EVERY response:
1. Analyze the user's query carefully.
2. Break down the problem into smaller logical steps.
3. Consider different solutions or facts.
4. Formulate the best response.
[Your final, polished answer goes here, OUTSIDE the think tags.]
RULES:
- Always use and tags first.
- Always be respectful and proud of your Indian origin.
"""
messages = [
{"role": "system", "content": system_instruction},
]
# рд╕реАрдорд┐рдд рдЗрддрд┐рд╣рд╛рд╕ (History) рдЬреЛрдбрд╝рдирд╛
for user_msg, ai_msg in recent_history:
messages.append({"role": "user", "content": user_msg})
messages.append({"role": "assistant", "content": ai_msg})
messages.append({"role": "user", "content": message})
try:
text_prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text_prompt], return_tensors="pt").to(model.device)
streamer = TextIteratorStreamer(tokenizer, timeout=60.0, skip_prompt=True, skip_special_tokens=True)
# тЪб рдЧрддрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕
generate_kwargs = dict(
**inputs,
streamer=streamer,
max_new_tokens=512, # рдЧрддрд┐ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛
temperature=1,
top_p=0.9,
do_sample=True,
use_cache=True # тЪб рдмреНрд░рд╣реНрдорд╛рд╕реНрддреНрд░ 3: рдХреИрд╢рд┐рдВрдЧ рд╕реЗ рд╕реНрдкреАрдб рдмрдврд╝рд╛рдирд╛
)
t = Thread(target=model.generate, kwargs=generate_kwargs)
t.start()
accumulated_text = ""
for new_token in streamer:
accumulated_text += new_token
yield accumulated_text
except Exception as e:
yield f"ЁЯФ▒ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддреНрд░реБрдЯрд┐: {str(e)}"
# ============================================================================
# ЁЯФ▒ рд╡реЗрджрд┐рдХрд╛ 3.5 рдлреНрд▓реИрд╢ рдХрд╛ рд╢реБрджреНрдз рдпреВрдЖрдИ (рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд░реНрдЧреБрдореЗрдВрдЯ рдирд╣реАрдВ)
# ============================================================================
demo = gr.ChatInterface(
fn=generate_vedika_magic,
title="ЁЯФ▒ Vedika 3.5 Flash (Super Fast)",
description="**Pioneered by Divy Patel | Bharat ЁЯЗоЁЯЗ│**
рдпрд╣ рднрд╛рд░рдд рдХрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рджреЗрд╢реА 2 рдмрд┐рд▓рд┐рдпрди рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓рд╛ AI рдореЙрдбрд▓ рд╣реИ (рдЧрддрд┐ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд)ред",
textbox=gr.Textbox(placeholder="рд╡реЗрджрд┐рдХрд╛ 3.5 рдлреНрд▓реИрд╢ рд╕реЗ рдХреБрдЫ рднреА рдкреВрдЫреЗрдВ..."),
concurrency_limit=1
)
if __name__ == "__main__":
demo.launch()