Spaces:
Running
Running
File size: 3,218 Bytes
ecc4605 879137a ecc4605 4c86ab7 ecc4605 bf9bed4 949ded2 bf9bed4 ecc4605 a66ad26 ecc4605 bf9bed4 ecc4605 a66ad26 ecc4605 3dec43b 35eb646 3dec43b 35eb646 3dec43b 35eb646 67ad064 ecc4605 3dec43b a66ad26 ecc4605 3dec43b ecc4605 a66ad26 3dec43b a66ad26 ecc4605 69a244e ecc4605 a66ad26 |
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 |
from huggingface_hub import InferenceClient
import gradio as gr
import random
client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.3")
def format_prompt(message):
prompt = (
"O ChatGEO é um assistente virtual especializado em geografia. "
"Responda de forma clara e objetiva às perguntas feitas no idioma Português do Brasil. "
"Apenas responda ao que foi perguntado pelo usuário, sem adicionar ou criar novas perguntas.\n\n"
f"Usuário: {message}\nChatGEO:"
)
return prompt
def generate(message, history, temperature=0.7, max_new_tokens=1024, top_p=0.90, repetition_penalty=0.9):
temperature = max(float(temperature), 1e-2)
top_p = float(top_p)
formatted_prompt = format_prompt(message)
generate_kwargs = dict(
temperature=temperature,
max_new_tokens=max_new_tokens,
top_p=top_p,
repetition_penalty=repetition_penalty,
do_sample=True,
seed=random.randint(1, 1111111111111111),
)
# Gerar o texto
output = client.text_generation(formatted_prompt, **generate_kwargs)
# Extrair a resposta apenas até o primeiro ponto final ou outro delimitador
response = output.split("\n")[0].strip()
# Limitar a resposta para que o bot não continue respondendo indefinidamente
if "Usuário:" in response or "ChatGEO:" in response:
response = response.split("Usuário:")[0].strip()
history.append((message, response))
return response
mychatbot = gr.Chatbot(
avatar_images=["./user.png", "./botz.png"],
bubble_full_width=False,
show_label=False,
show_copy_button=True,
likeable=True,
)
additional_inputs = [
gr.Slider(
label="Temperature",
value=0.7,
minimum=0.0,
maximum=1.0,
step=0.01,
interactive=True,
info="Higher values generate more diverse outputs",
visible=False # Oculta o slider
),
gr.Slider(
label="Max new tokens",
value=1024,
minimum=0,
maximum=8000,
step=64,
interactive=True,
info="The maximum number of new tokens",
visible=False # Oculta o slider
),
gr.Slider(
label="Top-p",
value=0.90,
minimum=0.0,
maximum=1.0,
step=0.01,
interactive=True,
info="Higher values sample more low-probability tokens",
visible=False # Oculta o slider
),
gr.Slider(
label="Repetition penalty",
value=1.0,
minimum=0.1,
maximum=2.0,
step=0.1,
interactive=True,
info="Penalize repeated tokens",
visible=False # Oculta o slider
)
]
iface = gr.ChatInterface(
fn=generate,
chatbot=mychatbot,
additional_inputs=additional_inputs,
submit_btn='Enviar',
retry_btn=None,
undo_btn=None,
clear_btn=None
)
with gr.Blocks() as demo:
gr.HTML("<center><h2 style='font-size: 22px; text-align: center; color: #007BFF;'>ChatGEO IA</h2><p><b>Tire suas dúvidas, peça sugestões sobre os assuntos da Geografia. Usamos o modelo de IA Mistral-7B-Instruct-v0.3.</b></p></center>")
iface.render()
demo.queue().launch(show_api=False)
|