DHEIVER commited on
Commit
1048b9c
1 Parent(s): d83ea8f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -33
app.py CHANGED
@@ -1,19 +1,17 @@
1
- import gradio as gr
2
  from huggingface_hub import InferenceClient
 
3
 
4
- # Função para gerar resposta do modelo
5
- def gerar(prompt, historico, prompt_sistema, modelo, temperatura=0.9, max_tokens_novos=256, top_p=0.95, penalidade_repeticao=1.0):
6
- # Inicialização do cliente de inferência
7
- if modelo == "Modelo 1":
8
- client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.2")
9
- elif modelo == "Modelo 2":
10
- client = InferenceClient("microsoft/Phi-3-mini-4k-instruct")
11
- elif modelo == "Modelo 3":
12
- client = InferenceClient("google/gemma-1.1-7b-it")
13
- else:
14
- return "Modelo não reconhecido."
15
 
16
- kwargs_geracao = dict(
 
 
 
 
 
 
 
17
  temperature=float(temperatura),
18
  max_new_tokens=int(max_tokens_novos),
19
  top_p=float(top_p),
@@ -21,8 +19,7 @@ def gerar(prompt, historico, prompt_sistema, modelo, temperatura=0.9, max_tokens
21
  do_sample=True,
22
  seed=42,
23
  )
24
- # Função para formatar o prompt de entrada com o histórico de diálogo
25
- prompt_formatada = "<s>" + "".join(f"[INST] {prompt_usuario} [/INST] {resposta_bot}" for prompt_usuario, resposta_bot in historico) + f"[INST] {prompt_sistema} [/INST]"
26
  stream = client.text_generation(prompt_formatada, **kwargs_geracao, stream=True, details=True, return_full_text=False)
27
  for resposta in stream:
28
  yield resposta.token.text
@@ -34,34 +31,23 @@ inputs_adicionais = [
34
  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"),
35
  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"),
36
  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"),
37
- gr.Dropdown(label="Modelo", choices=["Modelo 1", "Modelo 2", "Modelo 3"], default="Modelo 1", interactive=True)
38
  ]
39
 
40
  # Exemplos de prompts
41
- exemplos=[
42
  ["Paciente de 55 anos, história familiar de doença cardíaca. Colesterol total: 260 mg/dL, HDL: 40 mg/dL, LDL: 180 mg/dL, triglicerídeos: 200 mg/dL. Interpretar resultados e sugerir intervenções.", None, None, None, None, None],
43
  ["Ecocardiograma em paciente de 70 anos, dispneia aos esforços. Fração de ejeção: 40%, espessamento do septo interventricular, dilatação atrial esquerda. Propor tratamento para insuficiência cardíaca.", None, None, None, None, None],
44
  ["Teste de esforço em esteira, paciente de 45 anos, dor torácica atípica. 10 METs atingidos, depressão do segmento ST de 2 mm no pós-exercício. Recomendar próximos passos diagnósticos e terapêuticos.", None, None, None, None, None],
45
- ["Holter de 24 horas, paciente de 60 anos, síncope recorrente. Episódios de pausas sinusais de até 5 segundos, arritmia sinusal respiratória. Formular plano de monitoramento e tratamento para bradicardia sintomática.", None, None, None, None, None],
46
- ["Cateterismo cardíaco em paciente de 65 anos, angina instável. Angiografia revela lesões significativas em duas artérias coronárias principais, FFR: 0,68. Recomendar opções de revascularização e manejo coronariano.", None, None, None, None, None]
47
  ]
48
 
49
  # Interface do Chat
50
  gr.ChatInterface(
51
  fn=gerar,
52
- inputs=inputs_adicionais,
53
- outputs=gr.Textbox(label="Resposta do Modelo"),
54
  title="Medchat | Automação Inteligente de Saúde",
55
  examples=exemplos,
56
- layout="vertical",
57
- enable_queue=True,
58
- allow_screenshot=True,
59
- allow_flagging=True,
60
- flagging_options=["Inapropriado", "Incorreto", "Ofensivo"],
61
- server_name="0.0.0.0",
62
- server_port=8080,
63
- server_name_description="Endereço IP",
64
- server_port_description="Porta",
65
- interpretation="markdown",
66
- keep_history=True,
67
- ).launch()
 
 
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),
 
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
 
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
37
+ exemplos = [
38
  ["Paciente de 55 anos, história familiar de doença cardíaca. Colesterol total: 260 mg/dL, HDL: 40 mg/dL, LDL: 180 mg/dL, triglicerídeos: 200 mg/dL. Interpretar resultados e sugerir intervenções.", None, None, None, None, None],
39
  ["Ecocardiograma em paciente de 70 anos, dispneia aos esforços. Fração de ejeção: 40%, espessamento do septo interventricular, dilatação atrial esquerda. Propor tratamento para insuficiência cardíaca.", None, None, None, None, None],
40
  ["Teste de esforço em esteira, paciente de 45 anos, dor torácica atípica. 10 METs atingidos, depressão do segmento ST de 2 mm no pós-exercício. Recomendar próximos passos diagnósticos e terapêuticos.", None, None, None, None, None],
41
+ ["Holter de 24 horas, paciente de 60 anos, síncope recorrente. Episódios de pausas sinusais de até 5 segundos, arritmia sinusal respiratória. Formular plano para bradicardia sintomática.", None, None, None, None, None],
42
+ ["Cateterismo cardíaco em paciente de 65 anos, angina instável. Angiografia revela lesões significativas em duas artérias coronárias principais, FFR: 0,68. Recomendar opções de revascularização.", None, None, None, None, None]
43
  ]
44
 
45
  # Interface do Chat
46
  gr.ChatInterface(
47
  fn=gerar,
48
+ chatbot=gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, likeable=True, layout="panel"),
49
+ additional_inputs=inputs_adicionais,
50
  title="Medchat | Automação Inteligente de Saúde",
51
  examples=exemplos,
52
+ concurrency_limit=20,
53
+ ).launch(show_api=False)