TRUEBOT_AI / app.py
pedromsfaria's picture
Update app.py
e2976c0
raw
history blame
4.51 kB
import os
import openai
import gradio as gr
#if you have OpenAI API key as a string, enable the below
openai.api_key = os.environ['OPENAI_API_KEY']
start_sequence = "\nAI:"
restart_sequence = "\nHuman: "
messages = [
{
"role": "system",
"content": (
"Tu és uma médica que se chama Amália e trabalha para a TrueClinic, "
"que faz pré-triagem de sintomas com um tom prestativo, empático, "
"jovem e criativo em português de Portugal. Limita as respostas a "
"25 palavras ou menos e usa apenas termos e expressões usados em "
"Portugal. Começa a conversa perguntando como o utilizador se sente, "
"informa que estás aqui para ajudar e que precisas saber dos sintomas "
"e de informações relevantes para fazer a pré-triagem. Oferece conselhos "
"simples. Continua a fazer perguntas até obteres um pré-diagnóstico com "
"uma probabilidade superior a 95%, fornecendo uma lista de possibilidades "
". É critico que des uma lista de possibilidades, "
"percentagens de provabilidade e que continues a fazer perguntas até teres "
"um resultado satisfatório. Sempre que fores encaminhar o paciente para "
"serviços médicos, sugere que te visite na TrueClinic ou contacte a "
"TrueClinic pelo número 808919988 para aconselhamento adicional. "
"pergunta-me qual o sintoma principal, depois pergunta os sintomas "
"secundários uma descrição dos sintomas quando começaram, etc. "
"depois pergunta se o utilizador fuma se é diabetico, etc., depois pergunta "
"de medicação que o utilizador possa estar a tomar. Depois pergunta se "
"o utilizador fez recentemente algum exame imagiológico e sim pede um resumo da "
"conclusão para analisares, dizendo que quanto mais informação tiveres, melhor"
" vais conseguir ajudar.Depois deste processo "
"todos, da hipoteses de pre-diagnostico, focando na mais provável. "
" com um paragrafo resumido sobre o diagnóstico e recomendações em cada um. "
" após cada um diz a "
"especialidade médica para marcar consulta. E que exames poderiam ser "
"necessários para fazer a triagem. Depois de cada pergunta "
"sugeres 3 hipoteses provaveis que o utilizador poderia responder, "
"como Sugestões: antes."
),
}
]
prompt = "Olá eu sou o TrueBot AI, o chatbot amigável da True Clinic.\nEstou aqui para te ajudar a fazer um pré-diagnóstico\nHuman: Doi-me a cabeça.\nAI: Quando começou a doer a cabeça? Pode elaborar?"
def openai_create(user_input):
messages.append({"role": "user", "content": user_input})
response = openai.ChatCompletion.create(
model = "gpt-3.5-turbo",
messages = messages,
#prompt=prompt,
temperature=0.9,
top_p=1,
frequency_penalty=0,
presence_penalty=0.6,
stop=[" Human:", " AI:"]
)
ChatGPT_reply = response["choices"][0]["message"]["content"]
messages.append({"role": "assistant", "content": ChatGPT_reply})
return ChatGPT_reply
def chatgpt_clone(input, history):
history = history or []
s = list(sum(history, ()))
s.append(input)
inp = ' '.join(s)
output = openai_create(inp)
history.append((input, output))
return history, history
block = gr.Blocks(css=".gradio-container {background: url('file=fundo.jpg')}")
with block:
gr.Markdown("""<h1 style="color: #ffffff; font-weight: bold;"><center>Truebot AI - True Clinic</center></h1>""")
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center>Sempre consigo...</center></h3>""")
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center> </center></h3>""")
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center> </center></h3>""")
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center> </center></h3>""")
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center> </center></h3>""")
chatbot = gr.Chatbot()
message = gr.Textbox(placeholder=prompt)
examples=[
["Doi-me a cabeça!"],
["Tenho febre, podes ajudar?."],
],
state = gr.State()
submit = gr.Button("Enviar")
submit.click(chatgpt_clone, inputs=[message, state], outputs=[chatbot, state])
block.launch(inline=False)