File size: 3,722 Bytes
91af6ff
 
 
 
 
 
 
 
e622b68
91af6ff
 
 
e622b68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2d4d81d
91af6ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2d4d81d
91af6ff
 
 
2d4d81d
91af6ff
 
 
 
2d4d81d
91af6ff
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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)