Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,70 +1,79 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
-
from
|
|
|
|
| 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
-
def respond(
|
| 6 |
-
message,
|
| 7 |
-
history: list[dict[str, str]],
|
| 8 |
-
system_message,
|
| 9 |
-
max_tokens,
|
| 10 |
-
temperature,
|
| 11 |
-
top_p,
|
| 12 |
-
hf_token: gr.OAuthToken,
|
| 13 |
-
):
|
| 14 |
"""
|
| 15 |
-
|
|
|
|
| 16 |
"""
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
-
|
| 40 |
-
yield response
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
"""
|
| 44 |
-
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
|
| 45 |
-
"""
|
| 46 |
chatbot = gr.ChatInterface(
|
| 47 |
respond,
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
additional_inputs=[
|
| 50 |
-
gr.Textbox(
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
gr.Slider(
|
| 54 |
-
minimum=0.1,
|
| 55 |
-
maximum=1.0,
|
| 56 |
-
value=0.95,
|
| 57 |
-
step=0.05,
|
| 58 |
-
label="Top-p (nucleus sampling)",
|
| 59 |
),
|
|
|
|
|
|
|
|
|
|
| 60 |
],
|
|
|
|
| 61 |
)
|
| 62 |
|
| 63 |
-
with gr.Blocks() as demo:
|
| 64 |
-
with gr.Sidebar():
|
| 65 |
-
gr.LoginButton()
|
| 66 |
-
chatbot.render()
|
| 67 |
-
|
| 68 |
-
|
| 69 |
if __name__ == "__main__":
|
| 70 |
-
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM
|
| 3 |
+
import torch
|
| 4 |
|
| 5 |
+
# Load Anki-2.5 model
|
| 6 |
+
model_name = "anktechsol/anki-2.5"
|
| 7 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 8 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 9 |
+
model_name,
|
| 10 |
+
torch_dtype=torch.float32,
|
| 11 |
+
device_map="auto"
|
| 12 |
+
)
|
| 13 |
|
| 14 |
+
def respond(message, history, system_message, max_tokens, temperature, top_p):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
"""
|
| 16 |
+
Educational Tutor for Indian Students powered by Anki-2.5
|
| 17 |
+
Helps with homework, exam prep, and learning in Indian languages
|
| 18 |
"""
|
| 19 |
+
# Construct conversation with system message
|
| 20 |
+
conversation = [{"role": "system", "content": system_message}]
|
| 21 |
+
|
| 22 |
+
# Add history
|
| 23 |
+
for msg in history:
|
| 24 |
+
if isinstance(msg, dict):
|
| 25 |
+
conversation.append(msg)
|
| 26 |
+
elif len(msg) == 2:
|
| 27 |
+
conversation.append({"role": "user", "content": msg[0]})
|
| 28 |
+
conversation.append({"role": "assistant", "content": msg[1]})
|
| 29 |
+
|
| 30 |
+
# Add current message
|
| 31 |
+
conversation.append({"role": "user", "content": message})
|
| 32 |
+
|
| 33 |
+
# Generate response
|
| 34 |
+
inputs = tokenizer.apply_chat_template(
|
| 35 |
+
conversation,
|
| 36 |
+
tokenize=True,
|
| 37 |
+
add_generation_prompt=True,
|
| 38 |
+
return_tensors="pt"
|
| 39 |
+
).to(model.device)
|
| 40 |
+
|
| 41 |
+
with torch.no_grad():
|
| 42 |
+
outputs = model.generate(
|
| 43 |
+
inputs,
|
| 44 |
+
max_new_tokens=max_tokens,
|
| 45 |
+
temperature=temperature,
|
| 46 |
+
top_p=top_p,
|
| 47 |
+
do_sample=True,
|
| 48 |
+
pad_token_id=tokenizer.eos_token_id
|
| 49 |
+
)
|
| 50 |
+
|
| 51 |
+
response = tokenizer.decode(outputs[0][inputs.shape[-1]:], skip_special_tokens=True)
|
| 52 |
+
return response
|
| 53 |
|
| 54 |
+
# Create ChatInterface focused on education
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
chatbot = gr.ChatInterface(
|
| 56 |
respond,
|
| 57 |
+
title="🎓 Indian Education Tutor - Powered by Anki-2.5",
|
| 58 |
+
description="Get help with homework, exam preparation, and learning - in Hindi, English, and other Indian languages. Ask questions about Math, Science, History, and more!",
|
| 59 |
+
examples=[
|
| 60 |
+
["मुझे पाइथागोरस प्रमेय समझाओ"],
|
| 61 |
+
["Explain photosynthesis in simple terms"],
|
| 62 |
+
["ভারতের স্বাধীনতা আন্দোলন সম্পর্ভে বলুন"],
|
| 63 |
+
["Help me solve this quadratic equation: x^2 + 5x + 6 = 0"],
|
| 64 |
+
["நான் கட்டுரை எழுத எப்படி வேணும்?"],
|
| 65 |
+
],
|
| 66 |
additional_inputs=[
|
| 67 |
+
gr.Textbox(
|
| 68 |
+
value="You are a patient and knowledgeable educational tutor for Indian students. You can explain concepts in Hindi, English, and other Indian languages. You help with homework, exam preparation, and make learning engaging. Always provide clear, step-by-step explanations.",
|
| 69 |
+
label="System Message"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
),
|
| 71 |
+
gr.Slider(minimum=50, maximum=1024, value=512, step=1, label="Max Tokens"),
|
| 72 |
+
gr.Slider(minimum=0.1, maximum=1.5, value=0.7, step=0.1, label="Temperature"),
|
| 73 |
+
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
|
| 74 |
],
|
| 75 |
+
theme=gr.themes.Soft(),
|
| 76 |
)
|
| 77 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
if __name__ == "__main__":
|
| 79 |
+
chatbot.launch()
|