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