|
|
import os |
|
|
import gradio as gr |
|
|
from huggingface_hub import InferenceClient |
|
|
|
|
|
|
|
|
client = InferenceClient(model="meta-llama/Llama-3.3-70B-Instruct") |
|
|
) |
|
|
|
|
|
|
|
|
def responder(mensagem, historico): |
|
|
mensagens = [] |
|
|
if historico is None: |
|
|
historico = [] |
|
|
for u, b in historico: |
|
|
mensagens.append({"role": "user", "content": u}) |
|
|
mensagens.append({"role": "assistant", "content": b}) |
|
|
mensagens.append({"role": "user", "content": mensagem}) |
|
|
|
|
|
resposta = "" |
|
|
|
|
|
try: |
|
|
for parte in client.chat_completion(messages=mensagens, stream=True): |
|
|
|
|
|
print("[DEBUG] Parte recebida:", parte) |
|
|
token = parte.get("choices", [{}])[0].get("delta", {}).get("content", "") |
|
|
if token: |
|
|
resposta += token |
|
|
yield resposta |
|
|
except Exception as e: |
|
|
print(f"[ERRO] {e}") |
|
|
yield "Erro na geração da resposta." |
|
|
|
|
|
if not resposta.strip(): |
|
|
yield "Nenhuma resposta gerada. Tente novamente." |
|
|
|
|
|
|
|
|
demo = gr.ChatInterface( |
|
|
responder, |
|
|
title="Benjamin – Assistente Virtual da CEaD - IBC", |
|
|
description="Tire dúvidas com minha inteligência artificial (minha base de dados vai até 2021)", |
|
|
textbox=gr.Textbox(placeholder="Digite uma mensagem e tecle Enter"), |
|
|
type="messages" |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |