Andersonx commited on
Commit
02165c8
·
verified ·
1 Parent(s): 23a635a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -41
app.py CHANGED
@@ -1,63 +1,49 @@
1
  import gradio as gr
2
  from llama_cpp import Llama
3
 
4
- # Carregar o modelo GGML
5
- llm = Llama(model_path="Xavier 3b Teste01.gguf", n_ctx=512)
6
 
7
  # Definir a mensagem inicial
8
  mensagem_inicial = (
9
  "Olá! Eu sou um atendente virtual da Receita Federal e do Projeto Remessa Conforme. "
10
- "Estou aqui para responder perguntas sobre o Remessa Conforme, suas regras e benefícios. "
11
  "Este projeto foi desenvolvido com a colaboração de Anderson Xavier. Como posso te ajudar hoje?"
12
  )
13
 
14
- # Lista de palavras-chave relevantes para o escopo
15
- palavras_chave = ["remessa conforme", "receita federal", "tributação", "importação", "benefícios fiscais"]
16
-
17
- def verificar_escopo(mensagem):
18
- """Verifica se a mensagem do usuário está dentro do escopo definido."""
19
- mensagem_lower = mensagem.lower()
20
- return any(palavra in mensagem_lower for palavra in palavras_chave)
21
-
22
- def respond(message, history):
23
- # Verificar se a mensagem está dentro do escopo permitido
24
- if not verificar_escopo(message):
25
- return history + [(message, "Desculpe, só posso responder perguntas sobre o Projeto Remessa Conforme e temas relacionados.")]
26
 
27
  # Construir o prompt com o histórico atualizado
28
- prompt = "\n".join([f"User: {user}\nAssistant: {bot}" for user, bot in history if user])
29
- prompt += f"\nUser: {message}\nAssistant:"
30
-
31
- # Executar inferência com o modelo
 
 
 
 
 
32
  response = ""
33
- result = llm(prompt, max_tokens=100, temperature=0.7, top_p=0.95, stream=True)
34
 
35
- # Adicionar a resposta ao histórico e retornar de forma incremental
36
  for token in result:
37
  response += token["choices"][0]["text"]
38
- yield history + [(message, response)]
39
-
40
- # Configuração da interface Gradio
41
- with gr.Blocks() as demo:
42
- chatbot = gr.Chatbot(value=[(None, mensagem_inicial)]) # Carrega a mensagem inicial no chat
43
- msg = gr.Textbox(show_label=False, placeholder="Digite sua mensagem...")
44
- state = gr.State([]) # Estado para armazenar o histórico
45
 
46
- # Adicionais inputs para controle
47
- additional_inputs = [
48
- gr.Textbox(value=mensagem_inicial, label="Mensagem Inicial (Editável)"),
 
49
  gr.Textbox(value="Você está falando com um assistente virtual da Receita Federal.", label="System message"),
50
  gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
51
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
52
- gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p")
53
- ]
54
-
55
- # Lógica para enviar a mensagem e processar a resposta
56
- def send_message(user_message, history):
57
- return respond(user_message, history)
58
-
59
- # Configuração do layout do chatbot
60
- msg.submit(send_message, [msg, state], [chatbot, state])
61
 
62
  if __name__ == "__main__":
63
- demo.launch()
 
1
  import gradio as gr
2
  from llama_cpp import Llama
3
 
4
+ # Carregar o modelo GGML localmente
5
+ llm = Llama(model_path="Llama-3.2-3B-Instruct-Q8_0.gguf", n_ctx=512)
6
 
7
  # Definir a mensagem inicial
8
  mensagem_inicial = (
9
  "Olá! Eu sou um atendente virtual da Receita Federal e do Projeto Remessa Conforme. "
10
+ "Você pode perguntar tudo sobre como funciona o Remessa Conforme, suas regras e benefícios. "
11
  "Este projeto foi desenvolvido com a colaboração de Anderson Xavier. Como posso te ajudar hoje?"
12
  )
13
 
14
+ def respond(message, history, system_message, max_tokens, temperature, top_p):
15
+ # Adicionar a mensagem inicial ao histórico se for a primeira interação
16
+ if not history:
17
+ history = [(mensagem_inicial, "")]
 
 
 
 
 
 
 
 
18
 
19
  # Construir o prompt com o histórico atualizado
20
+ prompt = system_message + "\n"
21
+ for user_msg, bot_msg in history:
22
+ if user_msg:
23
+ prompt += f"User: {user_msg}\n"
24
+ if bot_msg:
25
+ prompt += f"Assistant: {bot_msg}\n"
26
+ prompt += f"User: {message}\nAssistant:"
27
+
28
+ # Executar a inferência com o modelo local
29
  response = ""
30
+ result = llm(prompt, max_tokens=max_tokens, temperature=temperature, top_p=top_p, stream=True)
31
 
32
+ # Retornar a resposta em streaming
33
  for token in result:
34
  response += token["choices"][0]["text"]
35
+ yield response
 
 
 
 
 
 
36
 
37
+ # Configurar a interface Gradio com a mensagem inicial
38
+ demo = gr.ChatInterface(
39
+ respond,
40
+ additional_inputs=[
41
  gr.Textbox(value="Você está falando com um assistente virtual da Receita Federal.", label="System message"),
42
  gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
43
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
44
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
45
+ ],
46
+ )
 
 
 
 
 
 
47
 
48
  if __name__ == "__main__":
49
+ demo.launch()