Spaces:
Runtime error
Runtime error
import gradio as gr | |
from huggingface_hub import InferenceClient | |
""" | |
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference | |
""" | |
# Using Hugging Face Zephyr 7B for better contextual responses | |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta") | |
def respond( | |
message, | |
history: list[tuple[str, str]], | |
system_message, | |
max_tokens, | |
temperature, | |
top_p, | |
): | |
# Define system message to act as MPSC/UPSC assistant | |
system_message = """You are an intelligent and well-informed MPSC/UPSC Assistant Chatbot. | |
Your job is to assist users with questions related to: | |
- MPSC and UPSC Syllabus | |
- Exam Patterns and Timelines | |
- Study Materials and References | |
- Important Current Affairs | |
- Guidance on Optional Subjects | |
- Previous Year Question Papers | |
- Tips for Prelims, Mains, and Interview Preparation | |
Provide relevant and concise answers along with reliable references or study materials. | |
""" | |
messages = [{"role": "system", "content": system_message}] | |
# Load conversation history for context | |
for val in history: | |
if val[0]: | |
messages.append({"role": "user", "content": val[0]}) | |
if val[1]: | |
messages.append({"role": "assistant", "content": val[1]}) | |
# Add user’s latest query | |
messages.append({"role": "user", "content": message}) | |
response = "" | |
references = "" | |
# Generate chatbot response | |
for message in client.chat_completion( | |
messages, | |
max_tokens=max_tokens, | |
stream=True, | |
temperature=temperature, | |
top_p=top_p, | |
): | |
token = message.choices[0].delta.content | |
response += token | |
yield response | |
# Generate additional references and notes based on user query | |
references = generate_references(message) | |
if references: | |
response += f"\n\n📚 **References & Study Notes:**\n{references}" | |
yield response | |
def generate_references(query): | |
"""Generate references and study notes based on user query.""" | |
if "syllabus" in query.lower(): | |
return ( | |
"- UPSC Syllabus: [Official UPSC Website](https://www.upsc.gov.in)\n" | |
"- MPSC Syllabus: [Official MPSC Website](https://mpsc.gov.in)" | |
) | |
elif "current affairs" in query.lower(): | |
return ( | |
"- The Hindu, PIB, Yojana Magazine\n" | |
"- Monthly Current Affairs PDFs (Vision IAS, Insights IAS)" | |
) | |
elif "prelims" in query.lower(): | |
return ( | |
"- Prelims Strategy: [UPSC Topper's Insights](https://www.insightsonindia.com)\n" | |
"- Previous Year Papers: [Download Here](https://upsc.gov.in/previous-year-papers)" | |
) | |
elif "mains" in query.lower(): | |
return ( | |
"- Mains Answer Writing: [IAS Baba, Forum IAS]\n" | |
"- Optional Subject Notes: Refer to standard books (Laxmikanth, Bipan Chandra, etc.)" | |
) | |
elif "interview" in query.lower(): | |
return ( | |
"- Mock Interview Preparation: [Drishti IAS, Vision IAS]\n" | |
"- DAF Analysis and Personality Tips" | |
) | |
else: | |
return ( | |
"- Standard Books for All Subjects: NCERTs, Laxmikanth, Spectrum\n" | |
"- Regular Updates on Exam Patterns" | |
) | |
""" | |
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface | |
""" | |
# Create Gradio Chat Interface | |
demo = gr.ChatInterface( | |
respond, | |
additional_inputs=[ | |
gr.Textbox(value="You are a smart MPSC/UPSC Assistant.", label="System message"), | |
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max Tokens (Length of Response)"), | |
gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="Temperature (Creativity Level)"), | |
gr.Slider( | |
minimum=0.1, | |
maximum=1.0, | |
value=0.95, | |
step=0.05, | |
label="Top-p (Nucleus Sampling for Better Results)", | |
), | |
], | |
title="🎯 MPSC/UPSC Assistant Chatbot", | |
description="Ask anything related to MPSC/UPSC preparation, syllabus, tips, and study materials. The chatbot provides answers with references and helpful notes for your exam preparation.", | |
) | |
if __name__ == "__main__": | |
demo.launch() | |