DHEIVER commited on
Commit
12508c9
·
verified ·
1 Parent(s): 099bb87

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -47
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 = "ChromaDB", type="index", info="Escolha o banco de dados vetorial")
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 = 100, maximum = 1000, value=600, step=20, label="Tamanho do bloco", info="Tamanho do bloco", interactive=True)
214
  with gr.Row():
215
- slider_chunk_overlap = gr.Slider(minimum = 10, maximum = 200, value=40, step=10, label="Sobreposição do bloco", info="Sobreposição do bloco", interactive=True)
216
  with gr.Row():
217
- db_progress = gr.Textbox(label="Inicialização do banco de dados vetorial", value="Nenhum")
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 = 0.01, maximum = 1.0, value=0.7, step=0.1, label="Temperatura", info="Temperatura do modelo", interactive=True)
228
  with gr.Row():
229
- slider_maxtokens = gr.Slider(minimum = 224, maximum = 4096, value=1024, step=32, label="Máximo de Tokens", info="Máximo de tokens do modelo", interactive=True)
230
  with gr.Row():
231
- slider_topk = gr.Slider(minimum = 1, maximum = 10, value=3, step=1, label="Amostras top-k", info="Amostras top-k do modelo", interactive=True)
232
  with gr.Row():
233
- llm_progress = gr.Textbox(value="Nenhum",label="Inicialização da cadeia QA")
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
- #upload_btn.upload(upload_file, inputs=[upload_btn], outputs=[document])
257
- db_btn.click(initialize_database, \
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
- inputs=[qa_chain, msg, chatbot], \
270
- outputs=[qa_chain, msg, chatbot, doc_source1, source1_page, doc_source2, source2_page, doc_source3, source3_page], \
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()