File size: 1,976 Bytes
23927e6
ec53365
94472f0
d5e68ae
 
94472f0
d5e68ae
ec53365
0251b38
 
 
d5e68ae
 
 
 
 
 
 
 
0251b38
ec53365
 
 
d5e68ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ec53365
d5e68ae
 
94472f0
ec53365
 
94472f0
d5e68ae
ec53365
 
d5e68ae
 
 
ec53365
94472f0
23927e6
d5e68ae
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
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()