Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -202,83 +202,64 @@ def demo():
|
|
202 |
|
203 |
with gr.Tab("Etapa 1 - Carregar PDF"):
|
204 |
with gr.Row():
|
205 |
-
document = gr.Files(height=100, file_count="multiple", file_types=["pdf"], interactive=True, label="Carregue seus documentos PDF (único ou múltiplos)")
|
206 |
-
# upload_btn = gr.UploadButton("Carregando documento...", height=100, file_count="multiple", file_types=["pdf"], scale=1)
|
207 |
|
208 |
with gr.Tab("Etapa 2 - Processar documento"):
|
209 |
with gr.Row():
|
210 |
-
db_btn = gr.Radio(["ChromaDB"], label="Tipo de banco de dados vetorial", value
|
211 |
with gr.Accordion("Opções avançadas - Divisor de texto do documento", open=False):
|
212 |
with gr.Row():
|
213 |
-
slider_chunk_size = gr.Slider(minimum
|
214 |
with gr.Row():
|
215 |
-
slider_chunk_overlap = gr.Slider(minimum
|
216 |
with gr.Row():
|
217 |
-
db_progress = gr.Textbox(label="
|
218 |
with gr.Row():
|
219 |
-
db_btn = gr.Button("Gerar banco de dados vetorial")
|
220 |
|
221 |
with gr.Tab("Etapa 3 - Inicializar cadeia de QA"):
|
222 |
with gr.Row():
|
223 |
-
llm_btn = gr.Radio(list_llm_simple,
|
224 |
-
label="Modelos LLM", value = list_llm_simple[0], type="index", info="Escolha seu modelo LLM")
|
225 |
with gr.Accordion("Opções avançadas - Modelo LLM", open=False):
|
226 |
with gr.Row():
|
227 |
-
slider_temperature = gr.Slider(minimum
|
228 |
with gr.Row():
|
229 |
-
slider_maxtokens = gr.Slider(minimum
|
230 |
with gr.Row():
|
231 |
-
slider_topk = gr.Slider(minimum
|
232 |
with gr.Row():
|
233 |
-
llm_progress = gr.Textbox(value="Nenhum",label="
|
234 |
with gr.Row():
|
235 |
-
qachain_btn = gr.Button("Inicializar cadeia de Pergunta e Resposta")
|
236 |
|
237 |
with gr.Tab("Etapa 4 - Chatbot"):
|
238 |
-
chatbot = gr.Chatbot(height=300)
|
239 |
with gr.Accordion("Avançado - Referências do documento", open=False):
|
240 |
with gr.Row():
|
241 |
-
doc_source1 = gr.Textbox(label="Referência 1", lines=2, container=True, scale=20)
|
242 |
-
source1_page = gr.Number(label="Página", scale=1)
|
243 |
with gr.Row():
|
244 |
-
doc_source2 = gr.Textbox(label="Referência 2", lines=2, container=True, scale=20)
|
245 |
-
source2_page = gr.Number(label="Página", scale=1)
|
246 |
with gr.Row():
|
247 |
-
doc_source3 = gr.Textbox(label="Referência 3", lines=2, container=True, scale=20)
|
248 |
-
source3_page = gr.Number(label="Página", scale=1)
|
249 |
with gr.Row():
|
250 |
-
msg = gr.Textbox(placeholder="Digite a mensagem (exemplo: 'Sobre o que é este documento?')", container=True)
|
251 |
with gr.Row():
|
252 |
-
submit_btn = gr.Button("Enviar mensagem")
|
253 |
-
clear_btn = gr.ClearButton([msg, chatbot], value="Limpar conversa")
|
254 |
|
255 |
# Eventos de pré-processamento
|
256 |
-
|
257 |
-
|
258 |
-
inputs=[document, slider_chunk_size, slider_chunk_overlap], \
|
259 |
-
outputs=[vector_db, collection_name, db_progress])
|
260 |
-
qachain_btn.click(initialize_LLM, \
|
261 |
-
inputs=[llm_btn, slider_temperature, slider_maxtokens, slider_topk, vector_db], \
|
262 |
-
outputs=[qa_chain, llm_progress]).then(lambda:[None,"",0,"",0,"",0], \
|
263 |
-
inputs=None, \
|
264 |
-
outputs=[chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], \
|
265 |
-
queue=False)
|
266 |
|
267 |
# Eventos do Chatbot
|
268 |
-
msg.submit(conversation,
|
269 |
-
|
270 |
-
|
271 |
-
queue=False)
|
272 |
-
submit_btn.click(conversation, \
|
273 |
-
inputs=[qa_chain, msg, chatbot], \
|
274 |
-
outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], \
|
275 |
-
queue=False)
|
276 |
-
clear_btn.click(lambda:[None,"",0,"",0,"",0], \
|
277 |
-
inputs=None, \
|
278 |
-
outputs=[chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], \
|
279 |
-
queue=False)
|
280 |
demo.queue().launch(debug=True)
|
281 |
|
282 |
|
283 |
if __name__ == "__main__":
|
284 |
-
demo()
|
|
|
202 |
|
203 |
with gr.Tab("Etapa 1 - Carregar PDF"):
|
204 |
with gr.Row():
|
205 |
+
document = gr.Files(height=100, file_count="multiple", file_types=["pdf"], interactive=True, label="Carregue seus documentos PDF (único ou múltiplos)", info="Selecione um ou mais arquivos PDF para processar.")
|
|
|
206 |
|
207 |
with gr.Tab("Etapa 2 - Processar documento"):
|
208 |
with gr.Row():
|
209 |
+
db_btn = gr.Radio(["ChromaDB"], label="Tipo de banco de dados vetorial", value="ChromaDB", type="index", info="Escolha o banco de dados vetorial para armazenar os embeddings dos documentos.")
|
210 |
with gr.Accordion("Opções avançadas - Divisor de texto do documento", open=False):
|
211 |
with gr.Row():
|
212 |
+
slider_chunk_size = gr.Slider(minimum=100, maximum=1000, value=600, step=20, label="Tamanho do bloco", info="Define o tamanho de cada bloco de texto dividido.", interactive=True)
|
213 |
with gr.Row():
|
214 |
+
slider_chunk_overlap = gr.Slider(minimum=10, maximum=200, value=40, step=10, label="Sobreposição do bloco", info="Define a quantidade de sobreposição entre blocos consecutivos.", interactive=True)
|
215 |
with gr.Row():
|
216 |
+
db_progress = gr.Textbox(label="Progresso do banco de dados vetorial", value="Nenhum", info="Acompanhe o progresso da criação do banco de dados vetorial.")
|
217 |
with gr.Row():
|
218 |
+
db_btn = gr.Button("Gerar banco de dados vetorial", info="Clique para gerar o banco de dados vetorial a partir dos documentos carregados.")
|
219 |
|
220 |
with gr.Tab("Etapa 3 - Inicializar cadeia de QA"):
|
221 |
with gr.Row():
|
222 |
+
llm_btn = gr.Radio(list_llm_simple, label="Modelos LLM", value=list_llm_simple[0], type="index", info="Escolha o modelo de linguagem que será usado para gerar respostas.")
|
|
|
223 |
with gr.Accordion("Opções avançadas - Modelo LLM", open=False):
|
224 |
with gr.Row():
|
225 |
+
slider_temperature = gr.Slider(minimum=0.01, maximum=1.0, value=0.7, step=0.1, label="Temperatura", info="Controla a criatividade das respostas. Valores mais altos geram respostas mais diversificadas.", interactive=True)
|
226 |
with gr.Row():
|
227 |
+
slider_maxtokens = gr.Slider(minimum=224, maximum=4096, value=1024, step=32, label="Máximo de Tokens", info="Define o número máximo de tokens que o modelo pode gerar por resposta.", interactive=True)
|
228 |
with gr.Row():
|
229 |
+
slider_topk = gr.Slider(minimum=1, maximum=10, value=3, step=1, label="Amostras top-k", info="Controla o número de amostras consideradas durante a geração de respostas.", interactive=True)
|
230 |
with gr.Row():
|
231 |
+
llm_progress = gr.Textbox(value="Nenhum", label="Progresso da cadeia QA", info="Acompanhe o progresso da inicialização da cadeia de Pergunta e Resposta.")
|
232 |
with gr.Row():
|
233 |
+
qachain_btn = gr.Button("Inicializar cadeia de Pergunta e Resposta", info="Clique para inicializar a cadeia de Pergunta e Resposta com o modelo LLM selecionado.")
|
234 |
|
235 |
with gr.Tab("Etapa 4 - Chatbot"):
|
236 |
+
chatbot = gr.Chatbot(height=300, label="Chatbot", info="Interaja com o chatbot fazendo perguntas sobre os documentos carregados.")
|
237 |
with gr.Accordion("Avançado - Referências do documento", open=False):
|
238 |
with gr.Row():
|
239 |
+
doc_source1 = gr.Textbox(label="Referência 1", lines=2, container=True, scale=20, info="Trecho do documento referente à primeira fonte de informação.")
|
240 |
+
source1_page = gr.Number(label="Página", scale=1, info="Página do documento onde a referência foi encontrada.")
|
241 |
with gr.Row():
|
242 |
+
doc_source2 = gr.Textbox(label="Referência 2", lines=2, container=True, scale=20, info="Trecho do documento referente à segunda fonte de informação.")
|
243 |
+
source2_page = gr.Number(label="Página", scale=1, info="Página do documento onde a referência foi encontrada.")
|
244 |
with gr.Row():
|
245 |
+
doc_source3 = gr.Textbox(label="Referência 3", lines=2, container=True, scale=20, info="Trecho do documento referente à terceira fonte de informação.")
|
246 |
+
source3_page = gr.Number(label="Página", scale=1, info="Página do documento onde a referência foi encontrada.")
|
247 |
with gr.Row():
|
248 |
+
msg = gr.Textbox(placeholder="Digite a mensagem (exemplo: 'Sobre o que é este documento?')", container=True, label="Mensagem", info="Digite sua pergunta aqui.")
|
249 |
with gr.Row():
|
250 |
+
submit_btn = gr.Button("Enviar mensagem", info="Clique para enviar sua pergunta ao chatbot.")
|
251 |
+
clear_btn = gr.ClearButton([msg, chatbot], value="Limpar conversa", info="Clique para limpar a conversa atual.")
|
252 |
|
253 |
# Eventos de pré-processamento
|
254 |
+
db_btn.click(initialize_database, inputs=[document, slider_chunk_size, slider_chunk_overlap], outputs=[vector_db, collection_name, db_progress])
|
255 |
+
qachain_btn.click(initialize_LLM, inputs=[llm_btn, slider_temperature, slider_maxtokens, slider_topk, vector_db], outputs=[qa_chain, llm_progress]).then(lambda:[None,"",0,"",0,"",0], inputs=None, outputs=[chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], queue=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
|
257 |
# Eventos do Chatbot
|
258 |
+
msg.submit(conversation, inputs=[qa_chain, msg, chatbot], outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], queue=False)
|
259 |
+
submit_btn.click(conversation, inputs=[qa_chain, msg, chatbot], outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], queue=False)
|
260 |
+
clear_btn.click(lambda:[None,"",0,"",0,"",0], inputs=None, outputs=[chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], queue=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
demo.queue().launch(debug=True)
|
262 |
|
263 |
|
264 |
if __name__ == "__main__":
|
265 |
+
demo()
|