File size: 3,579 Bytes
0841a1b
 
9a3f681
0841a1b
5e292fc
 
9a3f681
5e292fc
 
 
6f28eab
9a3f681
5e292fc
9a3f681
0841a1b
5e292fc
9a3f681
5e292fc
 
9a3f681
 
 
 
5e292fc
 
354eea2
5e292fc
 
354eea2
5e292fc
6f28eab
 
5e292fc
6f28eab
5e292fc
6f28eab
 
5e292fc
6f28eab
 
 
0841a1b
5e292fc
0841a1b
 
 
 
 
 
 
 
9a3f681
5e292fc
9a3f681
0841a1b
 
5e292fc
0841a1b
 
 
 
 
 
5e292fc
0841a1b
 
9a3f681
5e292fc
9a3f681
 
 
 
 
 
5e292fc
6f28eab
9a3f681
5e292fc
 
0841a1b
5e292fc
 
 
0841a1b
5e292fc
6f28eab
9a3f681
6f28eab
 
 
5e292fc
 
 
6f28eab
 
 
 
 
5e292fc
6f28eab
 
 
9a3f681
 
5e292fc
6f28eab
 
 
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import gradio as gr
from huggingface_hub import InferenceClient
from datasets import load_dataset

# Função para carregar o dataset `aicoder69/aicoder69` com tratamento de erros
def load_aicoder_dataset():
    try:
        print("Carregando o dataset...")
        dataset = load_dataset("aicoder69/aicoder69")
        print("Dataset carregado com sucesso!")
        return dataset
    except Exception as e:
        print(f"Erro ao carregar o dataset: {e}")
        return None

aicoder_dataset = load_aicoder_dataset()

# Função para recuperar um exemplo do dataset com segurança
def get_example_from_aicoder(dataset, index):
    if dataset and "train" in dataset:
        try:
            return dataset["train"][index]
        except IndexError:
            print("Índice fora do intervalo no dataset.")
            return {"text": "Nenhum exemplo disponível."}
    else:
        print("O dataset não foi carregado corretamente.")
        return {"text": "Dataset não disponível."}

# Inicializar o cliente de inferência com tratamento de erros
def initialize_client():
    try:
        print("Inicializando o cliente de inferência...")
        client = InferenceClient("unsloth/Llama-3.2-1B-Instruct")
        print("Cliente de inferência inicializado com sucesso!")
        return client
    except Exception as e:
        print(f"Erro ao inicializar o cliente de inferência: {e}")
        return None

client = initialize_client()

# Função de resposta do chatbot
def respond(
    message,
    history: list[tuple[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    if not client:
        return "Erro: O cliente de inferência não foi inicializado."

    messages = [{"role": "system", "content": system_message}]

    # Adicionar interações históricas
    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})

    # Adicionar mensagem do usuário
    messages.append({"role": "user", "content": message})

    try:
        print("Enviando solicitação ao modelo...")
        response = client.chat_completion(
            messages,
            max_tokens=max_tokens,
            temperature=temperature,
            top_p=top_p,
        ).choices[0].message.content
        print("Resposta recebida com sucesso!")
        return response
    except Exception as e:
        print(f"Erro durante a inferência: {e}")
        return "Ocorreu um erro ao gerar uma resposta."

# Exemplo: Recuperar uma entrada do dataset
example_data = get_example_from_aicoder(aicoder_dataset, 0)
print("Exemplo do dataset:", example_data)

# Interface Gradio
def launch_demo():
    try:
        demo = gr.ChatInterface(
            respond,
            additional_inputs=[
                gr.Textbox(value="Você é um chatbot amigável. Seu nome é Juninho.", label="Mensagem do sistema"),
                gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Máximo de novos tokens"),
                gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperatura"),
                gr.Slider(
                    minimum=0.1,
                    maximum=1.0,
                    value=0.95,
                    step=0.05,
                    label="Top-p (amostragem núcleo)",
                ),
            ],
        )
        demo.launch()
    except Exception as e:
        print(f"Erro ao iniciar o aplicativo Gradio: {e}")

if __name__ == "__main__":
    launch_demo()