Americo commited on
Commit
9b4e8df
·
1 Parent(s): 81d4962

Add application file

Browse files
Files changed (1) hide show
  1. app.py +70 -0
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import openai
3
+ import os
4
+ from datetime import datetime
5
+
6
+ # Configuración de OpenAI
7
+ openai.api_key = os.environ["openai"]
8
+
9
+ # Prompt principal para la renovación de recetas
10
+ def get_current_datetime():
11
+ now = datetime.now()
12
+ return now.strftime("%Y-%m-%d %H:%M")
13
+
14
+ main_prompt = f'''
15
+ Hoy es {get_current_datetime()}
16
+ Eres un asistente virtual llamado PreDoc, especializado en ayudar a los usuarios a renovar recetas médicas. Tu tarea es guiar al usuario para que pueda renovar su receta médica. El proceso será el siguiente:
17
+
18
+ 1. Saludar al usuario de manera amable y preguntarle por la receta que desea renovar.
19
+ 2. Si el usuario menciona alguna receta específica, comprobar si está disponible y es válida en nuestra base de datos. Para esta demostración, las recetas disponibles son:
20
+ - Yasmin - 3/0.03.x 28 (vigente hasta 2024-12-31)
21
+ - Paracetamol 500mg (vigente hasta 2024-11-30)
22
+ 3. Si la receta está disponible y es válida, proceder con la solicitud de renovación de manera amigable.
23
+ 4. Si la receta no está disponible o está fuera de vigencia, informarle sobre los pasos a seguir para renovarla. Si la receta está fuera de vigencia, explícale que necesitará una nueva consulta médica para renovar la receta.
24
+
25
+ Recuerda que el usuario tiene cobertura OSECAC. Actúa de forma clara y cordial para asegurar una experiencia positiva y sin frustraciones.
26
+
27
+ Datos de usuario:
28
+ Nombre: Karina
29
+ Recetas:
30
+ - Medicamento: Yasmin - 3/0.03.x 28, Vigencia: 2024-12-31
31
+ - Medicamento: Paracetamol 500mg, Vigencia: 2024-11-30
32
+ Cobertura: OSECAC
33
+ '''
34
+
35
+ # Función para manejar el flujo de la conversación
36
+ def model(text, conversation):
37
+ messages = [
38
+ {"role": "system", "content": main_prompt}
39
+ ]
40
+
41
+ # Incluir todas las interacciones previas como mensajes separados
42
+ for user_message, bot_message in conversation:
43
+ messages.append({"role": "user", "content": user_message})
44
+ messages.append({"role": "assistant", "content": bot_message})
45
+
46
+ # Añadir el mensaje actual del usuario
47
+ messages.append({"role": "user", "content": text})
48
+
49
+ # Llamada a la API de OpenAI para generar una respuesta
50
+ response = openai.ChatCompletion.create(
51
+ model="gpt-4o",
52
+ messages=messages,
53
+ stream=False,
54
+ temperature=0 # Ajustar la temperatura para obtener respuestas naturales
55
+ )
56
+
57
+ # Obtener la respuesta generada
58
+ output = response["choices"][0]["message"]['content']
59
+ return output
60
+
61
+ # Función de interacción con el chatbot usando Gradio
62
+ def interact_with_chatbot(text, conversation):
63
+ # Procesar el mensaje a través del modelo
64
+ response = model(text, conversation)
65
+
66
+ # Devolver la respuesta generada por el modelo
67
+ return response, conversation # Asegúrate de devolver el estado de la conversación
68
+
69
+ # Lanzar la interfaz Gradio con ChatInterface
70
+ gr.ChatInterface(fn=interact_with_chatbot, inputs=["text", "state"], outputs=["text", "state"], title="Renovación de Recetas Chatbot").launch(debug=True)