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