Files changed (1) hide show
  1. app.py +126 -0
app.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Chatbot FTTH - Demonstração de Engenharia de Fibra Óptica
4
+ Interface web com Gradio + Llama 3.3 Instruct via NVIDIA API
5
+ Otimizado para RTX 5090
6
+ """
7
+
8
+ import gradio as gr
9
+ import os
10
+ from openai import OpenAI
11
+
12
+ # Configuração da API NVIDIA
13
+ NVIDIA_API_KEY = os.environ.get("NVIDIA_API_KEY")
14
+
15
+ # Inicializar cliente OpenAI com endpoint NVIDIA
16
+ if NVIDIA_API_KEY:
17
+ client = OpenAI(
18
+ base_url="https://integrate.api.nvidia.com/v1",
19
+ api_key=NVIDIA_API_KEY
20
+ )
21
+ else:
22
+ client = None
23
+
24
+ # Sistema de prompt para o chatbot FTTH
25
+ SYSTEM_PROMPT = """Você é um especialista em engenharia de FTTH (Fiber to the Home) - Fibra Óptica até à Casa.
26
+
27
+ Sua função é responder perguntas sobre:
28
+ - Projetos e implementação de FTTH
29
+ - Infraestrutura de fibra óptica
30
+ - Tecnologias de acesso à fibra
31
+ - Benefícios e características do FTTH
32
+ - Desafios técnicos e soluções
33
+ - Padrões e regulamentações
34
+ - Custos e viabilidade econômica
35
+ - Comparação com outras tecnologias (ADSL, VDSL, 4G/5G)
36
+ - Instalação e manutenção de redes FTTH
37
+ - Componentes de rede (OLT, ONT, splitters, cabos, etc.)
38
+
39
+ Responda de forma clara, profissional e educativa, adaptando o nível de detalhe técnico à pergunta.
40
+ Quando apropriado, forneça exemplos práticos e recomendações para projetos de engenharia.
41
+
42
+ Mantenha as respostas concisas mas informativas, ideais para uma apresentação profissional."""
43
+
44
+ def chat_ftth_nvidia(message: str, history: list) -> str:
45
+ """
46
+ Função que processa mensagens sobre FTTH usando Llama 3.3 Instruct via NVIDIA API
47
+ """
48
+
49
+ # Verificar se o cliente está inicializado
50
+ if not client:
51
+ return "❌ Erro: NVIDIA_API_KEY não está configurada. Configure nas Settings do Space."
52
+
53
+ # Construir histórico de mensagens para a API
54
+ messages = [{"role": "system", "content": SYSTEM_PROMPT}]
55
+
56
+ # Adicionar histórico de conversação
57
+ for msg in history:
58
+ messages.append(msg)
59
+
60
+ # Adicionar mensagem atual
61
+ messages.append({"role": "user", "content": message})
62
+
63
+ try:
64
+ # Chamar API NVIDIA com cliente OpenAI
65
+ completion = client.chat.completions.create(
66
+ model="meta/llama-3.3-70b-instruct",
67
+ messages=messages,
68
+ temperature=0.7,
69
+ top_p=0.7,
70
+ max_tokens=1024,
71
+ stream=False
72
+ )
73
+
74
+ return completion.choices[0].message.content
75
+
76
+ except Exception as e:
77
+ return f"❌ Erro ao processar sua pergunta: {str(e)}"
78
+
79
+
80
+ # Criar interface Gradio
81
+ with gr.Blocks(title="Chatbot FTTH") as demo:
82
+ gr.Markdown("""
83
+ # 🌐 Chatbot FTTH - Engenharia de Fibra Óptica
84
+
85
+ Bem-vindo ao assistente especializado em **FTTH (Fiber to the Home)**.
86
+
87
+ Faça perguntas sobre projetos de fibra óptica, infraestrutura, tecnologias e implementação.
88
+
89
+ **Tecnologia:** Llama 3.3 Instruct (NVIDIA API) + RTX 5090
90
+ """)
91
+
92
+ chatbot = gr.ChatInterface(
93
+ chat_ftth_nvidia,
94
+ examples=[
95
+ "O que é FTTH e quais são seus principais benefícios?",
96
+ "Qual é a diferença entre FTTH, FTTP e FTTC?",
97
+ "Quais são os componentes principais de uma rede FTTH?",
98
+ "Como é feita a instalação de fibra óptica em uma residência?",
99
+ "Qual é a velocidade típica de uma conexão FTTH?",
100
+ "Quais são os desafios na implementação de FTTH em áreas rurais?",
101
+ "Como funciona um splitter óptico em uma rede FTTH?",
102
+ "Qual é o custo aproximado de implementação de FTTH por km?",
103
+ ],
104
+ title="Assistente FTTH",
105
+ description="Faça suas perguntas sobre FTTH e receba respostas especializadas.",
106
+ )
107
+
108
+ gr.Markdown("""
109
+ ---
110
+
111
+ **Dicas de uso:**
112
+ - Faça perguntas específicas sobre aspectos técnicos do FTTH
113
+ - Use exemplos práticos para obter respostas mais detalhadas
114
+ - O chatbot mantém o contexto da conversa para respostas mais relevantes
115
+
116
+ **Tecnologia:**
117
+ - Modelo: Llama 3.3 Instruct (Meta)
118
+ - API: NVIDIA Cloud
119
+ - GPU: RTX 5090 (otimizada)
120
+
121
+ *Desenvolvido para demonstração em reuniões de engenharia*
122
+ """)
123
+
124
+
125
+ if __name__ == "__main__":
126
+ demo.launch()