natalieac commited on
Commit
6c9e178
·
verified ·
1 Parent(s): 143a91a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -12
app.py CHANGED
@@ -6,8 +6,7 @@ from backend.rag import retriever
6
  from backend.llm_local import generate
7
  from backend.summarizer import extractive_sents, map_reduce
8
 
9
-
10
-
11
  settings.RAW_DIR.mkdir(parents=True, exist_ok=True)
12
  settings.INDEX_DIR.mkdir(parents=True, exist_ok=True)
13
 
@@ -25,7 +24,7 @@ def upload_files(files):
25
  dest = settings.RAW_DIR / f.name
26
  dest.parent.mkdir(parents=True, exist_ok=True)
27
  f.save(str(dest))
28
- return gr.update(choices=list_uploaded_files(), value=None), "Upload concluído..."
29
 
30
  def build_index():
31
  global STATE_INDEXED
@@ -34,14 +33,14 @@ def build_index():
34
  retriever.build()
35
  retriever.load()
36
  STATE_INDEXED = True
37
- return "Índice criado... Vá para a aba Conversar :) "
38
 
39
  def chat_answer(history, message):
40
  if not STATE_INDEXED:
41
  try:
42
  retriever.load()
43
  except Exception:
44
- return history + [("system","Erro.")], ""
45
  hits = retriever.search(message, top_k=settings.TOP_K)
46
  ctx = hits[:settings.TOP_K_RERANK]
47
  ans = generate(message, ctx)
@@ -53,24 +52,24 @@ def summarize_run(filename, pages, chapter, query, style, length):
53
  try:
54
  retriever.load()
55
  except Exception:
56
- return "Erro."
57
  page_start = page_end = None
58
  if pages:
59
  try:
60
  a,b = pages.split("-"); page_start, page_end = int(a), int(b)
61
  except:
62
- return "Formato de páginas inválido. Use ex: 01-10."
63
  if chapter and filename:
64
  rng = retriever.find_chapter_range(filename, chapter)
65
  if not rng:
66
- return "Não encontrado."
67
  page_start, page_end = rng["start"], rng["end"]
68
  hits = retriever.search(query or "resumo", top_k=16,
69
  filename=filename or None,
70
  page_start=page_start, page_end=page_end)
71
  if not hits:
72
- return "Não encontrado."
73
-
74
  sents = extractive_sents(hits, query, max_sents=80)
75
  if sents:
76
  synth = [{"text": s, "meta": {"page_num": p}} for s,p in sents]
@@ -79,8 +78,8 @@ def summarize_run(filename, pages, chapter, query, style, length):
79
  final = map_reduce(hits, focus=query or "resumo", style=style, length=length)
80
  return final
81
 
82
- with gr.Blocks(title="Agente de Estudos IA") as demo:
83
- gr.Markdown("# Agente de Estudos IA\nCarregue seu **livro** e **slides** e estude com o bot.")
84
 
85
  with gr.Tab("Upload & Indexar"):
86
  files_in = gr.File(label="Envie PDFs / PPTX / TXT", file_count="multiple", type="filepath")
@@ -112,3 +111,6 @@ with gr.Blocks(title="Agente de Estudos IA") as demo:
112
 
113
  run_btn.click(summarize_run,
114
  inputs=[file_dd, pages_tb, chapter_tb, query_tb, style_dd, length_dd],
 
 
 
 
6
  from backend.llm_local import generate
7
  from backend.summarizer import extractive_sents, map_reduce
8
 
9
+ # inicializa diretórios
 
10
  settings.RAW_DIR.mkdir(parents=True, exist_ok=True)
11
  settings.INDEX_DIR.mkdir(parents=True, exist_ok=True)
12
 
 
24
  dest = settings.RAW_DIR / f.name
25
  dest.parent.mkdir(parents=True, exist_ok=True)
26
  f.save(str(dest))
27
+ return gr.update(choices=list_uploaded_files(), value=None), "Upload feito! Clique em Indexar."
28
 
29
  def build_index():
30
  global STATE_INDEXED
 
33
  retriever.build()
34
  retriever.load()
35
  STATE_INDEXED = True
36
+ return "Índice criado/carregado. Vá para a aba Conversar ou Resumir."
37
 
38
  def chat_answer(history, message):
39
  if not STATE_INDEXED:
40
  try:
41
  retriever.load()
42
  except Exception:
43
+ return history + [("system","⚠️ Monte o índice na aba Upload & Indexar")], ""
44
  hits = retriever.search(message, top_k=settings.TOP_K)
45
  ctx = hits[:settings.TOP_K_RERANK]
46
  ans = generate(message, ctx)
 
52
  try:
53
  retriever.load()
54
  except Exception:
55
+ return "⚠️ Monte o índice na aba Upload & Indexar."
56
  page_start = page_end = None
57
  if pages:
58
  try:
59
  a,b = pages.split("-"); page_start, page_end = int(a), int(b)
60
  except:
61
+ return "Formato de páginas inválido. Use '12-30'."
62
  if chapter and filename:
63
  rng = retriever.find_chapter_range(filename, chapter)
64
  if not rng:
65
+ return "Capítulo não encontrado no sumário (TOC)."
66
  page_start, page_end = rng["start"], rng["end"]
67
  hits = retriever.search(query or "resumo", top_k=16,
68
  filename=filename or None,
69
  page_start=page_start, page_end=page_end)
70
  if not hits:
71
+ return "Nenhum conteúdo encontrado para o escopo."
72
+ # pequenas sentenças chaves + map-reduce
73
  sents = extractive_sents(hits, query, max_sents=80)
74
  if sents:
75
  synth = [{"text": s, "meta": {"page_num": p}} for s,p in sents]
 
78
  final = map_reduce(hits, focus=query or "resumo", style=style, length=length)
79
  return final
80
 
81
+ with gr.Blocks(title="Agente de Estudos IA 📚") as demo:
82
+ gr.Markdown("# Agente de Estudos IA 📚\nCarregue seu **livro** e **slides** e estude com o bot.")
83
 
84
  with gr.Tab("Upload & Indexar"):
85
  files_in = gr.File(label="Envie PDFs / PPTX / TXT", file_count="multiple", type="filepath")
 
111
 
112
  run_btn.click(summarize_run,
113
  inputs=[file_dd, pages_tb, chapter_tb, query_tb, style_dd, length_dd],
114
+ outputs=out_md)
115
+
116
+ demo.queue().launch()