Update app.py
Browse files
app.py
CHANGED
@@ -109,6 +109,8 @@ def conversation(qa_chain, message, history):
|
|
109 |
return qa_chain, gr.update(value=""), new_history, response_source1, response_source1_page, response_source2, response_source2_page, response_source3, response_source3_page
|
110 |
|
111 |
|
|
|
|
|
112 |
def demo():
|
113 |
"""Main demo application with enhanced layout"""
|
114 |
theme = gr.themes.Default(
|
@@ -131,6 +133,7 @@ def demo():
|
|
131 |
with gr.Blocks(theme=theme, css=custom_css) as demo:
|
132 |
vector_db = gr.State()
|
133 |
qa_chain = gr.State()
|
|
|
134 |
|
135 |
# Header
|
136 |
gr.HTML(
|
@@ -171,6 +174,14 @@ def demo():
|
|
171 |
type="index"
|
172 |
)
|
173 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
with gr.Accordion("Advanced Settings", open=False):
|
175 |
slider_temperature = gr.Slider(
|
176 |
minimum=0.01,
|
@@ -269,6 +280,12 @@ def demo():
|
|
269 |
)
|
270 |
|
271 |
# Event Handlers
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
db_btn.click(
|
273 |
initialize_database,
|
274 |
inputs=[document],
|
@@ -288,14 +305,14 @@ def demo():
|
|
288 |
|
289 |
msg.submit(
|
290 |
conversation,
|
291 |
-
inputs=[qa_chain, msg, chatbot],
|
292 |
outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page],
|
293 |
queue=False
|
294 |
)
|
295 |
|
296 |
submit_btn.click(
|
297 |
conversation,
|
298 |
-
inputs=[qa_chain, msg, chatbot],
|
299 |
outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page],
|
300 |
queue=False
|
301 |
)
|
@@ -309,5 +326,36 @@ def demo():
|
|
309 |
|
310 |
demo.queue().launch(debug=True)
|
311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
if __name__ == "__main__":
|
313 |
demo()
|
|
|
109 |
return qa_chain, gr.update(value=""), new_history, response_source1, response_source1_page, response_source2, response_source2_page, response_source3, response_source3_page
|
110 |
|
111 |
|
112 |
+
# ... (código anterior permanece igual)
|
113 |
+
|
114 |
def demo():
|
115 |
"""Main demo application with enhanced layout"""
|
116 |
theme = gr.themes.Default(
|
|
|
133 |
with gr.Blocks(theme=theme, css=custom_css) as demo:
|
134 |
vector_db = gr.State()
|
135 |
qa_chain = gr.State()
|
136 |
+
language = gr.State(value="en") # Novo estado para controle de idioma
|
137 |
|
138 |
# Header
|
139 |
gr.HTML(
|
|
|
174 |
type="index"
|
175 |
)
|
176 |
|
177 |
+
# Novo botão de seleção de idioma
|
178 |
+
language_btn = gr.Radio(
|
179 |
+
choices=["English", "Português"],
|
180 |
+
label="Response Language",
|
181 |
+
value="English",
|
182 |
+
type="value"
|
183 |
+
)
|
184 |
+
|
185 |
with gr.Accordion("Advanced Settings", open=False):
|
186 |
slider_temperature = gr.Slider(
|
187 |
minimum=0.01,
|
|
|
280 |
)
|
281 |
|
282 |
# Event Handlers
|
283 |
+
language_btn.change(
|
284 |
+
lambda x: "en" if x == "English" else "pt",
|
285 |
+
inputs=language_btn,
|
286 |
+
outputs=language
|
287 |
+
)
|
288 |
+
|
289 |
db_btn.click(
|
290 |
initialize_database,
|
291 |
inputs=[document],
|
|
|
305 |
|
306 |
msg.submit(
|
307 |
conversation,
|
308 |
+
inputs=[qa_chain, msg, chatbot, language],
|
309 |
outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page],
|
310 |
queue=False
|
311 |
)
|
312 |
|
313 |
submit_btn.click(
|
314 |
conversation,
|
315 |
+
inputs=[qa_chain, msg, chatbot, language],
|
316 |
outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page],
|
317 |
queue=False
|
318 |
)
|
|
|
326 |
|
327 |
demo.queue().launch(debug=True)
|
328 |
|
329 |
+
# Modifique a função de conversão para incluir o idioma
|
330 |
+
def conversation(qa_chain, message, history, lang):
|
331 |
+
"""Handle conversation and document analysis"""
|
332 |
+
# Adicione instrução de idioma à mensagem
|
333 |
+
if lang == "pt":
|
334 |
+
message += " (Responda em Português)"
|
335 |
+
else:
|
336 |
+
message += " (Respond in English)"
|
337 |
+
|
338 |
+
formatted_chat_history = format_chat_history(message, history)
|
339 |
+
response = qa_chain.invoke({"question": message, "chat_history": formatted_chat_history})
|
340 |
+
response_answer = response["answer"]
|
341 |
+
|
342 |
+
# Remova a instrução de idioma do histórico do chat
|
343 |
+
if "(Respond" in message:
|
344 |
+
message = message.split(" (Respond")[0]
|
345 |
+
|
346 |
+
if response_answer.find("Helpful Answer:") != -1:
|
347 |
+
response_answer = response_answer.split("Helpful Answer:")[-1]
|
348 |
+
|
349 |
+
response_sources = response["source_documents"]
|
350 |
+
response_source1 = response_sources[0].page_content.strip()
|
351 |
+
response_source2 = response_sources[1].page_content.strip()
|
352 |
+
response_source3 = response_sources[2].page_content.strip()
|
353 |
+
response_source1_page = response_sources[0].metadata["page"] + 1
|
354 |
+
response_source2_page = response_sources[1].metadata["page"] + 1
|
355 |
+
response_source3_page = response_sources[2].metadata["page"] + 1
|
356 |
+
new_history = history + [(message, response_answer)]
|
357 |
+
|
358 |
+
return qa_chain, gr.update(value=""), new_history, response_source1, response_source1_page, response_source2, response_source2_page, response_source3, response_source3_page
|
359 |
+
|
360 |
if __name__ == "__main__":
|
361 |
demo()
|