#!/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)