File size: 1,966 Bytes
e31868e
 
 
885cb8b
e31868e
 
 
 
 
 
 
 
885cb8b
 
 
e31868e
885cb8b
 
e31868e
885cb8b
e31868e
 
 
 
 
 
885cb8b
e31868e
885cb8b
 
 
 
 
 
 
 
 
 
e31868e
 
 
21614f9
e31868e
885cb8b
e31868e
885cb8b
e31868e
 
 
 
 
 
 
885cb8b
 
 
 
 
 
 
 
 
e31868e
 
 
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
63
64
65
66
import gradio as gr
from huggingface_hub import InferenceClient
import os
import time

HF_TOKEN = os.getenv("HF_TOKEN")

client = InferenceClient(
    provider="sambanova",
    api_key=HF_TOKEN,
)

history_log = []
show_history_flag = False 

def chatbot_response(user_input):
    messages = [{"role": "user", "content": entry["Pergunta"]} for entry in history_log[-2:]]
    messages.append({"role": "user", "content": user_input})
    
    start_time = time.time()
    try:
        completion = client.chat.completions.create(
            model="meta-llama/Llama-3.3-70B-Instruct", 
            messages=messages, 
            max_tokens=500,
        )
        response = completion.choices[0].message['content']
    except Exception as e:
        response = f"Erro ao gerar resposta: {str(e)}"
    end_time = time.time()
    
    history_log.append({
        "Pergunta": user_input,
        "Resposta": response,
        "Tempo de Resposta (s)": round(end_time - start_time, 2)
    })
    
    return response

with gr.Blocks(theme=gr.themes.Soft()) as demo:
    gr.Markdown("# 🤖 Llama-70B Chatbot - SambaNova")
    gr.Markdown("Modelo: meta-llama/Llama-3.3-70B-Instruct")
    
    chatbot = gr.Chatbot(height=500) 
    msg = gr.Textbox(placeholder="Digite sua mensagem aqui...")
    btn = gr.Button("Enviar", variant="primary") 
    
    def respond(message, chat_history):
        response = chatbot_response(message)
        chat_history.append((message, response))
        return "", chat_history
    
    btn.click(respond, [msg, chatbot], [msg, chatbot])
    
    def toggle_history():
        global show_history_flag
        show_history_flag = not show_history_flag
        return history_log if show_history_flag else {}
    
    history_btn = gr.Button("Ver/Fechar Histórico", variant="secondary") 
    history_output = gr.JSON()
    history_btn.click(toggle_history, inputs=[], outputs=history_output)

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