File size: 1,978 Bytes
682ea63 ec3bc0e 682ea63 0251b38 d5e68ae a77c5e5 d5e68ae 0251b38 ec3bc0e a77c5e5 ec53365 682ea63 a77c5e5 682ea63 d5e68ae 682ea63 d5e68ae 682ea63 a77c5e5 d5e68ae a77c5e5 d5e68ae 682ea63 a77c5e5 d5e68ae ec53365 682ea63 94472f0 ec53365 a77c5e5 94472f0 a77c5e5 ec53365 682ea63 a77c5e5 682ea63 ec3bc0e ec53365 94472f0 23927e6 97b2894 |
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 |
import gradio as gr
from huggingface_hub import InferenceClient
# Cliente de inferência com modelo de IA pública
client = InferenceClient(model="meta-llama/Llama-3.3-70B-Instruct") # Modelo gratuito e avançado
# Função para processar a conversa
def responder(mensagem, historico):
mensagens = []
if historico is None:
historico = []
for item in historico:
if isinstance(item, list) and len(item) == 2:
user_msg, bot_msg = item
mensagens.append({"role": "user", "content": user_msg})
if bot_msg:
mensagens.append({"role": "assistant", "content": bot_msg})
mensagens.append({"role": "user", "content": mensagem})
resposta = ""
try:
for mensagem in client.chat_completion(
mensagens,
max_tokens=300,
stream=True,
temperature=0.4,
top_p=0.8,
):
if not mensagem or not isinstance(mensagem, dict):
continue
try:
conteudo = mensagem["choices"][0]["delta"].get("content", "")
if conteudo.strip():
resposta += conteudo
yield resposta
except (AttributeError, IndexError, KeyError) as e:
print(f"Erro ao processar mensagem: {e}")
continue
except Exception as e:
print(f"Erro inesperado: {e}")
yield "Ocorreu um erro ao gerar a resposta."
if not resposta.strip():
yield "Nenhuma resposta gerada. Tente novamente."
# Interface do chat com labels em português
demo = gr.ChatInterface(
responder,
title="Benjamin – Assistente Virtual da CEaD - IBC. Tire dúvidas com minha inteligência artificial (minha base de dados vai até 2021)",
textbox=gr.Textbox(placeholder="Digite uma mensagem e depois tecle Enter"),
type="messages"
)
if __name__ == "__main__":
demo.launch() |