T.H.O.R. é um assistente de IA pessoal, local-first e modular, inspirado no J.A.R.V.I.S. Desenvolvido para rodar em sua própria máquina, ele utiliza múltiplos modelos de linguagem (LLMs) para diferentes tarefas, garantindo especialização e privacidade.
- Recursos
- Arquitetura do Projeto
- Requisitos
- Instalação e Configuração
- Como Usar
- Contribuição
- Licença
- Autor
- Hotword "Thor" sempre ativa: chame o assistente por voz a qualquer momento, sem precisar digitar.
- Leitura de notícias: integração com a API do GNews para ler as últimas notícias em voz alta.
- Sistema de Notas e Lembretes: crie notas rápidas por voz e configure lembretes para o futuro.
- Suporte a abrir o YouTube e baixar vídeos: utilizando o Pytube e o Webbrowser.
- Suporte a envio de mensagens no WhatsApp: utilizando o WhatsApp WebJS.
- IA Local-First: opera primariamente com modelos de linguagem rodando localmente via Ollama, garantindo privacidade e funcionamento offline.
- Sistema de IA Dupla:
- IA de Conversação Geral (Gemma): diálogos, classificação de comandos e tarefas gerais.
- IA Especialista em Código (CodeGemma): gerar, analisar e responder perguntas sobre programação.
- Memória Persistente: lembra de conversas anteriores entre sessões, salvando o histórico em um arquivo local.
- Controle de Mídia: integração com o Spotify para tocar e pausar músicas.
- Operações de Sistema: executar comandos no sistema operacional, como abrir pastas de projetos e verificar o status de uso de CPU, RAM e disco.
- Arquitetura Modular: separação entre o "cérebro" (lógica de decisão) e os "serviços" (executores de ação), facilitando a expansão.
O T.H.O.R. funciona com um fluxo de comando centralizado no brain.py, que atua como um roteador.
+--------------------------------+
| Entrada do Usuário (Whisper) |
+--------------------------------+
|
V
+------------------------------------------+
| brain.py (O Cérebro) |
+------------------------------------------+
| |
| 1. Classificação da Intenção |
| (Usa a IA Geral para entender a |
| pergunta e gerar um JSON) |
| |
| e.g., {'controller': 'code_ai'} |
| |
+------------------------------------------+
|
| 2. Roteamento da Missão
|
+--------------------+---------------------+---------------------+------------+
| | | | |
V V V V V
+--------------+ +---------------+ +-------------+ +--------------+
| IA de Código | | IA de Conversa| | Serviço | | Serviço | ..etc..
| (CodeGemma) | | (Gemma) | | (Spotify) | | (OS) |
+--------------+ +---------------+ +-------------+ +--------------+- Python 3.11+
- Ollama: Essencial para rodar os modelos de IA localmente.
- Dependências Python listadas no
requirements.txt:openai(usado como cliente para a API compatível do Ollama)spotipy(para controle do Spotify)python-dotenv(para gerenciar as chaves de API)psutil(para monitoramento do sistema)
- Uma GPU dedicada com no mínimo 8GB de VRAM é altamente recomendada para uma experiência fluida.
- Alternativamente, 32GB de RAM ou mais se for rodar os modelos apenas na CPU.
-
Clone o repositório:
git clone [https://github.com/SantiaGhou/T.H.O.R.git](https://github.com/SantiaGhou/T.H.O.R.git) cd T.H.O.R -
Instale o Ollama:
- Faça o download e instale o Ollama a partir do site oficial.
-
Baixe os Modelos de IA:
- Abra o terminal e puxe os modelos que o T.H.O.R. utiliza:
# IA de conversação geral ollama run gemma2:9b # IA especialista em código ollama run codegemma
-
Instale as dependências Python:
pip install -r requirements.txt
-
Configure o Ambiente:
- Crie um arquivo chamado
.envna raiz do projeto. - Você precisará de credenciais da API do Spotify. Siga o guia do Spotipy para obtê-las.
- Adicione suas credenciais ao arquivo
.env:
# Arquivo .env SPOTIFY_CLIENT_ID="SEU_CLIENT_ID_AQUI" SPOTIFY_CLIENT_SECRET="SEU_CLIENT_SECRET_AQUI" SPOTIFY_REDIRECT_URI="http://localhost:8888/callback"
- Crie um arquivo chamado
-
Certifique-se de que o Ollama está rodando em segundo plano.
-
Execute o arquivo principal:
python main.py
-
Na primeira execução, um arquivo
conversation_history.jsonserá criado para armazenar a memória do assistente. -
Antes de iniciar o projeto inicie o servidor do whatsapp web na pasta
/wppServer -
Use o comando
npm i & node server.js -
Escaneie o qrcode gerado e conecte ao seu whatsapp
-
no
.envadicione sua OPENAI_API_KEY para funcionar a func q da voz do T.H.O.R
Contribuições são sempre bem-vindas! Por favor, leia o CONTRIBUTING.md primeiro.
- Faça um Fork do projeto
- Crie sua Feature Branch (
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
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Filipe Santiago
- GitHub: @SantiaGhou
- LinkedIn: Filipe Santiago