|
import gradio as gr |
|
from huggingface_hub import InferenceClient |
|
|
|
|
|
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] ") |
|
|
|
|
|
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 |
|
|
|
|
|
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) |
|
|
|
|
|
demo.queue(max_size=300000) |
|
demo.launch() |
|
|