Sistema para detectar e classificar descrições de ambiente em textos usando Small Language Models (SLM) da DeepSeek rodando localmente.
- 🔒 100% Local: Executa completamente offline sem envio de dados
- ⚡ SLM Eficiente: Usa DeepSeek R1 (1.5B parâmetros) via Ollama
- 🎯 Especializado: Classifica 8 tipos diferentes de ambiente
- 💰 Gratuito: Sem custos de API
- 🔧 Fácil de usar: Interface Python simples
- Jardim/Área Verde: jardins, parques, plantas
- Ambiente Doméstico: casa, sala, cozinha, quarto
- Paisagem Natural: floresta, montanha, campo
- Ambiente Urbano: cidade, rua, prédios
- Ambiente de Trabalho: escritório, fábrica, loja
- Ambiente Rural: fazenda, sítio, agricultura
- Ambiente Aquático: rio, lago, mar, piscina
- Não descreve ambiente: textos sem descrição de local
- Python 3.8+
- Git
git clone https://github.com/seu-usuario/trilha-sonora.git
cd trilha-sonora# Linux/macOS
python -m venv venv
source venv/bin/activate
# Windows
python -m venv venv
venv\Scripts\activate# Instalar dependências principais
pip install -r requirements.txt
# OU usando o pyproject.toml
pip install -e ./backend
# Para desenvolvimento (opcional)
pip install -e "./backend[dev]"curl -fsSL https://ollama.com/install.sh | sh- Baixe o instalador: https://ollama.com/download
- Execute o instalador
- Abra um novo terminal
ollama serve# Modelo recomendado (1.5B parâmetros)
ollama pull deepseek-r1:1.5b
# Modelos alternativos (maiores, mais precisos)
# ollama pull deepseek-r1:7b
# ollama pull deepseek-r1:14bcd backend
python utils/ambiente.pyfrom backend.utils.ambiente import DetectorAmbienteLocal
# Inicializar detector
detector = DetectorAmbienteLocal()
# Analisar texto
resultado = detector.analisar("O jardim estava cheio de flores coloridas")
# Verificar resultado
if resultado["descreve_ambiente"]:
print(f"Ambiente: {resultado['tipo_ambiente']}")
print(f"Confiança: {resultado['confianca']:.2f}")
print(f"Elementos: {resultado['elementos_identificados']}")from backend.utils.ambiente import detectar_ambiente
# Uso direto
resultado = detectar_ambiente("A cozinha estava bem organizada")
print(resultado)texto = "As montanhas se estendiam até onde a vista alcançava, cobertas de névoa matinal"
resultado = detectar_ambiente(texto)
# Output: {"tipo_ambiente": "paisagem natural", "confianca": 0.95}texto = "Ele abriu a porta da cozinha e viu a mesa posta"
resultado = detectar_ambiente(texto)
# Output: {"tipo_ambiente": "ambiente interno doméstico", "confianca": 0.88}texto = "O relatório foi entregue ontem pela manhã"
resultado = detectar_ambiente(texto)
# Output: {"tipo_ambiente": "não descreve ambiente", "confianca": 0.92}# Usar modelo maior (mais preciso, mais lento)
detector = DetectorAmbienteLocal(modelo="deepseek-r1:7b")
# Usar URL personalizada do Ollama
detector = DetectorAmbienteLocal(
modelo="deepseek-r1:1.5b",
ollama_url="http://192.168.1.100:11434"
)textos = [
"O jardim estava florido",
"A reunião foi no escritório",
"O relatório foi aprovado"
]
resultados = detector.analisar_multiplos(textos)
for resultado in resultados:
print(f"{resultado['tipo_ambiente']}: {resultado['confianca']:.2f}")# Testes básicos
cd backend
python utils/ambiente.py
# Testes com pytest (se instalou dependências de dev)
pytest tests/
# Testes com cobertura
pytest --cov=backend tests/# Verificar se está rodando
curl http://localhost:11434/api/tags
# Se não estiver, iniciar
ollama serve# Listar modelos instalados
ollama list
# Instalar modelo necessário
ollama pull deepseek-r1:1.5b# Usar modelo menor
ollama pull deepseek-r1:1.5b
# Ou ajustar configuração do Ollama
export OLLAMA_NUM_PARALLEL=1
export OLLAMA_MAX_LOADED_MODELS=1# Reinstalar dependências
pip install --upgrade -r requirements.txt
# Verificar versão do Python
python --version # Deve ser 3.8+| Modelo | Parâmetros | RAM necessária | Velocidade | Precisão |
|---|---|---|---|---|
| deepseek-r1:1.5b | 1.5B | ~2GB | ⚡⚡⚡ | ⭐⭐⭐ |
| deepseek-r1:7b | 7B | ~8GB | ⚡⚡ | ⭐⭐⭐⭐ |
| deepseek-r1:14b | 14B | ~16GB | ⚡ | ⭐⭐⭐⭐⭐ |
- Fork o projeto
- Crie uma branch (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para detalhes.
- DeepSeek pelos excelentes modelos SLM
- Ollama pela ferramenta incrível de execução local
- Comunidade open source pelos modelos e ferramentas
- 🐛 Reportar bug
- 💡 Sugerir funcionalidade
- 📧 Email: seu.email@exemplo.com
Feito com ❤️ usando DeepSeek SLM e Ollama