File size: 1,978 Bytes
682ea63
 
 
 
 
 
ec3bc0e
682ea63
 
0251b38
 
 
d5e68ae
 
 
 
 
a77c5e5
d5e68ae
 
0251b38
ec3bc0e
a77c5e5
ec53365
 
682ea63
 
a77c5e5
 
682ea63
 
d5e68ae
682ea63
d5e68ae
 
 
682ea63
a77c5e5
d5e68ae
a77c5e5
d5e68ae
682ea63
a77c5e5
d5e68ae
ec53365
682ea63
 
94472f0
ec53365
a77c5e5
94472f0
a77c5e5
ec53365
682ea63
 
a77c5e5
682ea63
ec3bc0e
ec53365
94472f0
23927e6
97b2894
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
import gradio as gr
from huggingface_hub import InferenceClient

# Cliente de inferência com modelo de IA pública
client = InferenceClient(model="meta-llama/Llama-3.3-70B-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=300,
            stream=True,
            temperature=0.4,
            top_p=0.8,
        ):
            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 dúvidas com minha inteligência artificial (minha base de dados vai até 2021)",
    textbox=gr.Textbox(placeholder="Digite uma mensagem e depois tecle Enter"),
    type="messages" 

)

if __name__ == "__main__":
    demo.launch()