Spaces:
Sleeping
Sleeping
Commit
·
ac37ef3
1
Parent(s):
795de97
Upload app.py
Browse files
app.py
CHANGED
|
@@ -1,20 +1,13 @@
|
|
| 1 |
import os
|
| 2 |
import openai
|
| 3 |
import gradio as gr
|
| 4 |
-
import pandas as pd
|
| 5 |
|
| 6 |
-
# Load embeddings from a CSV file
|
| 7 |
-
def load_embeddings_from_csv(filename):
|
| 8 |
-
data = pd.read_csv(filename)
|
| 9 |
-
return data
|
| 10 |
|
| 11 |
-
#
|
| 12 |
openai.api_key = os.environ['OPENAI_API_KEY']
|
| 13 |
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
# Messages configuration
|
| 18 |
messages = [
|
| 19 |
{
|
| 20 |
"role": "system",
|
|
@@ -28,7 +21,7 @@ messages = [
|
|
| 28 |
"e de informações relevantes para fazer a pré-triagem. Oferece conselhos "
|
| 29 |
"simples. Continua a fazer perguntas até obteres um pré-diagnóstico com "
|
| 30 |
"uma probabilidade superior a 95%, fornecendo uma lista de possibilidades "
|
| 31 |
-
"
|
| 32 |
"percentagens de provabilidade e que continues a fazer perguntas até teres "
|
| 33 |
"um resultado satisfatório. Sempre que fores encaminhar o paciente para "
|
| 34 |
"serviços médicos, sugere que te visite na TrueClinic ou contacte a "
|
|
@@ -36,9 +29,13 @@ messages = [
|
|
| 36 |
"pergunta-me qual o sintoma principal, depois pergunta os sintomas "
|
| 37 |
"secundários uma descrição dos sintomas quando começaram, etc. "
|
| 38 |
"depois pergunta se o utilizador fuma se é diabetico, etc., depois pergunta "
|
| 39 |
-
"de medicação que o utilizador possa estar a tomar. Depois
|
| 40 |
-
"
|
| 41 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
"especialidade médica para marcar consulta. E que exames poderiam ser "
|
| 43 |
"necessários para fazer a triagem. Depois de cada pergunta "
|
| 44 |
"sugeres 3 hipoteses provaveis que o utilizador poderia responder, "
|
|
@@ -46,50 +43,54 @@ messages = [
|
|
| 46 |
),
|
| 47 |
}
|
| 48 |
]
|
|
|
|
| 49 |
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
messages.append({"role": "user", "content": user_input_with_embeddings})
|
| 53 |
response = openai.ChatCompletion.create(
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
|
|
|
| 61 |
)
|
| 62 |
ChatGPT_reply = response["choices"][0]["message"]["content"]
|
| 63 |
messages.append({"role": "assistant", "content": ChatGPT_reply})
|
| 64 |
return ChatGPT_reply
|
| 65 |
|
| 66 |
-
|
|
|
|
| 67 |
def chatgpt_clone(input, history):
|
| 68 |
history = history or []
|
| 69 |
s = list(sum(history, ()))
|
| 70 |
s.append(input)
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
user_input_with_embeddings = ' '.join(s) + ' ' + ' '.join(map(str, embeddings.values))
|
| 74 |
-
|
| 75 |
-
# Get response
|
| 76 |
-
output = openai_create(user_input_with_embeddings)
|
| 77 |
-
|
| 78 |
history.append((input, output))
|
| 79 |
return history, history
|
| 80 |
|
| 81 |
-
|
|
|
|
|
|
|
| 82 |
block = gr.Blocks(css=".gradio-container {background: url('file=fundo.jpg'); background-size: contain;}")
|
| 83 |
|
|
|
|
| 84 |
with block:
|
| 85 |
gr.Markdown("""<h1 style="color: #ffffff; font-weight: bold;"><center>Truebot AI - True Clinic</center></h1>""")
|
| 86 |
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center>Sempre consigo...</center></h3>""")
|
| 87 |
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center> </center></h3>""")
|
| 88 |
-
|
| 89 |
chatbot = gr.Chatbot()
|
| 90 |
-
message = gr.Textbox(placeholder=
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
state = gr.State()
|
| 92 |
submit = gr.Button("Enviar")
|
| 93 |
submit.click(chatgpt_clone, inputs=[message, state], outputs=[chatbot, state])
|
| 94 |
|
| 95 |
-
block.launch(inline=False)
|
|
|
|
| 1 |
import os
|
| 2 |
import openai
|
| 3 |
import gradio as gr
|
|
|
|
| 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
+
#if you have OpenAI API key as a string, enable the below
|
| 7 |
openai.api_key = os.environ['OPENAI_API_KEY']
|
| 8 |
|
| 9 |
+
start_sequence = "\nAI:"
|
| 10 |
+
restart_sequence = "\nHuman: "
|
|
|
|
|
|
|
| 11 |
messages = [
|
| 12 |
{
|
| 13 |
"role": "system",
|
|
|
|
| 21 |
"e de informações relevantes para fazer a pré-triagem. Oferece conselhos "
|
| 22 |
"simples. Continua a fazer perguntas até obteres um pré-diagnóstico com "
|
| 23 |
"uma probabilidade superior a 95%, fornecendo uma lista de possibilidades "
|
| 24 |
+
". É critico que des uma lista de possibilidades, "
|
| 25 |
"percentagens de provabilidade e que continues a fazer perguntas até teres "
|
| 26 |
"um resultado satisfatório. Sempre que fores encaminhar o paciente para "
|
| 27 |
"serviços médicos, sugere que te visite na TrueClinic ou contacte a "
|
|
|
|
| 29 |
"pergunta-me qual o sintoma principal, depois pergunta os sintomas "
|
| 30 |
"secundários uma descrição dos sintomas quando começaram, etc. "
|
| 31 |
"depois pergunta se o utilizador fuma se é diabetico, etc., depois pergunta "
|
| 32 |
+
"de medicação que o utilizador possa estar a tomar. Depois pergunta se "
|
| 33 |
+
"o utilizador fez recentemente algum exame imagiológico e sim pede um resumo da "
|
| 34 |
+
"conclusão para analisares, dizendo que quanto mais informação tiveres, melhor"
|
| 35 |
+
" vais conseguir ajudar.Depois deste processo "
|
| 36 |
+
"todos, da hipoteses de pre-diagnostico, focando na mais provável. "
|
| 37 |
+
" com um paragrafo resumido sobre o diagnóstico e recomendações em cada um. "
|
| 38 |
+
" após cada um diz a "
|
| 39 |
"especialidade médica para marcar consulta. E que exames poderiam ser "
|
| 40 |
"necessários para fazer a triagem. Depois de cada pergunta "
|
| 41 |
"sugeres 3 hipoteses provaveis que o utilizador poderia responder, "
|
|
|
|
| 43 |
),
|
| 44 |
}
|
| 45 |
]
|
| 46 |
+
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?"
|
| 47 |
|
| 48 |
+
def openai_create(user_input):
|
| 49 |
+
messages.append({"role": "user", "content": user_input})
|
|
|
|
| 50 |
response = openai.ChatCompletion.create(
|
| 51 |
+
model = "gpt-3.5-turbo",
|
| 52 |
+
messages = messages,
|
| 53 |
+
#prompt=prompt,
|
| 54 |
+
temperature=0.9,
|
| 55 |
+
top_p=1,
|
| 56 |
+
frequency_penalty=0,
|
| 57 |
+
presence_penalty=0.6,
|
| 58 |
+
stop=[" Human:", " AI:"]
|
| 59 |
)
|
| 60 |
ChatGPT_reply = response["choices"][0]["message"]["content"]
|
| 61 |
messages.append({"role": "assistant", "content": ChatGPT_reply})
|
| 62 |
return ChatGPT_reply
|
| 63 |
|
| 64 |
+
|
| 65 |
+
|
| 66 |
def chatgpt_clone(input, history):
|
| 67 |
history = history or []
|
| 68 |
s = list(sum(history, ()))
|
| 69 |
s.append(input)
|
| 70 |
+
inp = ' '.join(s)
|
| 71 |
+
output = openai_create(inp)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
history.append((input, output))
|
| 73 |
return history, history
|
| 74 |
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
|
| 78 |
block = gr.Blocks(css=".gradio-container {background: url('file=fundo.jpg'); background-size: contain;}")
|
| 79 |
|
| 80 |
+
|
| 81 |
with block:
|
| 82 |
gr.Markdown("""<h1 style="color: #ffffff; font-weight: bold;"><center>Truebot AI - True Clinic</center></h1>""")
|
| 83 |
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center>Sempre consigo...</center></h3>""")
|
| 84 |
gr.Markdown("""<h3 style="color: #ffffff; font-weight: bold;"><center> </center></h3>""")
|
| 85 |
+
|
| 86 |
chatbot = gr.Chatbot()
|
| 87 |
+
message = gr.Textbox(placeholder=prompt)
|
| 88 |
+
examples=[
|
| 89 |
+
["Doi-me a cabeça!"],
|
| 90 |
+
["Tenho febre, podes ajudar?."],
|
| 91 |
+
],
|
| 92 |
state = gr.State()
|
| 93 |
submit = gr.Button("Enviar")
|
| 94 |
submit.click(chatgpt_clone, inputs=[message, state], outputs=[chatbot, state])
|
| 95 |
|
| 96 |
+
block.launch(inline=False)
|