Spaces:
Build error
Build error
| 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() | |