Predoc_MVP2 / app.py
Americo's picture
Update app.py
9620505 verified
import gradio as gr
import requests
import uuid
import os
url = os.environ["url"]
# Función para manejar el flujo de la conversación
def model(text, conversation, name, previous_prescriptions, obra_social, plan, nro_afiliado, ids):
# Si es la primera vez, generamos los IDs
if ids is None:
ids = {
"unique_id": str(uuid.uuid4()),
"user_id": str(uuid.uuid4())
}
data = {
"patient_data": {
"name": name,
"previous_prescriptions": previous_prescriptions,
"obra_social": obra_social,
"plan": plan,
"nro_afiliado": nro_afiliado
},
"unique_id": ids["unique_id"],
"user_id": ids["user_id"],
"message": {"text": text},
"step": "chat"
}
headers = {
"Content-Type": "application/json"
}
print("DATA",data)
response = requests.post(url=url, json=data, headers=headers)
output = response.json()['output']['response']
return output, ids # devolvemos los ids actualizados para mantenerlos
def interact_with_chatbot(text, conversation, name, previous_prescriptions, obra_social, plan, nro_afiliado, ids):
response, ids = model(text, conversation, name, previous_prescriptions, obra_social, plan, nro_afiliado, ids)
return response, conversation + [(text, response)], ids
# Interfaz
with gr.Blocks() as demo:
gr.Markdown("## 👨‍⚕️ PreDoc Chatbot 📋💊")
with gr.Accordion("📝 Datos del paciente", open=True):
name = gr.Textbox(label="Nombre del paciente", value="Roberto")
previous_prescriptions = gr.Textbox(label="Preescripciones previas", placeholder="Ej: losartán 50mg (1 caja)...")
obra_social = gr.Textbox(label="Obra social", placeholder="Ej: OSDE")
plan = gr.Textbox(label="Plan", placeholder="Ej: 210")
nro_afiliado = gr.Textbox(label="Número de afiliado", placeholder="Ej: 12345678")
chatbot = gr.Chatbot()
msg = gr.Textbox(label="Tu mensaje")
state_chat = gr.State([]) # historial de la conversación
state_ids = gr.State(None) # IDs generados solo una vez
def user_send(message, chat_history, name, previous_prescriptions, obra_social, plan, nro_afiliado, ids):
response, new_history, new_ids = interact_with_chatbot(
message, chat_history, name, previous_prescriptions, obra_social, plan, nro_afiliado, ids
)
return "", new_history, new_ids
msg.submit(
user_send,
[msg, state_chat, name, previous_prescriptions, obra_social, plan, nro_afiliado, state_ids],
[msg, chatbot, state_ids]
)
if __name__ == "__main__":
print(demo)
demo.launch()