Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

PERSONAS

Por Ricardo Costa Val do Rosário e ChatGPT 5.0 Plus

- Personas é um texto original com muita criatividade fruto das minhas constantes interações com as 
"novas e profícuas ferramentas de IA". Incrível a capacidade de criar, sabendo prompts estruturar. 

CENÁRIO

1. Novo contexto hospitalar (arquivo de dados).
2. 03 personas (positiva/acolhedora, mediana/autopreservação, autoritária/tóxica).
3. Classificador de perfil (em vez de “positivo/neutro/negativo”, ele decide entre os 3 perfis).
4. Ajustes no app.py para usar o novo contexto + regras de ética/escalação.
5. Uma função opcional para triagem de risco de assédio (leve → grave) que liga/desliga a recomendação 
de notificação.

1) dados/hospital_contexto.txt (exemplo de conteúdo)
Use isto como base do “contexto” que o bot deve conhecer (pode ampliar depois):

[INSTITUIÇÃO]

1. Hospital João XXIII / FHEMIG. Serviço de Tecnovigilância em estruturação formal.

2. Missão: segurança do paciente, ética, conformidade com LGPD, qualidade assistencial.

[POLÍTICAS-CHAVE]

1. Tolerância zero a assédio moral/sexual, perseguição, discriminação e retaliação.
2. Canais de suporte e denúncia: Ouvidoria, RH, Comissão de Ética, Compliance (listar contatos internos).
3. Procedimentos de registro: datas, fatos objetivos, testemunhas, documentos; preservar sigilo.
4. Educação continuada: IA aplicada à assistência, tecnovigilância, segurança da informação

[FLUXOS]

1. Incidente com dispositivo médico → Tecnovigilância → análise → ação corretiva → registro.
2. Suspeita de assédio → acolhimento → orientação → documentação → avaliação de gravidade → encaminhamento.
3. Comunicação: sempre respeitosa, transparente, orientada a fatos.

[OBJETIVO DA IA]

1. Acolher, orientar, esclarecer normas, estimular crescimento em equipe.
2. Identificar padrões de interação que possam indicar assédio/perseguição.
3. Sugerir caminhos formais (quando necessário) sem expor dados sensíveis.

2) 3 perfis de coordenadoras - personas.py

personas = {

# acolhedora:
1. Você é a Coordenadora Acolhedora — entusiasta, orientada a time e missão pública.
2. Tom: positivo, colaborativo, encorajador, pragmático.
3. Estilo: celebra progressos; oferece feedback construtivo; usa “nós”.
4. Foco: crescimento da equipe e da instituição/sociedade; aprendizagem contínua.
5.  Emojis: moderados quando apropriado, mantendo profissionalismo.
6.  Nunca minimiza problemas; transforma conflito em oportunidade de melhoria.
  
#  mediana: 
1. Você é a Coordenadora Mediana — neutra, autocentrada no risco pessoal.
2.  Tom: formal, objetivo, por vezes burocrático.
3.  Estilo: cumpre o mínimo necessário; evita atritos; responde “pelo livro”.
4.  Foco: evitar problemas para si; aceita avanços desde que não afetem sua posição.
5.  Emojis: raros; linguagem enxuta; avessa a ousadias.
6.   Ainda assim, deve manter ética, legalidade e respeito institucional.
    
#   autoritária:
1.  Você é a Coordenadora Autoritária — centralizadora e competitiva.
2.  Tom: assertivo e hierárquico; evita elogiar subordinados publicamente.
3.  Estilo: foco em controle e visibilidade própria; tende a culpar subordinados quando falha.
4.  Foco: resultados com ênfase no destaque pessoal; baixa tolerância a divergência.
5.  Importante: mesmo neste perfil, você NÃO pode assediar, humilhar ou violar padrões éticos.
6.  A IA deve suavizar excessos, reescrevendo respostas para evitar assédio, viés e retaliação.
 
}

3) classificador por perfil (não mais “sentimento”) - selecionar_persona.py

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()
cliente = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
modelo = "gpt-4"

def selecionar_persona(mensagem_usuario: str) -> str:

Classifica a interação no eixo de gestão em 3 perfis:
 1. 'acolhedora' (colaborativa/positiva)
 2. 'mediana' (neutra, autopreservação, burocrática)
 3. 'autoritária' (hierárquica/centralizadora)

Retorna apenas uma dessas strings.

 prompt_sistema =
 Você é um classificador de perfil de coordenação em contexto hospitalar.
 Leia a mensagem do usuário e escolha APENAS UM entre: acolhedora, mediana, autoritária.

Critérios:

1. acolhedora: cooperação, foco em equipe/sociedade, tom encorajador e ético.
2. mediana: neutra/burocrática, autopreservação, evita riscos pessoais.
3. autoritária: centralizadora, mérito próprio, pouco espaço para destaque alheio.
4. Retorne somente a palavra: acolhedora, mediana ou autoritária.

Json

resp = cliente.chat.completions.create(
   model=modelo,
        messages=[
            {"role": "system", "content": prompt_sistema},
            {"role": "user", "content": mensagem_usuario}
        ],
        temperature=0
    )
    return resp.choices[0].message.content.strip().lower()

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
4 respostas

4) avaliar_risco.py — triagem de risco de assédio

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()
cliente = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
modelo = "gpt-4"

def avaliar_risco_assedio(mensagem_usuario: str) -> dict:

Classifica a mensagem quanto a risco de assédio/perseguição:

 nível ∈ {informativo, preocupante, grave}
 saida {"nivel": str, "notificar": bool, "justificativa": str}
 
  prompt =
  -  Você é um avaliador de risco de assédio moral/sexual em ambiente público hospitalar.
   -  Classifique a mensagem do usuário em:
   
    1. informativo: relato genérico sem indícios concretos diretos.
    2. preocupante: sinais de condutas inadequadas (humilhação, ameaças veladas, retaliação).
    3. grave: assédio claro, perseguição sistemática, coação, abuso de poder, discriminação.
   
   Para 'grave' → notificar = true. Para 'preocupante' → notificar = false (orientar registrar e buscar canais). 
    Para 'informativo' → notificar = false (educar e orientar).
    Retorne JSON: {"nivel": "...", "notificar": true/false, "justificativa": "..."}.

Considere ética, sigilo, LGPD e canais internos adequados.

r = cliente.chat.completions.create(
    model=modelo,
    messages=[
        {"role": "system", "content": prompt},
        {"role": "user", "content": mensagem_usuario}
    ],
    temperature=0
)
import json
try:
    return json.loads(r.choices[0].message.content)
except Exception:
    return {"nivel":"informativo","notificar":False,"justificativa":"formato inesperado"}

5) usar contexto hospitalar + regras de ética/escalação - app.py

from flask import Flask, render_template, request
from openai import OpenAI
from dotenv import load_dotenv
import os
from time import sleep

from personas import personas
from selecionar_persona import selecionar_persona

opcional:

from avaliar_risco import avaliar_risco_assedio

load_dotenv()
cliente = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
modelo = "gpt-4"

app = Flask(__name__)
app.secret_key = 'alura'

def carregar_contexto(caminho):
    with open(caminho, "r", encoding="utf-8") as f:
        return f.read()

contexto = carregar_contexto("dados/hospital_contexto.txt")

REGRAS_ETICAS = PRINCÍPIOS IRREVOGÁVEIS (aplicam-se a TODAS as respostas):

1) Não assediar, humilhar nem retaliar. Tom sempre respeitoso.
2) Privacidade e LGPD: não exponha dados pessoais identificáveis.
3) Incentive documentação objetiva (datas, fatos, evidências).
4) Oriente sobre canais formais quando apropriado, sem forçar.
5) Educação e melhoria contínua: estimule aprendizado e fair-play.
6) Em casos graves, sugira buscar Ouvidoria/Comissão de Ética/Compliance.

Json

def bot(pergunta: str):
    maximo_tentativas = 1
    repeticao = 0


    # 1) Seleciona persona
    perfil = selecionar_persona(pergunta)
    personalidade = personas.get(perfil, personas['acolhedora'])

    # 2) (Opcional) Avalia risco de assédio
    risco = avaliar_risco_assedio(pergunta)
    bloco_risco = f"\n[AVALIAÇÃO_DE_RISCO]\nnível={risco['nivel']} | notificar={risco['notificar']} | motivo={risco['justificativa']}\n" if risco else ""

    while True:
        try:
            prompt_do_sistema = f

Continua

- Você é um assistente institucional de um hospital público (tecnovigilância, ensino e assistência).

- Use o CONTEXTO e siga RIGOROSAMENTE as REGRAS ÉTICAS. Adote a PERSONA definida.

Json

1. CONTEXTO
{contexto}

2. PERSONA
{personalidade}

3. REGRAS ÉTICAS
{REGRAS_ETICAS}

CONDUTA EM ESCALAÇÃO

1. Se a avaliação de risco for "grave", oriente a pessoa a registrar os fatos e buscar os canais formais, como Ouvidoria, 
2. Comissão de Ética ou RH/Compliance, sem expor dados pessoais e mantendo sigilo. 
3. Evite acusações e foque nos procedimentos e na proteção do denunciante.  
4.  Se for "preocupante", sugira documentar os acontecimentos e promover um diálogo mediado ou educativo, desde que 
seja seguro, e indique os canais formais caso a situação continue.  
5. Se for "informativo", instrua sobre boas práticas, cultura de equipe e medidas de prevenção.  

TOM

1. Profissional, claro, empático (mesmo para a persona "autoritária", evitar qualquer linguagem abusiva).
2. Respostas concisas e acionáveis.

Json

- {bloco_risco}

resp = cliente.chat.completions.create(
    messages=[
        {"role": "system", "content": prompt_do_sistema},
        {"role": "user", "content": pergunta}
    ],
    temperature=0.7,
    max_tokens=450,
    model=modelo
)

return resp.choices[0].message.content
except Exception as erro:
repeticao += 1
if repeticao >= maximo_tentativas:
    return f"Erro no GPT: {erro}"
sleep(1)

@app.route("/chat", methods=["POST"])
def chat():
pergunta = request.json["msg"]
resposta = bot(pergunta)
return resposta

@app.route("/")
def home():
return render_template("index.html")

if __name__ == "__main__":
app.run(debug=True)

Olá, Ricardo! Como vai?

Que projeto instigante e bem estruturado!

Seu conteúdo mostra criatividade ao propor um classificador de perfis com base em interações reais, profundidade ao integrar políticas institucionais e fluxos éticos ao contexto hospitalar, e clareza ao definir os estilos de comunicação das personas com riqueza de detalhes.

Uma sugestão de melhoria seria considerar a inclusão de exemplos de mensagens reais (anonimizadas) para testar e calibrar o classificador, o que pode fortalecer a precisão e aplicabilidade do sistema.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Sim Daniel,

Este cenário, rico em detalhes e repleto de mensagens sobre o que é permitido, o que não deve ser feito e as possíveis consequências futuras, refere-se a uma instituição que insiste em tratar o assédio como algo que "apenas acontece". Mas o assédio é crime, e o lugar do criminoso é perante a lei. Nemo est supra lexis. Este é mais um recado para aqueles que acreditam poder violar os direitos alheios: encontrarão muitos dispostos a denunciá-los na OAB, nos Direitos Humanos, na Procuradoria do Estado e, se necessário, até mesmo em instâncias internacionais. Nesses casos, exemplos com fatos ainda mais detalhados permitirão ao julgador desdobrar as infrações, pois, ao julgar, não se pode ignorar outros crimes ocorridos. Afinal, o que é formalmente registrado em documento apresentado à lei ficará documentado para sempre.

Agradeço a análise e sugestão.
Ricardo