|
import gradio as gr |
|
from huggingface_hub import InferenceClient |
|
|
|
|
|
client = InferenceClient(model="mistralai/Mistral-7B-Instruct-v0.3") |
|
|
|
|
|
def responder(mensagem, historico): |
|
mensagens = [] |
|
if historico is None: |
|
historico = [] |
|
|
|
for item in historico: |
|
if isinstance(item, list) and len(item) == 2: |
|
user_msg, bot_msg = item |
|
mensagens.append({"role": "user", "content": user_msg}) |
|
if bot_msg: |
|
mensagens.append({"role": "assistant", "content": bot_msg}) |
|
|
|
mensagens.append({"role": "user", "content": mensagem}) |
|
resposta = "" |
|
|
|
try: |
|
for mensagem in client.chat_completion( |
|
mensagens, |
|
max_tokens=250, |
|
stream=True, |
|
temperature=0.2, |
|
top_p=0.7, |
|
): |
|
if not mensagem or not isinstance(mensagem, dict): |
|
continue |
|
|
|
try: |
|
conteudo = mensagem["choices"][0]["delta"].get("content", "") |
|
if conteudo.strip(): |
|
resposta += conteudo |
|
yield resposta |
|
except (AttributeError, IndexError, KeyError) as e: |
|
print(f"Erro ao processar mensagem: {e}") |
|
continue |
|
|
|
except Exception as e: |
|
print(f"Erro inesperado: {e}") |
|
yield "Ocorreu um erro ao gerar a resposta." |
|
|
|
if not resposta.strip(): |
|
yield "Nenhuma resposta gerada. Tente novamente." |
|
|
|
|
|
demo = gr.ChatInterface( |
|
responder, |
|
title="Benjamin – Assistente Virtual da CEaD - IBC. Tire suas dúvidas com a minha inteligência artificial! Minha base de conhecimento vai até 2021, por isso posso não trazer respostas precisas sobre pessoas, conceitos, lugares ou fatos históricos. Se isso acontecer, entre em contato com o mediador do curso para obter ajuda mais adequada.", |
|
textbox=gr.Textbox(label="Campo de mensagem: Digite uma mensagem e depois tecle Enter para enviar"), |
|
type="messages" |
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |