File size: 2,169 Bytes
a734881
e8dc0d1
 
fee15be
5f92534
 
 
 
 
e8dc0d1
fee15be
 
f7b7ba3
fee15be
 
5f92534
279575e
 
 
 
 
fee15be
f7b7ba3
f588f50
fee15be
e8dc0d1
fee15be
f7b7ba3
5f92534
f7b7ba3
5827a18
f7b7ba3
 
 
 
 
5f92534
f7b7ba3
 
 
 
 
5f92534
e8dc0d1
5f92534
fee15be
 
5f92534
e8dc0d1
a734881
 
fee15be
 
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
import gradio as gr
from huggingface_hub import InferenceClient
import os

# 1. Conecta com a API de inferência de forma segura
# Tenta pegar qualquer variação de token injetada pelo próprio Hugging Face
cat_token = os.environ.get("HF_TOKEN") or os.environ.get("HF_ACCESS_TOKEN") or True

# Inicializa o cliente com o provedor correto e o token validado
client = InferenceClient(provider="hf-inference", token=cat_token)

def responder_chat(mensagem, historico):
    # Inicializa a lista com as diretrizes do sistema
    mensagens = [{"role": "system", "content": "Você é um assistente de IA prestativo e amigável em português."}]
    
    # Processa o histórico no formato compatível com o Gradio
    for user_msg, bot_msg in historico:
        if user_msg: 
            mensagens.append({"role": "user", "content": user_msg})
        if bot_msg: 
            mensagens.append({"role": "assistant", "content": bot_msg})
        
    # Adiciona a mensagem atual digitada pelo usuário
    mensagens.append({"role": "user", "content": mensagem})

    resposta_completa = ""
    
    try:
        # Faz a chamada para o modelo Qwen de 7B (mais estável na API gratuita)
        for resposta_stream in client.chat_completion(
            model="Qwen/Qwen2.5-7B-Instruct",
            messages=mensagens,
            max_tokens=512,
            stream=True,     
            temperature=0.7   
        ):
            # Acessa com segurança o conteúdo do token no stream de dados
            token = resposta_stream.choices[0].delta.content
            if token:
                resposta_completa += token
                yield resposta_completa # Envia o texto aos poucos para a tela
    except Exception as e:
        yield f"Erro na API do Hugging Face: {str(e)}\n\n💡 Dica: Verifique se o seu Space está configurado com permissões públicas de leitura nas configurações."

# 2. Configura a interface de chat do Gradio
demo = gr.ChatInterface(
    fn=responder_chat, 
    title="Meu Chatbot Avançado com Qwen 2.5",
    description="Interface de Inteligência Artificial conversacional rodando na nuvem."
)

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