File size: 4,278 Bytes
14968eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/usr/bin/env python3
"""
Chatbot FTTH - Demonstração de Engenharia de Fibra Óptica
Interface web com Gradio + Llama 3.3 Instruct via NVIDIA API
Otimizado para RTX 5090
"""

import gradio as gr
import os
from openai import OpenAI

# Configuração da API NVIDIA
NVIDIA_API_KEY = os.environ.get("NVIDIA_API_KEY")

# Inicializar cliente OpenAI com endpoint NVIDIA
if NVIDIA_API_KEY:
    client = OpenAI(
        base_url="https://integrate.api.nvidia.com/v1",
        api_key=NVIDIA_API_KEY
    )
else:
    client = None

# Sistema de prompt para o chatbot FTTH
SYSTEM_PROMPT = """Você é um especialista em engenharia de FTTH (Fiber to the Home) - Fibra Óptica até à Casa.

Sua função é responder perguntas sobre:
- Projetos e implementação de FTTH
- Infraestrutura de fibra óptica
- Tecnologias de acesso à fibra
- Benefícios e características do FTTH
- Desafios técnicos e soluções
- Padrões e regulamentações
- Custos e viabilidade econômica
- Comparação com outras tecnologias (ADSL, VDSL, 4G/5G)
- Instalação e manutenção de redes FTTH
- Componentes de rede (OLT, ONT, splitters, cabos, etc.)

Responda de forma clara, profissional e educativa, adaptando o nível de detalhe técnico à pergunta.
Quando apropriado, forneça exemplos práticos e recomendações para projetos de engenharia.

Mantenha as respostas concisas mas informativas, ideais para uma apresentação profissional."""

def chat_ftth_nvidia(message: str, history: list) -> str:
    """
    Função que processa mensagens sobre FTTH usando Llama 3.3 Instruct via NVIDIA API
    """
    
    # Verificar se o cliente está inicializado
    if not client:
        return "❌ Erro: NVIDIA_API_KEY não está configurada. Configure nas Settings do Space."
    
    # Construir histórico de mensagens para a API
    messages = [{"role": "system", "content": SYSTEM_PROMPT}]
    
    # Adicionar histórico de conversação
    for msg in history:
        messages.append(msg)
    
    # Adicionar mensagem atual
    messages.append({"role": "user", "content": message})
    
    try:
        # Chamar API NVIDIA com cliente OpenAI
        completion = client.chat.completions.create(
            model="meta/llama-3.3-70b-instruct",
            messages=messages,
            temperature=0.7,
            top_p=0.7,
            max_tokens=1024,
            stream=False
        )
        
        return completion.choices[0].message.content
    
    except Exception as e:
        return f"❌ Erro ao processar sua pergunta: {str(e)}"


# Criar interface Gradio
with gr.Blocks(title="Chatbot FTTH") as demo:
    gr.Markdown("""
    # 🌐 Chatbot FTTH - Engenharia de Fibra Óptica
    
    Bem-vindo ao assistente especializado em **FTTH (Fiber to the Home)**.
    
    Faça perguntas sobre projetos de fibra óptica, infraestrutura, tecnologias e implementação.
    
    **Tecnologia:** Llama 3.3 Instruct (NVIDIA API) + RTX 5090
    """)
    
    chatbot = gr.ChatInterface(
        chat_ftth_nvidia,
        examples=[
            "O que é FTTH e quais são seus principais benefícios?",
            "Qual é a diferença entre FTTH, FTTP e FTTC?",
            "Quais são os componentes principais de uma rede FTTH?",
            "Como é feita a instalação de fibra óptica em uma residência?",
            "Qual é a velocidade típica de uma conexão FTTH?",
            "Quais são os desafios na implementação de FTTH em áreas rurais?",
            "Como funciona um splitter óptico em uma rede FTTH?",
            "Qual é o custo aproximado de implementação de FTTH por km?",
        ],
        title="Assistente FTTH",
        description="Faça suas perguntas sobre FTTH e receba respostas especializadas.",
    )
    
    gr.Markdown("""
    ---
    
    **Dicas de uso:**
    - Faça perguntas específicas sobre aspectos técnicos do FTTH
    - Use exemplos práticos para obter respostas mais detalhadas
    - O chatbot mantém o contexto da conversa para respostas mais relevantes
    
    **Tecnologia:**
    - Modelo: Llama 3.3 Instruct (Meta)
    - API: NVIDIA Cloud
    - GPU: RTX 5090 (otimizada)
    
    *Desenvolvido para demonstração em reuniões de engenharia*
    """)


if __name__ == "__main__":
   demo.launch(ssr_mode=False)