DHEIVER commited on
Commit
32bb3d3
1 Parent(s): 93c2fdd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -71
app.py CHANGED
@@ -1,89 +1,36 @@
1
  from huggingface_hub import InferenceClient
2
  import gradio as gr
3
 
4
- client = InferenceClient(
5
- "mistralai/Mixtral-8x7B-Instruct-v0.1"
6
- )
7
 
8
- # Função para formatar a prompt de entrada com o histórico de diálogo
9
  def formatar_prompt(mensagem, historico):
10
- prompt = "<s>"
11
- for prompt_usuario, resposta_bot in historico:
12
- prompt += f"[INST] {prompt_usuario} [/INST]"
13
- prompt += f" {resposta_bot}</s> "
14
- prompt += f"[INST] {mensagem} [/INST]"
15
  return prompt
16
 
17
  # Função para gerar resposta do modelo
18
- def gerar(
19
- prompt, historico, prompt_sistema, temperatura=0.9, max_tokens_novos=256, top_p=0.95, penalidade_repeticao=1.0,
20
- ):
21
- temperatura = float(temperatura)
22
- if temperatura < 1e-2:
23
- temperatura = 1e-2
24
- top_p = float(top_p)
25
-
26
  kwargs_geracao = dict(
27
- temperature=temperatura,
28
- max_new_tokens=max_tokens_novos,
29
- top_p=top_p,
30
- repetition_penalty=penalidade_repeticao,
31
  do_sample=True,
32
  seed=42,
33
  )
34
-
35
  prompt_formatada = formatar_prompt(f"{prompt_sistema}, {prompt}", historico)
36
  stream = client.text_generation(prompt_formatada, **kwargs_geracao, stream=True, details=True, return_full_text=False)
37
- output = ""
38
-
39
  for resposta in stream:
40
- output += resposta.token.text
41
- yield output
42
- return output
43
 
44
  # Inputs adicionais para o modelo
45
- inputs_adicionais=[
46
- gr.Textbox(
47
- label="Prompt do Sistema",
48
- max_lines=1,
49
- interactive=True,
50
- ),
51
- gr.Slider(
52
- label="Temperatura",
53
- value=0.9,
54
- minimum=0.0,
55
- maximum=1.0,
56
- step=0.05,
57
- interactive=True,
58
- info="Valores mais altos produzem saídas mais diversas",
59
- ),
60
- gr.Slider(
61
- label="Máximo de Novos Tokens",
62
- value=256,
63
- minimum=0,
64
- maximum=1048,
65
- step=64,
66
- interactive=True,
67
- info="O número máximo de novos tokens",
68
- ),
69
- gr.Slider(
70
- label="Top-p (amostragem de núcleo)",
71
- value=0.90,
72
- minimum=0.0,
73
- maximum=1,
74
- step=0.05,
75
- interactive=True,
76
- info="Valores mais altos amostram mais tokens de baixa probabilidade",
77
- ),
78
- gr.Slider(
79
- label="Penalidade de Repetição",
80
- value=1.2,
81
- minimum=1.0,
82
- maximum=2.0,
83
- step=0.05,
84
- interactive=True,
85
- info="Penalize tokens repetidos",
86
- )
87
  ]
88
 
89
  # Exemplos de prompts
@@ -95,7 +42,6 @@ exemplos=[
95
  ["Analise os resultados de um cateterismo cardíaco em um paciente de 65 anos com angina instável. A angiografia revela lesões significativas em duas artérias coronárias principais, com uma fração de fluxo fracionada (FFR) de 0,68. Recomendar opções de revascularização e manejo da doença coronariana.", None, None, None, None, None]
96
  ]
97
 
98
-
99
  # Interface do Chat
100
  gr.ChatInterface(
101
  fn=gerar,
@@ -104,4 +50,4 @@ gr.ChatInterface(
104
  title="Medchat | Automação Inteligente de Saúde",
105
  examples=exemplos,
106
  concurrency_limit=20,
107
- ).launch(show_api=False)
 
1
  from huggingface_hub import InferenceClient
2
  import gradio as gr
3
 
4
+ # Inicialização do cliente de inferência
5
+ client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
 
6
 
7
+ # Função para formatar o prompt de entrada com o histórico de diálogo
8
  def formatar_prompt(mensagem, historico):
9
+ prompt = "<s>" + "".join(f"[INST] {prompt_usuario} [/INST] {resposta_bot}" for prompt_usuario, resposta_bot in historico) + f"[INST] {mensagem} [/INST]"
 
 
 
 
10
  return prompt
11
 
12
  # Função para gerar resposta do modelo
13
+ def gerar(prompt, historico, prompt_sistema, temperatura=0.9, max_tokens_novos=256, top_p=0.95, penalidade_repeticao=1.0):
 
 
 
 
 
 
 
14
  kwargs_geracao = dict(
15
+ temperature=float(temperatura),
16
+ max_new_tokens=int(max_tokens_novos),
17
+ top_p=float(top_p),
18
+ repetition_penalty=float(penalidade_repeticao),
19
  do_sample=True,
20
  seed=42,
21
  )
 
22
  prompt_formatada = formatar_prompt(f"{prompt_sistema}, {prompt}", historico)
23
  stream = client.text_generation(prompt_formatada, **kwargs_geracao, stream=True, details=True, return_full_text=False)
 
 
24
  for resposta in stream:
25
+ yield resposta.token.text
 
 
26
 
27
  # Inputs adicionais para o modelo
28
+ inputs_adicionais = [
29
+ gr.Textbox(label="Prompt do Sistema", max_lines=1, interactive=True),
30
+ gr.Slider(label="Temperatura", value=0.9, minimum=0.0, maximum=1.0, step=0.05, interactive=True, info="Valores mais altos produzem saídas mais diversas"),
31
+ gr.Slider(label="Máximo de Novos Tokens", value=256, minimum=0, maximum=1048, step=64, interactive=True, info="O número máximo de novos tokens"),
32
+ gr.Slider(label="Top-p (amostragem de núcleo)", value=0.90, minimum=0.0, maximum=1, step=0.05, interactive=True, info="Valores mais altos amostram mais tokens de baixa probabilidade"),
33
+ gr.Slider(label="Penalidade de Repetição", value=1.2, minimum=1.0, maximum=2.0, step=0.05, interactive=True, info="Penalize tokens repetidos"),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  ]
35
 
36
  # Exemplos de prompts
 
42
  ["Analise os resultados de um cateterismo cardíaco em um paciente de 65 anos com angina instável. A angiografia revela lesões significativas em duas artérias coronárias principais, com uma fração de fluxo fracionada (FFR) de 0,68. Recomendar opções de revascularização e manejo da doença coronariana.", None, None, None, None, None]
43
  ]
44
 
 
45
  # Interface do Chat
46
  gr.ChatInterface(
47
  fn=gerar,
 
50
  title="Medchat | Automação Inteligente de Saúde",
51
  examples=exemplos,
52
  concurrency_limit=20,
53
+ ).launch(show_api=False)