Sistema completo de atendimento ao cliente com IA personalizada, interface web moderna e painel administrativo avançado.
- Características
- Demonstração
- Instalação
- Uso
- Arquitetura
- Configuração
- API
- Personalização
- Deploy
- Contribuição
- Personalidade descolada e prática
- Análise de sentimento em tempo real
- Contextualização de conversas
- Respostas adaptadas por nicho de mercado
- Design moderno e responsivo
- Suporte a emojis e formatação
- Indicadores de digitação
- Sistema de avaliação de satisfação
- Dashboard com estatísticas em tempo real
- Gerenciamento de sessões
- Busca avançada em conversas
- Sistema de segurança robusto
- Relatórios e analytics
- Código limpo e bem documentado
- Princípios SOLID implementados
- Fácil manutenção e extensão
- Injeção de dependências
- Interfaces bem definidas
🤖 Ryan: E aí! 👋 Sou o Ryan, seu assistente virtual. Como posso te ajudar hoje?
👤 Usuário: Preciso de ajuda com um problema
🤖 Ryan: Claro! Estou aqui exatamente para isso. Me conta qual é a situação que eu te dou uma força!
- URL:
http://localhost:5000/admin - Senha:
admin123(padrão) - Recursos: Dashboard, sessões, busca, configurações
- Python 3.8 ou superior
- pip (gerenciador de pacotes Python)
# 1. Clone ou baixe o projeto
git clone https://github.com/seu-usuario/ryan-ai-agent.git
cd ryan-ai-agent
# 2. Instale as dependências
pip install -r requirements.txt
# 3. Execute o sistema
python run.py# 1. Criar ambiente virtual (recomendado)
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# 2. Instalar dependências
pip install -r requirements.txt
# 3. Verificar dependências
python run.py --check-deps
# 4. Inicializar banco de dados (opcional)
python run.py --init-db
# 5. Executar em modo debug
python run.py --debug
# 6. Executar em porta personalizada
python run.py --port 8080# Execução padrão (localhost:5000)
python run.py
# Com debug ativado
python run.py --debug
# Host e porta personalizados
python run.py --host 0.0.0.0 --port 8080| Serviço | URL | Credenciais |
|---|---|---|
| Chat | http://localhost:5000 |
- |
| Admin | http://localhost:5000/admin |
Senha: admin123 |
| Health Check | http://localhost:5000/health |
- |
// No frontend, especifique o nicho
fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message: 'Preciso de ajuda',
session_id: 'session_123',
nicho: 'ecommerce' // ou 'saude', 'educacao', etc.
})
});ryan_ai_agent/
├── app/
│ ├── models/ # Modelos de dados
│ ├── interfaces/ # Interfaces (contratos)
│ ├── database/ # Implementações de banco
│ ├── ai/ # Motor de IA
│ ├── services/ # Lógica de negócio
│ └── web/ # Interface web
├── config/ # Configurações
├── static/ # Arquivos estáticos
├── tests/ # Testes
├── data/ # Banco de dados
└── logs/ # Arquivos de log
- Single Responsibility: Cada classe tem uma responsabilidade
- Open/Closed: Extensível sem modificar código existente
- Liskov Substitution: Interfaces intercambiáveis
- Interface Segregation: Interfaces específicas
- Dependency Inversion: Injeção de dependências
Usuario → WebRoutes → ChatService → AIEngine + Database
↓
AuthService → SessionManager
Crie um arquivo .env na raiz do projeto:
# Configurações básicas
DEBUG=True
SECRET_KEY=sua-chave-secreta-aqui
HOST=0.0.0.0
PORT=5000
# Autenticação
ADMIN_PASSWORD=sua-senha-admin
SESSION_TIMEOUT=30
# Banco de dados
DATABASE_PATH=data/ryan_agent.db
# Logs
LOG_LEVEL=INFO
LOG_FILE=logs/ryan_agent.log# config/constants.py
# Adicione novos conhecimentos
KNOWLEDGE_BASE = {
'seu_nicho': ['palavra1', 'palavra2', 'palavra3'],
# ...
}
# Adicione novas respostas
RYAN_RESPONSES = {
'seu_nicho': [
'Resposta personalizada 1',
'Resposta personalizada 2',
],
# ...
}POST /api/chat
Content-Type: application/json
{
"message": "Mensagem do usuário",
"session_id": "session_123",
"nicho": "ecommerce"
}GET /api/chat/history/{session_id}?limit=10POST /api/chat/end
Content-Type: application/json
{
"session_id": "session_123",
"satisfaction": 5
}GET /admin/api/stats
Authorization: Admin SessionGET /admin/api/search?q=termo&limit=10
Authorization: Admin Session# Adicione em config/constants.py
KNOWLEDGE_BASE['ecommerce'] = [
'produto', 'compra', 'entrega', 'pagamento', 'estoque'
]
RYAN_RESPONSES['ecommerce'] = [
'Show! Sobre produtos, sou expert! Me fala qual você tá procurando?',
# ...
]KNOWLEDGE_BASE['saude'] = [
'consulta', 'exame', 'medicamento', 'sintoma'
]
RYAN_RESPONSES['saude'] = [
'Para questões de saúde, recomendo sempre falar com um profissional.',
# ...
]Modifique os arquivos em static/css/ para personalizar:
- Cores e temas
- Layout e tipografia
- Animações e transições
- Responsividade mobile
python run.py --debugpip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 run:appFROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "run.py", "--host", "0.0.0.0"]DEBUG=False
ADMIN_PASSWORD=senha-super-segura
SECRET_KEY=chave-ultra-secreta
DATABASE_PATH=/data/ryan_agent.dbGET /health# Configuração automática em config/settings.py
LOG_LEVEL=INFO
LOG_FILE=logs/ryan_agent.log- Total de sessões
- Mensagens por hora
- Taxa de satisfação
- Análise de sentimento
- Performance de resposta
# Instalar dependências de teste
pip install pytest pytest-flask pytest-cov
# Executar testes
python -m pytest tests/
# Com cobertura
python -m pytest tests/ --cov=app# Exemplo de extensão
class NovoAIEngine(AIResponseInterface):
def generate_response(self, user_message: str, context: List[Message]) -> str:
# Sua implementação personalizada
return "Resposta personalizada"
# Injeção de dependência
chat_service = ChatService(database, NovoAIEngine())- Crie interfaces em
app/interfaces/ - Implemente em modules específicos
- Injete dependências nos serviços
- Configure rotas se necessário
# Tente outra porta
python run.py --port 8080# Reinicialize o banco
python run.py --init-db# Verifique dependências
python run.py --check-deps# Linux/Mac - permissões na pasta
chmod -R 755 .# Modo debug completo
python run.py --debug
# Verificar logs
tail -f logs/ryan_agent.log- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Siga os princípios SOLID
- Adicione testes para novas funcionalidades
- Mantenha a documentação atualizada
- Use comentários explicativos no código
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
- Sistema Ryan IA - Desenvolvimento inicial - @ryan-ai
- Flask team pelo framework incrível
- Comunidade Python pela inspiração
- Todos que contribuíram com feedback
Feito com ❤️ e muito ☕ pelo time Ryan IA