Spaces:
Runtime error
Runtime error
File size: 1,901 Bytes
6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 c2afbff 6fee99b 8197d97 6fee99b 8197d97 c2afbff 6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 c2afbff 8197d97 6fee99b 8197d97 6fee99b 8197d97 6fee99b 8197d97 | 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 | import os
import gradio as gr
from huggingface_hub import InferenceClient
# Coloque seu token Hugging Face aqui (ou use variável de ambiente)
HF_TOKEN = os.environ.get("HF_TOKEN") or "SEU_TOKEN_AQUI"
def responder(
mensagem,
historico: list[dict[str, str]],
mensagem_do_sistema,
max_tokens,
temperatura,
top_p,
hf_token=None, # Ignorado, usamos HF_TOKEN direto
):
"""
Função que envia mensagens para o modelo Meta-LLaMA 3.1 8B Instruct usando token direto.
"""
cliente = InferenceClient(token=HF_TOKEN, model="meta-llama/Meta-Llama-3.1-8B-Instruct")
# Prepara mensagens no formato chat
mensagens = [{"role": "system", "content": mensagem_do_sistema}]
mensagens.extend(historico)
mensagens.append({"role": "user", "content": mensagem})
resposta = ""
# Streaming da resposta token por token
for trecho_da_mensagem in cliente.chat_completion(
mensagens,
max_tokens=max_tokens,
stream=True,
temperature=temperatura,
top_p=top_p,
):
escolhas = trecho_da_mensagem.choices
token = ""
if len(escolhas) and escolhas[0].delta.content:
token = escolhas[0].delta.content
resposta += token
yield resposta
# Cria interface de chat Gradio
chatbot = gr.ChatInterface(
responder,
type="messages",
additional_inputs=[
gr.Textbox(value="Você é um chatbot amigável.", 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 de núcleo)"),
],
)
# Layout simples, sem login
with gr.Blocks() as demo:
chatbot.render()
if __name__ == "__main__":
demo.launch()
|