Commit
•
f040e7b
1
Parent(s):
b4b6a8d
Update app.py
Browse files
app.py
CHANGED
@@ -51,9 +51,9 @@ exec(os.environ.get('storage_context'))
|
|
51 |
### Inicio context ###
|
52 |
|
53 |
# load index
|
54 |
-
|
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 |
-
|
91 |
-
|
92 |
-
|
|
|
|
|
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 |
-
|
99 |
-
|
|
|
|
|
|
|
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()
|