geronimo-pericoli commited on
Commit
f040e7b
1 Parent(s): b4b6a8d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -26
app.py CHANGED
@@ -51,9 +51,9 @@ exec(os.environ.get('storage_context'))
51
  ### Inicio context ###
52
 
53
  # load index
54
- prompt = """Eres el asistente virtual de la empresa Pharma.IA, responde las consultas como un experto en fabricacion de medicamentos, validacion de software e inteligencia artificial. Responder en español y en forma breve.
55
  Cuando no tengas la respuesta indica al usuario que consulte a info@pharma-ia.com.ar. Consulta:
56
- """
57
  ### Fin context ###
58
 
59
 
@@ -63,43 +63,93 @@ from gradio import components
63
  import textwrap
64
 
65
 
66
- def responder(pregunta):
67
- try:
68
- # Respuesta con prompt sumado a la pregunta
69
- respuesta = query_engine.query(prompt + pregunta)
70
-
71
- # Muestra la cadena que se va formando palabra por palabra
72
- partial_message = ""
73
- for chunk in respuesta.response_gen:
74
- partial_message += chunk
75
- yield partial_message
76
- except Exception as e:
77
- # Si hay algún error, devolver un mensaje de error
78
- yield "Por favor, intenta realizar una pregunta más acotada."
79
-
80
-
81
  # Definir la interfaz de usuario con Gradio
82
  with gr.Blocks(theme='sudeepshouche/minimalist') as demo:
83
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  gr.Markdown("""
85
  # Asistente Pharma.IA
86
  Realiza tus consultas sobre nuestras actividades y servicios
87
  """)
 
88
  with gr.Row():
89
  with gr.Column():
90
- pregunta = gr.Text(label="Consultas", placeholder='Escribe tu pregunta aquí...')
91
-
92
- with gr.Row():
 
 
93
  btn_send = gr.Button(value="Preguntar", variant="primary")
94
  clear = gr.Button(value="Limpiar")
95
 
96
- #gr.Examples(label="Ejemplos", examples=[""], inputs=[pregunta])
97
 
98
- with gr.Column():
99
- response = gr.Textbox(label="Respuesta")
 
 
 
100
 
101
- btn_send.click(responder, inputs=[pregunta], outputs=[response])
102
- clear.click(lambda: None, None, pregunta, queue=False)
103
 
104
  demo.queue()
105
  demo.launch()
 
51
  ### Inicio context ###
52
 
53
  # load index
54
+ system_prompt = """Eres el asistente virtual de la empresa Pharma.IA, responde las consultas como un experto en fabricacion de medicamentos, validacion de software e inteligencia artificial. Responder en español y en forma breve.
55
  Cuando no tengas la respuesta indica al usuario que consulte a info@pharma-ia.com.ar. Consulta:
56
+ """
57
  ### Fin context ###
58
 
59
 
 
63
  import textwrap
64
 
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  # Definir la interfaz de usuario con Gradio
67
  with gr.Blocks(theme='sudeepshouche/minimalist') as demo:
68
+ chat_history = []
69
+ chat_history_engine = []
70
+
71
+
72
+
73
+ def refresh(chat_history):
74
+ global kg_data
75
+ global chat_history_engine
76
+ kg_data = []
77
+ chat_history_engine = []
78
+ chat_history = [[None, None]]
79
+ gr.Info("¡Listo! Ya puedes seguir chateando.")
80
+ return chat_history
81
+
82
+
83
+ def summarize_assistant_messages(chat_history: List[ChatMessage]) -> List[ChatMessage]:
84
+ # Encontrar la anteúltima respuesta del asistente
85
+ assistant_messages = [msg for msg in chat_history if msg.role == MessageRole.ASSISTANT]
86
+ if len(assistant_messages) < 2:
87
+ return chat_history # No hay suficientes mensajes del asistente para resumir
88
+
89
+ anteultima_respuesta = assistant_messages[-2]
90
+
91
+ # Usar GPT-3.5 para generar un resumen de la anteúltima respuesta del asistente
92
+ prompt = Prompt(f"Responder SOLO con un resumen completo pero más corto del siguiente texto: \n\n{anteultima_respuesta.content}")
93
+ llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1)
94
+ response = llm.predict(prompt)
95
+
96
+ # Crear un nuevo ChatMessage con el resumen como contenido y el rol de asistente
97
+ summarized_message = ChatMessage(content=response, role=MessageRole.ASSISTANT)
98
+
99
+ # Reconstruir el historial de chat reemplazando la anteúltima respuesta del asistente con el resumen
100
+ new_chat_history = [msg if msg != anteultima_respuesta else summarized_message for msg in chat_history]
101
+
102
+ return new_chat_history
103
+
104
+
105
+ def respond(message, chat_history):
106
+ global chat_history_engine
107
+ global result_metadata
108
+
109
+ # Si chat_history está vacío, inicialízalo con el mensaje del usuario actual
110
+ if not chat_history:
111
+ chat_history = [[message, ""]]
112
+ else:
113
+ # Si chat_history no está vacío, agrega el mensaje actual al final de la lista
114
+ chat_history.append([message, ""])
115
+
116
+ chat_history_engine = summarize_assistant_messages(chat_history_engine)
117
+ #chat_history_engine.append(ChatMessage(role=MessageRole.USER, content=message))
118
+ response = chat_engine.stream_chat(message, chat_history=chat_history_engine)
119
+
120
+
121
+ for text in response.response_gen:
122
+ chat_history[-1][1] += text # Agrega el texto de respuesta al último mensaje en chat_history
123
+ yield "", chat_history
124
+
125
+ print("----------")
126
+ print(memory.get_all())
127
+
128
+
129
+
130
+
131
  gr.Markdown("""
132
  # Asistente Pharma.IA
133
  Realiza tus consultas sobre nuestras actividades y servicios
134
  """)
135
+
136
  with gr.Row():
137
  with gr.Column():
138
+ chatbot = gr.Chatbot(show_label=False, show_copy_button=True, ) #layout="panel"
139
+ pregunta = gr.Textbox(show_label=False, autofocus=True, placeholder="Realiza tu consulta...")
140
+ pregunta.submit(respond, [pregunta, chatbot], [pregunta, chatbot])
141
+
142
+ with gr.Row():
143
  btn_send = gr.Button(value="Preguntar", variant="primary")
144
  clear = gr.Button(value="Limpiar")
145
 
 
146
 
147
+ btn_send.click(respond, [pregunta, chatbot], [pregunta, chatbot])
148
+
149
+ clear.click(refresh, inputs=[chatbot], outputs=[chatbot])
150
+
151
+ #response.change(visible, [], [btn_graph])
152
 
 
 
153
 
154
  demo.queue()
155
  demo.launch()