import gradio as gr from llama_cpp import Llama # Carregar o modelo GGML localmente llm = Llama(model_path="Xavier 3b Teste01.gguf", n_ctx=512) # Definir a mensagem inicial mensagem_inicial = ( "Olá! Eu sou um atendente virtual da Receita Federal e do Projeto Remessa Conforme. " "Você pode perguntar tudo sobre como funciona o Remessa Conforme, suas regras e benefícios. " "Este projeto foi desenvolvido com a colaboração de Anderson Xavier. Como posso te ajudar hoje?" ) def respond(message, history, system_message, max_tokens, temperature, top_p): # Adicionar a mensagem inicial ao histórico se for a primeira interação if not history: history = [(mensagem_inicial, "")] # Construir o prompt com o histórico atualizado prompt = system_message + "\n" for user_msg, bot_msg in history: if user_msg: prompt += f"User: {user_msg}\n" if bot_msg: prompt += f"Assistant: {bot_msg}\n" prompt += f"User: {message}\nAssistant:" # Executar a inferência com o modelo local response = "" result = llm(prompt, max_tokens=max_tokens, temperature=temperature, top_p=top_p, stream=True) # Retornar a resposta em streaming for token in result: response += token["choices"][0]["text"] yield response # Configurar a interface Gradio com a mensagem inicial demo = gr.ChatInterface( respond, additional_inputs=[ gr.Textbox(value="Você está falando com um assistente virtual da Receita Federal.", label="System message"), gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"), gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"), ], ) if __name__ == "__main__": demo.launch()