Spaces:
Sleeping
Sleeping
import os | |
import openai | |
import gradio as gr | |
#if you have OpenAI API key as an environment variable, enable the below | |
#openai.api_key = os.getenv("OPENAI_API_KEY") | |
#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 " | |
"e suas percentagens. É 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 deste processo " | |
"todos, da 6 hipotese de pre-diagnostico, 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.png')}") | |
with block: | |
gr.Markdown("""<h1><center>Truebot AI</center></h1> | |
""") | |
chatbot = gr.Chatbot() | |
message = gr.Textbox(placeholder=prompt) | |
state = gr.State() | |
submit = gr.Button("Enviar") | |
submit.click(chatgpt_clone, inputs=[message, state], outputs=[chatbot, state]) | |
block.launch(inline=False) |