Spaces:
Sleeping
Sleeping
File size: 4,805 Bytes
738953f af105a4 738953f 85dc520 af105a4 85dc520 8f6a207 0d42bdb 8f6a207 0d42bdb af105a4 f83c8d7 af105a4 eec9db2 05721f2 af105a4 6b0c2cb e6f2e4b 728e473 05721f2 728e473 05721f2 728e473 05721f2 728e473 05721f2 728e473 05721f2 728e473 05721f2 728e473 6b0c2cb af105a4 f83c8d7 552b5b5 f83c8d7 1caab03 f83c8d7 85dc520 a06c8f9 0e6616c a93d05b 7744e2a f83c8d7 de79f12 |
1 2 3 4 5 6 7 8 9 10 11 12 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
from huggingface_hub import InferenceClient
import gradio as gr
import requests
client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
#manual_url = "https://script.google.com/macros/s/AKfycbzlFFMNw0Zc7IKt4Sn7KB5qggPMlh_2mdMn5uOjw93MF2L-58SPb4ZPUQKHJppLSLBi/exec"
manual_content = None
def get_manual_content():
# global manual_content
# response = requests.get(manual_url)
# if response.status_code == 200:
urldoc = "https://script.google.com/macros/s/AKfycbwQJ2LRp4C0583Bd09agFjJ2nrZMy8MZVxN1qJYlY1i_TkB18ecP3KnqPAOoE-CACJm/exec"
resp = requests.get(urldoc)
instruction = resp.text
manual_content = f'''
input: {{
role: "system",
content: "Tu sei BonsiAI l'assistente virtuale per studenti direttamente incaricato dal Sig.Bonsignori. Rispondi alle domande degli studenti in modo pertinente mantenendoti coerente alle INSTRUCTION ricevute. Sii cordiale, gentile e simpatico, utilizzando gerghi giovanili tipici della Generazione Z",
}},
messages: [
{{
role: "instructions",
content: [
{instruction}
],
}},
''';
print(manual_content)
# "Per le info sui compiti di tecnologia alimentare, rivolgersi alla Professoressa Lampugnani.",
# "Per le questioni amministrative, rivolgersi a Rossano della segreteria.",
# "Per il compito di matematica devi seguire il PDF su Classroom",
# "Se vuoi lamentarti per i compiti non farlo dal preside ma chiedi un appuntamento al tuo tutor",
# "Per il colloquio con i genitori manda una mail a [email protected]"
def format_prompt(message, history):
global manual_content
#if manual_content is None or not history or not any(user_prompt for user_prompt, _ in history):
#get_manual_content()
prompt = "<s>"
for user_prompt, bot_response in history:
prompt += f"[INST] {user_prompt} [/INST]"
prompt += f" {bot_response}"
prompt += '</s>'
urldoc = "https://script.google.com/macros/s/AKfycbwQJ2LRp4C0583Bd09agFjJ2nrZMy8MZVxN1qJYlY1i_TkB18ecP3KnqPAOoE-CACJm/exec"
resp = requests.get(urldoc)
instruction = resp.text
prompt += f'''[INST]
input: {{
role: "system",
content: "Tu sei BonsiAI l'assistente virtuale per studenti direttamente incaricato dal Sig.Bonsignori. Rispondi alle domande degli studenti in modo pertinente mantenendoti coerente alle INSTRUCTION ricevute. Sii cordiale, gentile e simpatico, utilizzando gerghi giovanili tipici della Generazione Z",
}},
messages: [
{{
role: "instructions",
content: [
"{instruction}",
"Per le info sui compiti di tecnologia alimentare, rivolgersi alla Professoressa Lampugnani.",
"Per le questioni amministrative, rivolgersi a Rossano della segreteria.",
"Per il compito di matematica devi seguire il PDF su Classroom",
"Se vuoi lamentarti per i compiti non farlo dal preside ma chiedi un appuntamento al tuo tutor",
"Per il colloquio con i genitori manda una mail a [email protected]"
],
}},
{{
"role": "user",
"content": "{message}"
}}]
[/INST]'''
print(prompt)
return prompt
def generate(
prompt, history, temperature=0.2, max_new_tokens=300, top_p=0.95, repetition_penalty=1.0,
):
temperature = float(temperature)
if temperature < 1e-2:
temperature = 1e-2
top_p = float(top_p)
generate_kwargs = dict(
temperature=temperature,
max_new_tokens=max_new_tokens,
top_p=top_p,
repetition_penalty=repetition_penalty,
do_sample=True,
seed=42,
)
formatted_prompt = format_prompt(prompt, history)
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
yield output
return output
mychatbot = gr.Chatbot(
avatar_images=["./user.png", "./bonsi.jpeg"], bubble_full_width=False, show_label=False, show_copy_button=True, likeable=True,value=[[None, "Ciao sono Bonsi AI il tuo assistente personale del centro di formazione Bonsignori di Remedello"]], )
demo = gr.ChatInterface(fn=generate,
chatbot=mychatbot,
title="Bonsi AI 🪴",
textbox=gr.Textbox(placeholder="Cosa posso fare per te, studente..."),
theme="gradio/base",
submit_btn="Invia",
retry_btn=None,
undo_btn=None,
clear_btn="Cancella"
)
demo.queue().launch(show_api=True, share=True) |