File size: 2,211 Bytes
bc5f474 8681590 d90bfe0 f57f21a fc5cc2e 80e8596 6aa5ead dd71d6f fc5cc2e 6aa5ead fc5cc2e 6aa5ead fc5cc2e 0786c5d fc5cc2e 6aa5ead fc5cc2e 411b10d 12a2658 411b10d fc5cc2e 6aa5ead fc5cc2e 411b10d fc5cc2e 82ce9e3 fc5cc2e 82ce9e3 690b725 |
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 |
import gradio as gr
from huggingface_hub import InferenceClient
# Cliente de inferência com modelo de IA pública
client = InferenceClient(model="meta-llama/Meta-Llama-3-8B-Instruct") # Modelo gratuito e avançado
# Função para processar a conversa
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."
# Interface do chat com labels em português
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() |