NithyasriVllB's picture
Update app.py
7ae4d9d verified
import gradio as gr
from huggingface_hub import InferenceClient
# Function to return the appropriate client based on the model selected
def client_fn(model):
model_map = {
"Nous Hermes Mixtral 8x7B DPO": "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO",
"StarChat2 15b": "HuggingFaceH4/starchat2-15b-v0.1",
"Mistral 7B v0.3": "mistralai/Mistral-7B-Instruct-v0.3",
"Phi 3 mini": "microsoft/Phi-3-mini-4k-instruct",
"Mixtral 8x7B": "mistralai/Mixtral-8x7B-Instruct-v0.1"
}
return InferenceClient(model_map.get(model, "mistralai/Mixtral-8x7B-Instruct-v0.1"))
system_instructions = ("[SYSTEM] You are a chat bot named 'NITHIYASRI'S CHATBOT'."
"Your task is to Answer the question."
"Keep conversation very short, clear and concise."
"Respond naturally and concisely to the user's queries. "
"The expectation is that you will avoid introductions and start answering the query directly, Only answer the question asked by user, Do not say unnecessary things."
"Begin with a greeting if the user initiates the conversation. "
"Here is the user's query:[QUESTION] ")
# Function to generate model responses
def models(text, model="Mixtral 8x7B"):
client = client_fn(model)
generate_kwargs = {
"max_new_tokens": 100,
"do_sample": True,
}
formatted_prompt = f"{system_instructions} {text} [ANSWER]"
stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
output = ""
for response in stream:
output += response.token.text
if output.endswith("</s>"):
output = output[:-4]
return output
# Gradio interface description and configuration
description = """# NITHIYASRI'S CHATBOT-VIVEKANANDHA SCHOOL CBSE
### Inspired from ARTIFICIAL INTELLIGENCE"""
with gr.Blocks() as demo:
gr.Markdown(description)
text_input = gr.Textbox(label="Enter your message here:")
dropdown = gr.Dropdown(['Mixtral 8x7B', 'Nous Hermes Mixtral 8x7B DPO', 'StarChat2 15b', 'Mistral 7B v0.3', 'Phi 3 mini'], value="Mistral 7B v0.3", label="Select Model")
submit_btn = gr.Button("Send")
output_text = gr.Textbox(label="Response")
submit_btn.click(fn=models, inputs=[text_input, dropdown], outputs=output_text)
# Queue and launch configuration for Gradio
demo.queue(max_size=300000)
demo.launch()