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("""

Truebot AI - True Clinic

""") gr.Markdown("""

Sempre consigo...

""") gr.Markdown("""

""") 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()