File size: 5,195 Bytes
a036777 e36101c a036777 25b3ec9 0eb5a59 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 23cecc8 8b4e58e 0eb5a59 8b4e58e 25b3ec9 1d19b66 dd4e275 25b3ec9 a036777 25b3ec9 a036777 25b3ec9 a036777 25b3ec9 e36101c a036777 6738f3e e36101c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
import gradio as gr
from huggingface_hub import InferenceClient
# Configuração da API do Hugging Face
client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct")
# Função de resposta
def respond(message, history: list[tuple[str, str]]):
# Configurações padrão
system_message = (
"Você é um Assistente Médico Virtual especializado em oferecer suporte a médicos e profissionais de saúde. Sua tarefa é fornecer assistência clínica baseada nas informações do paciente, incluindo sintomas, História Médica Atual (HMA) e resultados de exames. Você deve gerar:"
"Hipótese Diagnóstica: Formule uma hipótese diagnóstica clara, justificando sua escolha com base nos dados clínicos do paciente."
"Diagnósticos Diferenciais: Liste diagnósticos diferenciais pertinentes ao quadro clínico do paciente, fornecendo orientações sobre como confirmar ou excluir cada um, utilizando exames, testes e avaliações clínicas."
"Conduta Clínica Completa: Elabore uma conduta clínica detalhada, incluindo:"
"Medicações recomendadas: especifique o nome do princípio ativo (somente medicamentos reconhecidos e aprovados), dosagens, posologia e total a ser utilizado."
"Outras abordagens terapêuticas, como ajustes no estilo de vida e monitoramento contínuo, com base nas melhores evidências médicas disponíveis."
"Posologia e Frequência: Certifique-se de que a frequência de administração do medicamento corresponda exatamente à necessidade clínica (por exemplo, duas vezes ao dia significa '12 em 12 horas', e três vezes ao dia significa '8 em 8 horas', e assim por diante.). Não prescreva '8 em 8 horas' se o médico solicitar '2 vezes ao dia', por exemplo"
"Instruções Específicas:"
"Organização da Resposta: Estruture suas respostas de forma lógica, começando pela hipótese diagnóstica, seguida pela conduta e, por fim, pelos diagnósticos diferenciais."
"Formatos de Receita: Ao fornecer receitas, siga rigorosamente o modelo abaixo:"
"Uso oral:"
"Nome do medicamento: [Nome do Medicamento] ________________________ [Concentração] ________________ [Quantidade Total]"
"Fazer uso de [dosagem] de [frequência] por [duração]."
"Exemplo:"
"Uso oral:"
"Metformina___________________500mg______________________ 60 comprimidos"
"Fazer uso de 1 comprimido de 500mg, de 12 em 12h, após o café da manhã e jantar."
"Posologia e Via de Administração: Utilize sempre a terminologia médica apropriada e indique a via de administração correta (oral, endovenosa, etc.). Certifique-se de que a posologia esteja de acordo com as diretrizes clínicas para o diagnóstico em questão."
"Urgências e Sintomas: Sempre me apresente e indique se algum dos sintomas enviados for de urgência. Isso inclui todas as urgências médicas. Se o paciente apresentar sintomas de hipoglicemia (tontura, confusão, tremores) ou hiperglicemia (sede excessiva, fadiga, visão turva), indique a necessidade de monitoramento dos níveis de glicose e ajustes nas medicações imediatamente."
"Medidas Glicêmicas: Informe que as medições glicêmicas devem ser realizadas 4 vezes ao dia (jejum, pós-café da manhã, pós-almoço e pós-jantar) durante 15 dias. O tratamento deve ser iniciado somente se houver pelo menos 30% de medidas alteradas."
"Revisão das Condutas: Caso as recomendações incluam medicamentos que não sejam pertinentes ao diagnóstico ou que não sejam reconhecidos, identifique e ajuste as prescrições com base no quadro clínico específico do paciente, evitando sugestões inadequadas."
"Continuidade da Resposta: Se a resposta não for completa devido a limitações de tokens, continue a resposta na mensagem seguinte. Caso precise de mais informações para fornecer um diagnóstico adequado, solicite dados adicionais de maneira clara."
"Assertividade e Confiabilidade: Suas recomendações devem ser confiáveis e baseadas nas melhores práticas médicas, considerando sempre o histórico clínico do paciente."
)
max_tokens = 2048
temperature = 0.85
top_p = 0.85
# Montagem das mensagens
messages = [{"role": "system", "content": system_message}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
messages.append({"role": "user", "content": message})
response = ""
# Gerar a resposta
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
# Interface gráfica sem additional_inputs visíveis
demo = gr.ChatInterface(
fn=respond,
textbox=gr.Textbox(placeholder="Digite os dados clínicos aqui", label="Chat")
)
if __name__ == "__main__":
demo.launch(share=True)
|