DHEIVER commited on
Commit
26610a8
·
verified ·
1 Parent(s): 2ee5fb0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +91 -57
app.py CHANGED
@@ -1,73 +1,107 @@
1
  import gradio as gr
2
  import re
3
  import os
 
4
  from metrology_rag import MetrologyRAGSystem
5
 
6
- rag_system = None
 
 
 
7
 
8
- def strip_ansi_codes(text):
9
- return re.sub(r'\x1B\[[0-?]*[ -/]*[@-~]', '', text)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
- def initialize_system(files):
12
- global rag_system
13
- try:
14
- temp_dir = "/kaggle/working/temp_pdfs/"
15
- os.makedirs(temp_dir, exist_ok=True)
16
 
17
- for file in files:
18
- file_path = os.path.join(temp_dir, os.path.basename(file.name))
19
- with open(file_path, "wb") as f:
20
- f.write(file.read())
 
 
 
 
 
 
21
 
22
- rag_system = MetrologyRAGSystem()
23
- rag_system.initialize_system(temp_dir)
24
- return f"✅ Sistema inicializado com {len(rag_system.documents)} documentos!"
25
- except Exception as e:
26
- return f"❌ Erro: {str(e)}"
 
27
 
28
- def answer_query(query):
29
- if not rag_system:
30
- return "⚠️ Inicialize o sistema primeiro!"
31
- try:
32
- response = rag_system.generate_technical_response(query)
33
- return strip_ansi_codes(response)
34
- except Exception as e:
35
- return f"Erro: {str(e)}"
36
 
37
- def analyze_report(file):
38
- if not rag_system:
39
- return "⚠️ Sistema não inicializado!"
40
- try:
41
- temp_path = f"/kaggle/working/{os.path.basename(file.name)}"
42
- with open(temp_path, "wb") as f:
43
- f.write(file.read())
44
- analysis = rag_system.analyze_metrology_report(temp_path)
45
- return strip_ansi_codes(analysis)
46
- except Exception as e:
47
- return f"Erro: {str(e)}"
48
 
49
- with gr.Blocks(title="Sistema Metrologia v2.1") as demo:
50
- gr.Markdown("# 🔧 Sistema de Metrologia Inteligente")
51
 
52
- with gr.Tab("Inicialização"):
53
- gr.Markdown("### Carregar Documentos PDF")
54
- file_input = gr.File(file_count="multiple", file_types=[".pdf"])
55
- init_btn = gr.Button("Inicializar")
56
- init_status = gr.Textbox(label="Status")
57
- init_btn.click(initialize_system, file_input, init_status)
58
-
59
- with gr.Tab("Consulta"):
60
- gr.Markdown("### Consulta Técnica")
61
- query_input = gr.Textbox(label="Sua consulta")
62
- query_btn = gr.Button("Enviar")
63
- response_output = gr.Markdown(label="Resposta")
64
- query_btn.click(answer_query, query_input, response_output)
 
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- with gr.Tab("Análise"):
67
- gr.Markdown("### Analisar Relatório")
68
- report_input = gr.File(file_count="single", file_types=[".pdf"])
69
- analyze_btn = gr.Button("Analisar")
70
- analysis_output = gr.Markdown(label="Resultado")
71
- analyze_btn.click(analyze_report, report_input, analysis_output)
 
 
 
 
 
 
 
 
 
 
 
72
 
73
  demo.launch(debug=True)
 
1
  import gradio as gr
2
  import re
3
  import os
4
+ import numpy as np
5
  from metrology_rag import MetrologyRAGSystem
6
 
7
+ css = """
8
+ footer {visibility: hidden}
9
+ .markdown {max-width: 95% !important}
10
+ """
11
 
12
+ class SpaceInterface:
13
+ def __init__(self):
14
+ self.rag_system = None
15
+ self.current_response = ""
16
+
17
+ def initialize_system(self, files):
18
+ try:
19
+ temp_dir = "/tmp/metrology_pdfs"
20
+ os.makedirs(temp_dir, exist_ok=True)
21
+
22
+ for file in files:
23
+ file_path = os.path.join(temp_dir, os.path.basename(file.name))
24
+ with open(file_path, "wb") as f:
25
+ f.write(file.read())
26
+
27
+ self.rag_system = MetrologyRAGSystem()
28
+ self.rag_system.initialize_system(temp_dir)
29
+ return f"✅ Sistema inicializado com {len(self.rag_system.documents)} documentos!"
30
+ except Exception as e:
31
+ return f"❌ Erro: {str(e)}"
32
 
33
+ def process_query(self, query):
34
+ if not self.rag_system:
35
+ return "⚠️ Inicialize o sistema primeiro com documentos PDF!"
 
 
36
 
37
+ try:
38
+ response = self.rag_system.generate_technical_response(query)
39
+ self.current_response = response
40
+ return self._clean_response(response)
41
+ except Exception as e:
42
+ return f"Erro: {str(e)}"
43
+
44
+ def generate_report(self, report_title):
45
+ if not self.rag_system or not self.current_response:
46
+ return None, "⚠️ Execute uma consulta primeiro!"
47
 
48
+ try:
49
+ report_path = "/tmp/relatorio_tecnico.md"
50
+ self.rag_system.generate_report(report_title, self.current_response, report_path)
51
+ return report_path, "✅ Relatório gerado com sucesso!"
52
+ except Exception as e:
53
+ return None, f"❌ Falha: {str(e)}"
54
 
55
+ def _clean_response(self, text):
56
+ return re.sub(r'\x1B\[[0-?]*[ -/]*[@-~]', '', text)
 
 
 
 
 
 
57
 
58
+ interface = SpaceInterface()
 
 
 
 
 
 
 
 
 
 
59
 
60
+ with gr.Blocks(css=css, title="Metrology Assistant") as demo:
61
+ gr.Markdown("# 🔧 Assistente de Metrologia Inteligente")
62
 
63
+ with gr.Row():
64
+ with gr.Column(scale=2):
65
+ file_input = gr.File(
66
+ file_count="multiple",
67
+ file_types=[".pdf"],
68
+ label="Upload de Documentos Técnicos"
69
+ )
70
+ init_btn = gr.Button("Inicializar Sistema")
71
+ init_status = gr.Textbox(label="Status", interactive=False)
72
+
73
+ with gr.Column(scale=3):
74
+ query_input = gr.Textbox(
75
+ label="Consulta Técnica",
76
+ placeholder="Digite sua pergunta sobre metrologia..."
77
+ )
78
+ query_btn = gr.Button("Enviar Consulta")
79
+ response_output = gr.Markdown(label="Resposta Técnica")
80
+
81
+ report_input = gr.Textbox(
82
+ label="Título do Relatório",
83
+ placeholder="Digite o título do relatório..."
84
+ )
85
+ report_btn = gr.Button("Gerar Relatório")
86
+ report_download = gr.File(label="Download do Relatório")
87
+ report_status = gr.Markdown()
88
 
89
+ init_btn.click(
90
+ interface.initialize_system,
91
+ inputs=file_input,
92
+ outputs=init_status
93
+ )
94
+
95
+ query_btn.click(
96
+ interface.process_query,
97
+ inputs=query_input,
98
+ outputs=response_output
99
+ )
100
+
101
+ report_btn.click(
102
+ interface.generate_report,
103
+ inputs=report_input,
104
+ outputs=[report_download, report_status]
105
+ )
106
 
107
  demo.launch(debug=True)