import os from dotenv import load_dotenv import gradio as gr from huggingface_hub import InferenceClient # Carrega o token da API do arquivo .env (crie o arquivo com HF_API_TOKEN=seu_token) load_dotenv() api_key = os.getenv("HF_API_TOKEN") # Inicializa o cliente de inferência (usa a API gratuita do HF) client = InferenceClient(token=api_key) # Sem provider específico, usa o padrão do HF para Mistral # Função do chatbot: Lida com histórico e prompt do usuário def chat_with_llm(message, history): try: # Constrói o histórico de mensagens no formato esperado (multi-turn) messages = [] for user_msg, bot_msg in history: messages.append({"role": "user", "content": user_msg}) if bot_msg: messages.append({"role": "assistant", "content": bot_msg}) messages.append({"role": "user", "content": message}) # Chama a API do Mistral response = client.chat.completions.create( model="mistralai/Mistral-7B-Instruct-v0.3", messages=messages, max_tokens=150, # Limite de tokens gerados (ajuste para mais/menos) temperature=0.7, # Controle de criatividade (0.0 a 1.0) ) return response.choices[0].message.content except Exception as e: return f"Erro: {str(e)}. Verifique seu token API ou limites de uso." # Cria a interface do chatbot no Gradio demo = gr.ChatInterface( fn=chat_with_llm, title="Chatbot com Mistral (Gratuito via HF API)", description="Teste o chatbot usando Mistral. Plano gratuito com limites.", ) # Lança o app (no Spaces, isso é automático) if __name__ == "__main__": demo.launch()