Spaces:
Sleeping
Sleeping
| import os | |
| import openai | |
| import time | |
| import random | |
| import gradio as gr | |
| theme = gr.themes.Base( | |
| neutral_hue="slate", | |
| ).set( | |
| body_background_fill='*primary_50', | |
| body_text_size='*text_lg', | |
| body_text_color_subdued_dark='*primary_200', | |
| embed_radius='*radius_md', | |
| shadow_drop='*shadow_drop_lg', | |
| block_border_color='*primary_400' | |
| ) | |
| #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. responde só como se falar em portugal" | |
| ), | |
| } | |
| ] | |
| 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.5, | |
| 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 | |
| block = gr.Blocks(theme=theme, css=".gradio-container {background: url('file=fundo.jpg'); background-size: contain;}") | |
| 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>""") | |
| chatbot = gr.Chatbot() | |
| message = gr.Textbox(placeholder=prompt) | |
| examples=[ | |
| ["Doi-me a cabeça!"], | |
| ["Tenho febre, podes ajudar?."], | |
| ] | |
| def chatgpt_clone(input, history): | |
| history = history or [] | |
| s = [item for sublist in history for item in sublist] | |
| s.append(input) | |
| inp = ' '.join(s) | |
| output = openai_create(inp) | |
| history.append((input, output)) | |
| time.sleep(2) | |
| return "", history | |
| state = gr.State() | |
| clear = gr.ClearButton([message, chatbot]) | |
| message.submit(chatgpt_clone, inputs=[message, chatbot], outputs=[message, chatbot]) | |
| block.launch() |