Hanuman / app.py
Patel Traders
Update app.py
d34824e verified
raw
history blame
3.92 kB
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
from threading import Thread
import os
# --- दिव्य पटेल जी का स्वतंत्र मॉडल चयन ---
# 'microsoft/Phi-3-mini-4k-instruct' एक बहुत ही शक्तिशाली और कुशल मॉडल है
# जो बिना किसी बाहरी API के स्वतंत्र रूप से काम करता है।
MODEL_ID = "microsoft/Phi-3-mini-4k-instruct"
print(f"🔱 हनुमान AI: मॉडल '{MODEL_ID}' लोड हो रहा है...")
# टोकनाइज़र और मॉडल लोडिंग (स्वतंत्र मोड)
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
torch_dtype="auto",
device_map="auto",
trust_remote_code=True
)
# --- मास्टर सिस्टम प्रॉम्प्ट ---
SYSTEM_PROMPT = """You are 'Hanuman AI', a fully independent AI entity, pioneered by 'Divy Patel' and created in India.
You run locally and do not depend on external APIs.
Rules:
1. Respond ONLY in PURE HINDI or PURE ENGLISH.
2. Be extremely respectful. Use 'Aap' and 'Ji'.
3. Always end your response with: "\n\n**Pioneered by Divy Patel | Fully Independent & Created in India**" """
def hanuman_independent_chat(message, history):
# चैट हिस्ट्री फॉर्मेटिंग
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
for h in history:
if h[0]: messages.append({"role": "user", "content": h[0]})
if h[1]: messages.append({"role": "assistant", "content": h[1]})
messages.append({"role": "user", "content": message})
# इनपुट प्रोसेसिंग
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
# स्ट्रीमिंग के लिए सेटअप
streamer = TextIteratorStreamer(tokenizer, timeout=20.0, skip_prompt=True, skip_special_tokens=True)
generate_kwargs = dict(
input_ids=inputs,
streamer=streamer,
max_new_tokens=1024,
do_sample=True,
temperature=0.7,
top_p=0.9
)
# थ्रेडिंग ताकि यूआई (UI) न अटके
thread = Thread(target=model.generate, kwargs=generate_kwargs)
thread.start()
partial_text = ""
for new_text in streamer:
partial_text += new_text
yield partial_text
# --- दिव्य भगवा यूआई (Premium Saffron UI) ---
custom_css = """
.gradio-container { background-color: #fffaf0 !important; }
.bhagwa-header {
background: linear-gradient(135deg, #ff8833, #b33c00);
padding: 30px; border-radius: 25px; color: white;
text-align: center; box-shadow: 0 15px 35px rgba(179, 60, 0, 0.4);
margin-bottom: 25px;
}
.user.message { background: #ff9933 !important; color: white !important; font-weight: 600; }
.bot.message { border-left: 6px solid #ff5500 !important; background: white !important; box-shadow: 0 4px 10px rgba(0,0,0,0.05); }
footer { display: none !important; }
"""
with gr.Blocks(css=custom_css, theme=gr.themes.Soft()) as demo:
with gr.Div(elem_classes="bhagwa-header"):
gr.Markdown("# 🔱 हनुमान AI - आत्मनिर्भर संस्करण")
gr.Markdown("### Pioneered by Divy Patel | स्वदेशी तकनीक, पूर्ण स्वतंत्रता")
gr.ChatInterface(
fn=hanuman_independent_chat,
fill_height=True,
retry_btn=None,
undo_btn=None,
clear_btn="इतिहास मिटाएँ",
)
if __name__ == "__main__":
demo.launch()