Spaces:
Runtime error
Runtime error
import gradio as gr | |
from huggingface_hub import InferenceClient | |
import os | |
from typing import List, Tuple | |
import time | |
# Configuração do cliente | |
HF_TOKEN = os.getenv("HF_TOKEN") # Token deve ser configurado como variável de ambiente | |
MODEL_ID = "meta-llama/Llama-3.2-1B" | |
try: | |
client = InferenceClient( | |
MODEL_ID, | |
token=HF_TOKEN | |
) | |
except Exception as e: | |
print(f"Erro ao inicializar o cliente: {str(e)}") | |
def respond( | |
mensagem: str, | |
historico: List[Tuple[str, str]], | |
mensagem_sistema: str, | |
max_tokens: int, | |
temperatura: float, | |
top_p: float, | |
) -> str: | |
""" | |
Processa a mensagem do usuário e gera uma resposta. | |
""" | |
try: | |
# Formata as mensagens no formato correto | |
messages = [{"role": "system", "content": mensagem_sistema}] | |
for usuario, assistente in historico: | |
if usuario: | |
messages.append({"role": "user", "content": usuario}) | |
if assistente: | |
messages.append({"role": "assistant", "content": assistente}) | |
messages.append({"role": "user", "content": mensagem}) | |
response = "" | |
# Stream da resposta | |
for chunk in client.chat_completion( | |
messages, | |
max_tokens=max_tokens, | |
stream=True, | |
temperature=temperatura, | |
top_p=top_p, | |
): | |
if hasattr(chunk.choices[0].delta, 'content'): | |
token = chunk.choices[0].delta.content | |
if token: | |
response += token | |
yield response | |
except Exception as e: | |
yield f"Desculpe, ocorreu um erro: {str(e)}\nPor favor, verifique sua conexão e configurações." | |
# Configuração da interface | |
with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
gr.Markdown(""" | |
# 🤖 Chat com Llama em Português | |
Este é um chatbot baseado no modelo Llama. Para usar: | |
1. Configure seu token HF como variável de ambiente | |
2. Ajuste os parâmetros conforme necessário | |
3. Digite sua mensagem e pressione Enter | |
""") | |
chatbot = gr.ChatInterface( | |
respond, | |
additional_inputs=[ | |
gr.Textbox( | |
value="Você é um assistente amigável e prestativo que responde em português.", | |
label="Mensagem do Sistema" | |
), | |
gr.Slider( | |
minimum=1, | |
maximum=2048, | |
value=512, | |
step=1, | |
label="Máximo de 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 Nucleus)" | |
), | |
], | |
title="Chat com Llama", | |
description="Um chatbot interativo usando o modelo Llama.", | |
examples=[ | |
["Olá! Como você está?"], | |
["Pode me explicar o que é inteligência artificial?"], | |
["Qual é a capital do Brasil?"] | |
] | |
) | |
gr.Markdown(""" | |
### ℹ️ Informações | |
- Modelo: Llama | |
- Idioma: Português | |
- Stream: Ativado | |
Para melhor desempenho, ajuste os parâmetros de acordo com suas necessidades. | |
""") | |
if __name__ == "__main__": | |
demo.launch(share=False) |