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("

ChatGEO IA

Tire suas dúvidas, peça sugestões sobre os assuntos da Geografia. Usamos o modelo de IA Mistral-7B-Instruct-v0.3.

") iface.render() demo.queue().launch(show_api=False)