Sistema inteligente de atendimento automatizado desenvolvido para a Controladoria e Auditoria-Geral do Estado do Rio Grande do Sul (CAGE-RS), integrando tecnologias avançadas de IA generativa com Azure OpenAI.
O Assistente Virtual CAGE-RS é uma solução enterprise de chatbot inteligente que utiliza arquitetura RAG (Retrieval-Augmented Generation) avançada para fornecer respostas precisas e contextualizadas sobre:
- Convênios - Formalização, execução e prestação de contas
- Habilitação - Processos e requisitos para municípios
- Auditoria - Procedimentos, normas e regulamentos
- Controle Interno - Orientações técnicas e administrativas
- RAG Avançado: Sistema de recuperação e geração aumentada por documentos oficiais
- LLM Judge: Avaliação automática de qualidade das respostas em tempo real
- Cache Inteligente: Sistema de cache semântico para respostas rápidas
- Múltiplos Perfis: Adaptação de linguagem para cidadãos, servidores e municípios
- Métricas Avançadas: Monitoramento completo de performance e qualidade
- Reranking Semântico: Azure AI Search com reordenação inteligente de resultados
┌─────────────────────────────────────────────────────────────┐
│ Interface Next.js 14 │
│ (React + TypeScript + Tailwind) │
└─────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────────────┐
│ Enhanced RAG Service │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Smart Cache │ │ LLM Judge │ │ Metrics │ │
│ │ Service │ │ Service │ │ Service │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────────────┐
│ Azure Cloud Infrastructure │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Azure OpenAI │ │ AI Search │ │ Cosmos DB │ │
│ │ (GPT-4) │ │ (Semantic) │ │ (Storage) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────┘
- Next.js 14 - Framework React com App Router
- TypeScript 5 - Tipagem estática
- Tailwind CSS 4 - Estilização moderna
- Radix UI - Componentes acessíveis
- Framer Motion - Animações fluidas
- Azure OpenAI - GPT-4 para geração de respostas
- LangChain - Orquestração de LLMs
- Azure AI Search - Busca semântica e reranking
- Azure Cosmos DB - Banco de dados NoSQL
- MSAL (Microsoft Authentication Library) - Autenticação segura
- Enhanced RAG Service - Recuperação contextual avançada
- LLM Judge Service - Avaliação automática de qualidade
- Intelligent Cache Service - Cache semântico otimizado
- Metrics Service - Análise de performance e qualidade
- Citation Service - Rastreamento de fontes
- Node.js >= 18.0.0
- npm >= 8.0.0
- Conta Azure com serviços configurados:
- Azure OpenAI
- Azure AI Search
- Azure Cosmos DB
- Azure AD (para autenticação)
- Clone o repositório
git clone https://github.com/ruan-math/SEFAZ-RS-GPT-Enterprise.git
cd SEFAZ-RS-GPT-Enterprise- Instale as dependências
npm install- Configure as variáveis de ambiente
Crie um arquivo .env.local baseado no env.example:
cp env.example .env.localConfigure as seguintes variáveis:
# Azure OpenAI
AZURE_OPENAI_API_KEY=your_openai_key
AZURE_OPENAI_ENDPOINT=your_openai_endpoint
AZURE_OPENAI_DEPLOYMENT_NAME=your_deployment_name
# Azure AI Search
AZURE_SEARCH_ENDPOINT=your_search_endpoint
AZURE_SEARCH_API_KEY=your_search_key
AZURE_SEARCH_INDEX_NAME=your_index_name
# Azure Cosmos DB
NEXT_PUBLIC_COSMOSDB_ENDPOINT=your_cosmosdb_endpoint
NEXT_PUBLIC_COSMOSDB_PRIMARY_KEY=your_cosmosdb_key
NEXT_PUBLIC_COSMOSDB_DATABASE=cagesefaz-db
# Azure AD Authentication
NEXT_PUBLIC_AZURE_CLIENT_ID=your_client_id
NEXT_PUBLIC_AZURE_TENANT_ID=your_tenant_id
NEXT_PUBLIC_APP_URL=http://localhost:3000- Execute em modo desenvolvimento
npm run devAcesse http://localhost:3000
O sistema possui uma interface moderna e intuitiva que permite:
- Conversas contextuais - Histórico completo de mensagens
- Referências automáticas - Citações dos documentos utilizados
- Feedback direto - Avaliação de respostas (👍/👎)
- Modo adaptativo - Respostas concisas ou detalhadas
O sistema adapta as respostas conforme o perfil:
- Cidadãos - Linguagem simples e orientações práticas
- Servidores Públicos - Aspectos normativos e procedimentais
- Municípios - Informações técnicas sobre convênios e prestação de contas
Usuário: Como funciona a habilitação de municípios para receber convênios?
Assistente: Prezado(a),
A habilitação de municípios para receber convênios exige o cumprimento
de requisitos específicos estabelecidos pela CAGE-RS...
[Resposta detalhada com citações]
Fonte: Manual de Habilitação de Municípios - CAGE-RS
Atenciosamente,
CAGE-RS
Sistema que avalia cada resposta em segundo plano usando critérios:
- Relevância (0-1)
- Precisão (0-1)
- Completude (0-1)
- Qualidade de citações (0-1)
// Resultado automático armazenado no Cosmos DB
{
quality: "excellent" | "good" | "fair" | "poor",
confidence: 0.95,
scores: {
relevance: 0.92,
accuracy: 0.98,
completeness: 0.90,
citationQuality: 0.95
}
}- Cache semântico baseado em similaridade de consultas
- TTL configurável (padrão: 24h)
- Redução de até 70% no tempo de resposta para consultas similares
Dashboard com métricas consolidadas:
- Taxa de acerto do cache
- Tempo médio de resposta
- Qualidade média das respostas
- Taxa de satisfação do usuário
- Alertas de performance
Reordenação inteligente de documentos usando Azure AI Search:
- Top 50 documentos recuperados
- Top 10 reordenados semanticamente
- Melhoria de 30-40% na relevância
# Desenvolvimento com Turbo
npm run dev
# Build de produção
npm run build
# Iniciar em produção
npm start
# Linting
npm run lint
npm run lint:style
# Testes LLM Judge
npm run test:llm-judge
npm run verify:llm-judge
# CLI de gerenciamento
npm run app├── app/ # Next.js App Router
│ ├── api/ # API Routes
│ │ ├── chat/ # Endpoints de chat
│ │ ├── conversations/ # Gerenciamento de conversas
│ │ ├── feedback/ # Sistema de feedback
│ │ └── metrics/ # Métricas e analytics
│ ├── config/ # Configurações
│ └── metadata.ts # SEO metadata
│
├── components/ # Componentes React
│ ├── ui/ # Componentes de UI base
│ ├── chat/ # Componentes de chat
│ ├── feedback/ # Sistema de feedback
│ └── layout/ # Layout components
│
├── lib/ # Lógica de negócio
│ └── rag/ # Sistema RAG
│ ├── services/ # Serviços principais
│ │ ├── enhancedRAGService.ts # RAG avançado
│ │ ├── llmJudgeService.ts # Avaliação automática
│ │ ├── intelligentCacheService.ts # Cache semântico
│ │ ├── metricsService.ts # Métricas
│ │ ├── azureSearchService.ts # Busca Azure
│ │ └── citationService.ts # Citações
│ ├── controllers/ # Controllers
│ ├── prompts/ # System prompts
│ ├── types/ # TypeScript types
│ └── config/ # Configurações RAG
│
├── hooks/ # React Hooks customizados
├── i18n/ # Internacionalização
├── interface/ # Modelos TypeScript
├── public/ # Assets estáticos
├── scripts/ # Scripts de teste
│
├── package.json # Dependências
├── tsconfig.json # Config TypeScript
├── tailwind.config.ts # Config Tailwind
├── next.config.js # Config Next.js
└── .gitignore # Arquivos ignorados
- ✅ Autenticação Microsoft (MSAL)
- ✅ Variáveis de ambiente protegidas
- ✅ Validação de entrada/saída
- ✅ Rate limiting implementado
- ✅ HTTPS obrigatório em produção
- ✅ Sanitização de dados
- Tempo de resposta médio: 2-4 segundos
- Cache hit rate: 60-70%
- Qualidade média (LLM Judge): 0.85-0.95
- Taxa de satisfação: 90%+
- Server-side rendering (SSR)
- Streaming de respostas
- Lazy loading de componentes
- Image optimization
- Bundle splitting
# Testar LLM Judge
npm run test:llm-judge
# Verificar salvamentos
npm run verify:llm-judgeReferência completa das variáveis necessárias:
| Variável | Descrição | Obrigatório |
|---|---|---|
AZURE_OPENAI_API_KEY |
Chave API Azure OpenAI | ✅ |
AZURE_OPENAI_ENDPOINT |
Endpoint Azure OpenAI | ✅ |
AZURE_SEARCH_ENDPOINT |
Endpoint Azure AI Search | ✅ |
AZURE_SEARCH_API_KEY |
Chave Azure AI Search | ✅ |
NEXT_PUBLIC_COSMOSDB_ENDPOINT |
Endpoint Cosmos DB | ✅ |
NEXT_PUBLIC_COSMOSDB_PRIMARY_KEY |
Chave Cosmos DB | ✅ |
NEXT_PUBLIC_AZURE_CLIENT_ID |
Client ID Azure AD | ✅ |
NEXT_PUBLIC_AZURE_TENANT_ID |
Tenant ID Azure AD | ✅ |
- Configure o repositório no Azure Portal
- Configure as variáveis de ambiente
- Azure detectará automaticamente Next.js
- Build e deploy automáticos
{
"buildCommand": "npm run build",
"startCommand": "npm start",
"node": "18.x"
}Este é um projeto privado desenvolvido para a SEFAZ-RS. Para contribuições internas:
- Crie uma branch feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -m 'Add: nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto é proprietário e confidencial. Uso restrito à SEFAZ-RS e parceiros autorizados.
Ruan Matheus
- GitHub: @ruan-math
- Projeto: CAGE-RS SEFAZ
- CAGE-RS - Controladoria e Auditoria-Geral do Estado do Rio Grande do Sul
- SEFAZ-RS - Secretaria da Fazenda do Rio Grande do Sul
- Equipe de desenvolvimento e QA
Desenvolvido com ❤️ para modernizar o atendimento público no Rio Grande do Sul