File size: 2,242 Bytes
853a257
 
eab1cde
26610a8
853a257
 
eab1cde
26610a8
eab1cde
 
 
853a257
eab1cde
26610a8
 
 
 
eab1cde
26610a8
eab1cde
26610a8
eab1cde
 
26610a8
eab1cde
853a257
26610a8
 
853a257
eab1cde
853a257
eab1cde
 
 
 
 
 
 
853a257
eab1cde
 
 
 
 
 
 
 
26610a8
eab1cde
 
 
 
 
 
 
 
26610a8
 
eab1cde
26610a8
 
 
 
eab1cde
 
26610a8
eab1cde
26610a8
853a257
eab1cde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import gradio as gr
import os
import re
import numpy as np
from metrology_rag import MetrologyRAGSystem

class CalibrationAssistant:
    def __init__(self):
        # Inicializa com documentos pré-carregados
        self.rag_system = MetrologyRAGSystem()
        self.rag_system.initialize_system("rag_documents")
        
    def technical_query(self, query):
        try:
            response = self.rag_system.generate_technical_response(query)
            return self._clean_response(response)
        except Exception as e:
            return f"Erro na consulta: {str(e)}"

    def analyze_report(self, file):
        try:
            analysis = self.rag_system.analyze_metrology_report(file.name)
            return self._clean_response(analysis)
        except Exception as e:
            return f"Erro na análise: {str(e)}"

    def _clean_response(self, text):
        return re.sub(r'\x1B\[[0-?]*[ -/]*[@-~]', '', text)

assistant = CalibrationAssistant()

css = """
footer {visibility: hidden}
.markdown {max-width: 95% !important}
"""

with gr.Blocks(css=css, title="Assistente de Metrologia") as demo:
    gr.Markdown("# 🔧 Assistente de Metrologia Certificada")
    
    with gr.Tab("Consulta Técnica"):
        gr.Markdown("### Sistema RAG com Documentação Pré-Carregada")
        query_input = gr.Textbox(
            label="Faça sua consulta técnica",
            placeholder="Ex: Qual o procedimento para calibração de micrômetros?..."
        )
        query_btn = gr.Button("Enviar")
        response_output = gr.Markdown(label="Resposta Técnica Certificada")
        
    with gr.Tab("Análise de Relatório"):
        gr.Markdown("### Verificação de Conformidade de Relatórios")
        report_input = gr.File(
            label="Carregue seu relatório de calibração (PDF)",
            file_types=[".pdf"]
        )
        analyze_btn = gr.Button("Analisar")
        analysis_output = gr.Markdown(label="Resultado da Análise")
    
    query_btn.click(
        assistant.technical_query,
        inputs=query_input,
        outputs=response_output
    )
    
    analyze_btn.click(
        assistant.analyze_report,
        inputs=report_input,
        outputs=analysis_output
    )

demo.launch()