anktechsol's picture
Update app.py
84ae6e6 verified
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# Load Anki-2.5 model
model_name = "anktechsol/anki-2.5"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float32,
device_map="auto"
)
def respond(message, history, system_message, max_tokens, temperature, top_p):
"""
Educational Tutor for Indian Students powered by Anki-2.5
Helps with homework, exam prep, and learning in Indian languages
"""
# Build prompt manually
prompt = system_message + "\n\n"
# Add history
for msg in history:
if isinstance(msg, dict):
role = msg.get("role", "")
content = msg.get("content", "")
if role == "user":
prompt += f"User: {content}\n"
elif role == "assistant":
prompt += f"Assistant: {content}\n"
elif len(msg) == 2:
prompt += f"User: {msg[0]}\n"
prompt += f"Assistant: {msg[1]}\n"
# Add current message
prompt += f"User: {message}\nAssistant:"
# Generate response
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
inputs["input_ids"],
max_new_tokens=max_tokens,
temperature=temperature,
top_p=top_p,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True)
return response
# Create ChatInterface focused on educational tutoring
chatbot = gr.ChatInterface(
respond,
title="🎓 Indian Education Tutor - Powered by Anki-2.5",
description="Get help with homework, exam preparation, and learning in Indian languages. Ask questions about any subject!",
examples=[
["धातु क्या है? धातुओं के उदाहरण दीजिए"],
["Explain photosynthesis in simple terms"],
["Help me solve this math problem: 2x + 5 = 15"],
["প্রথম বিশ্বযুদ্ধের কারণ কী?"],
["What are the main parts of a plant?"],
],
additional_inputs=[
gr.Textbox(
value="You are an educational tutor for Indian students. You help with homework, exam preparation, and learning across all subjects including math, science, social studies, and languages. You can explain concepts in Hindi, English, Bengali, and other Indian languages. Be patient, encouraging, and provide step-by-step explanations.",
label="System Message"
),
gr.Slider(minimum=50, maximum=1024, value=512, step=1, label="Max Tokens"),
gr.Slider(minimum=0.1, maximum=1.5, value=0.7, step=0.1, label="Temperature"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
],
theme=gr.themes.Soft(),
)
if __name__ == "__main__":
chatbot.launch()