Início Rápido · Módulos Principais · Perguntas Frequentes
🇬🇧 English · 🇨🇳 中文 · 🇯🇵 日本語 · 🇪🇸 Español · 🇫🇷 Français · 🇸🇦 العربية · 🇷🇺 Русский · 🇮🇳 हिन्दी · 🇵🇹 Português
| ⚡ Q&A de Conhecimento de Documentos Massivos | 📈 Visualização de Aprendizado Interativo |
| 🧠 Reforço de Conhecimento | 🔬 Pesquisa Profunda e Geração de Ideias |
[2026.1.1] Feliz Ano Novo! Junte-se às nossas GitHub Discussions — molde o futuro do DeepTutor! 💬
[2025.12.30] Visite nosso Site Oficial para mais detalhes!
[2025.12.29] DeepTutor v0.1 já está disponível! ✨
• Base de Conhecimento Inteligente: Faça upload de livros didáticos, artigos de pesquisa, manuais técnicos e documentos específicos do domínio. Construa um repositório de conhecimento abrangente alimentado por IA para acesso instantâneo.
• Resolução de Problemas Multi-Agente: Arquitetura de raciocínio de duplo loop com RAG, busca na web, busca de artigos e execução de código—fornecendo soluções passo a passo com citações precisas.
• Simplificação e Explicações do Conhecimento: Transforme conceitos complexos, conhecimento e algoritmos em auxílios visuais fáceis de entender, decomposições detalhadas passo a passo e demonstrações interativas envolventes.
• Q&A Personalizado: Conversas conscientes do contexto que se adaptam ao seu progresso de aprendizado, com páginas interativas e rastreamento de conhecimento baseado em sessões.
• Criação de Exercícios Inteligentes: Gere questionários direcionados, problemas de prática e avaliações personalizadas adaptadas ao seu nível atual de conhecimento e objetivos de aprendizado específicos.
• Simulação de Exame Autêntica: Faça upload de exames de referência para gerar questões de prática que correspondem perfeitamente ao estilo, formato e dificuldade originais—fornecendo preparação realista para o teste real.
• Pesquisa Abrangente e Revisão de Literatura: Realize exploração profunda de tópicos com análise sistemática. Identifique padrões, conecte conceitos relacionados entre disciplinas e sintetize descobertas de pesquisa existentes.
• Descoberta de Insights Inovadores: Gere materiais de aprendizado estruturados e descubra lacunas de conhecimento. Identifique novas direções de pesquisa promissoras através de síntese inteligente de conhecimento entre domínios.
Resolução de Problemas Multi-Agente com Citações Exatas |
Explicações Visuais Passo a Passo com Q&A Personalizado |
Questões Personalizadas |
Questões de Imitação |
Base de Conhecimento Pessoal |
Caderno Pessoal |
🌙 Use DeepTutor no Modo Escuro!
Siga-nos para nossas futuras atualizações!
- Suporte para serviços LLM locais (ex. ollama)
- Refatoração do módulo RAG (ver Discussions)
- Codificação profunda a partir da geração de ideias
- Interação personalizada com o caderno
① Clonar Repositório
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor② Configurar Variáveis de Ambiente
cp .env.example .env
# Edite o arquivo .env com suas chaves de API📋 Referência de Variáveis de Ambiente
| Variável | Obrigatório | Descrição |
|---|---|---|
LLM_MODEL |
Sim | Nome do modelo (ex: gpt-4o) |
LLM_BINDING_API_KEY |
Sim | Sua chave API LLM |
LLM_BINDING_HOST |
Sim | URL do endpoint da API |
EMBEDDING_MODEL |
Sim | Nome do modelo de incorporação |
EMBEDDING_BINDING_API_KEY |
Sim | Chave API de incorporação |
EMBEDDING_BINDING_HOST |
Sim | Endpoint da API de incorporação |
BACKEND_PORT |
Não | Porta do backend (padrão: 8001) |
FRONTEND_PORT |
Não | Porta do frontend (padrão: 3782) |
TTS_* |
Não | Configurações de texto para voz |
PERPLEXITY_API_KEY |
Não | Para busca na web |
③ Configurar Portas e LLM (Opcional)
- Portas: Edite
config/main.yaml→server.backend_port/server.frontend_port - LLM: Edite
config/agents.yaml→temperature/max_tokenspor módulo - Consulte Documentação de Configuração para detalhes
④ Experimentar Bases de Conhecimento Demo (Opcional)
📚 Demos Disponíveis
- Artigos de Pesquisa — 5 artigos do nosso laboratório (AI-Researcher, LightRAG, etc.)
- Livro Didático de Ciência de Dados — 8 capítulos, 296 páginas (Link do Livro)
- Baixar de Google Drive
- Extrair para o diretório
data/
Os KBs demo usam
text-embedding-3-largecomdimensions = 3072
⑤ Criar Sua Própria Base de Conhecimento (Após o Início)
- Ir para http://localhost:3782/knowledge
- Clicar em "New Knowledge Base" → Inserir nome → Fazer upload de arquivos PDF/TXT/MD
- Monitorar o progresso no terminal
|
Recomendado — Sem configuração Python/Node.js Pré-requisitos: Docker e Docker Compose Início Rápido: # Construir e iniciar (~5-10 min primeira execução)
docker compose up --build -d
# Ver logs
docker compose logs -fComandos: docker compose up -d # Iniciar
docker compose logs -f # Logs
docker compose down # Parar
docker compose up --build # Reconstruir
Avançado: # Construir imagem personalizada
docker build -t deeptutor:latest .
# Executar standalone
docker run -p 8001:8001 -p 3782:3782 \
--env-file .env deeptutor:latest |
Para desenvolvimento ou ambientes não Docker Pré-requisitos: Python 3.10+, Node.js 18+ Configurar Ambiente: # Usando conda (Recomendado)
conda create -n deeptutor python=3.10
conda activate deeptutor
# Ou usando venv
python -m venv venv
source venv/bin/activateInstalar Dependências: bash scripts/install_all.sh
# Ou manualmente:
pip install -r requirements.txt
npm install --prefix webIniciar: # Iniciar interface web
python scripts/start_web.py
# Ou apenas CLI
python scripts/start.py
# Parar: Ctrl+C |
| Serviço | URL | Descrição |
|---|---|---|
| Frontend | http://localhost:3782 | Interface web principal |
| Documentação API | http://localhost:8001/docs | Documentação de API interativa |
Todo o conteúdo gerado pelo usuário e os dados do sistema são armazenados na pasta data/:
data/
├── knowledge_bases/ # Armazenamento da base de conhecimento
└── user/ # Dados de atividade do usuário
├── solve/ # Resultados de resolução de problemas e artefatos
├── question/ # Questões geradas
├── research/ # Relatórios de pesquisa e cache
├── co-writer/ # Documentos Co-Writer e arquivos de áudio
├── notebook/ # Registros de caderno e metadados
├── guide/ # Sessões de aprendizado guiado
├── logs/ # Logs do sistema
└── run_code_workspace/ # Espaço de trabalho de execução de código
Todos os resultados são automaticamente salvos quando você realiza qualquer atividade. As pastas são criadas automaticamente se não existirem.
O backend não inicia?
Lista de Verificação
- Confirme que a versão Python >= 3.10
- Confirme que todas as dependências estão instaladas:
pip install -r requirements.txt - Verifique se a porta 8001 está em uso (configurável em
config/main.yaml) - Verifique a configuração do arquivo
.env
Soluções
- Mudar porta: Edite
config/main.yamlserver.backend_port - Verificar logs: Revise as mensagens de erro do terminal
Porta ocupada após Ctrl+C?
Problema
Após pressionar Ctrl+C durante uma tarefa em execução (por exemplo, pesquisa profunda), reiniciar mostra erro "porta já em uso".
Causa
Ctrl+C às vezes termina apenas o processo frontend enquanto o backend continua executando em segundo plano.
Solução
# macOS/Linux: Encontrar e matar o processo
lsof -i :8001
kill -9 <PID>
# Windows: Encontrar e matar o processo
netstat -ano | findstr :8001
taskkill /PID <PID> /FDepois reinicie o serviço com python scripts/start_web.py.
Erro "npm: command not found"?
Problema
Executar scripts/start_web.py mostra npm: command not found ou código de saída 127.
Lista de Verificação
- Verifique se npm está instalado:
npm --version - Verifique se Node.js está instalado:
node --version - Confirme que o ambiente conda está ativado (se estiver usando conda)
Soluções
# Opção A: Usar Conda (Recomendado)
conda install -c conda-forge nodejs
# Opção B: Usar instalador oficial
# Baixar de https://nodejs.org/
# Opção C: Usar nvm
nvm install 18
nvm use 18Verificar Instalação
node --version # Deve mostrar v18.x.x ou superior
npm --version # Deve mostrar o número da versãoO frontend não consegue conectar ao backend?
Lista de Verificação
- Confirme que o backend está em execução (visite http://localhost:8001/docs)
- Verifique o console do navegador para mensagens de erro
Solução
Crie .env.local no diretório web:
NEXT_PUBLIC_API_BASE=http://localhost:8001Falha na conexão WebSocket?
Lista de Verificação
- Confirme que o backend está em execução
- Verifique as configurações do firewall
- Confirme que a URL WebSocket está correta
Solução
- Verifique os logs do backend
- Confirme o formato da URL:
ws://localhost:8001/api/v1/...
Onde as saídas do módulo são armazenadas?
| Módulo | Caminho de Saída |
|---|---|
| Resolver | data/user/solve/solve_YYYYMMDD_HHMMSS/ |
| Questão | data/user/question/question_YYYYMMDD_HHMMSS/ |
| Pesquisa | data/user/research/reports/ |
| Co-Writer | data/user/co-writer/ |
| Caderno | data/user/notebook/ |
| Guia | data/user/guide/session_{session_id}.json |
| Logs | data/user/logs/ |
Como adicionar uma nova base de conhecimento?
Interface Web
- Visite http://localhost:{frontend_port}/knowledge
- Clique em "New Knowledge Base"
- Digite o nome da base de conhecimento
- Faça upload de documentos PDF/TXT/MD
- O sistema processará os documentos em segundo plano
CLI
python -m src.knowledge.start_kb init <kb_name> --docs <pdf_path>Como adicionar documentos incrementalmente a uma BC existente?
CLI (Recomendado)
python -m src.knowledge.add_documents <kb_name> --docs <new_document.pdf>Benefícios
- Processa apenas novos documentos, economiza tempo e custo da API
- Fusão automática com o grafo de conhecimento existente
- Preserva todos os dados existentes
Erro uvloop.Loop ao extrair elementos numerados?
Problema
Ao inicializar uma base de conhecimento, você pode encontrar este erro:
ValueError: Can't patch loop of type <class 'uvloop.Loop'>
Isso ocorre porque Uvicorn usa o loop de eventos uvloop por padrão, que é incompatível com nest_asyncio.
Solução
Use um dos seguintes métodos para extrair elementos numerados:
# Opção 1: Usar script shell (recomendado)
./scripts/extract_numbered_items.sh <kb_name>
# Opção 2: Comando Python direto
python src/knowledge/extract_numbered_items.py --kb <kb_name> --base-dir ./data/knowledge_basesIsso extrairá elementos numerados (Definições, Teoremas, Equações, etc.) da sua base de conhecimento sem reinicializá-la.
Este projeto está licenciado sob AGPL-3.0.
Acolhemos contribuições da comunidade! Para garantir qualidade e consistência do código, siga as diretrizes abaixo.
Configuração de Desenvolvimento
Este projeto usa pre-commit hooks para formatar automaticamente o código e verificar problemas antes de fazer commit.
Passo 1: Instalar pre-commit
# Usar pip
pip install pre-commit
# Ou usar conda
conda install -c conda-forge pre-commitPasso 2: Instalar os hooks do Git
cd DeepTutor
pre-commit installPasso 3: (Opcional) Executar verificações em todos os arquivos
pre-commit run --all-filesSempre que você executar git commit, os pre-commit hooks executarão automaticamente:
- Formatar o código Python com Ruff
- Formatar o código frontend com Prettier
- Verificar erros de sintaxe
- Validar arquivos YAML/JSON
- Detectar problemas de segurança potenciais
| Ferramenta | Objetivo | Configuração |
|---|---|---|
| Ruff | Verificação e formatação do código Python | pyproject.toml |
| Prettier | Formatação do código frontend | web/.prettierrc.json |
| detect-secrets | Verificação de segurança | .secrets.baseline |
Nota: O projeto usa Ruff format em vez de Black para evitar conflitos de formatação.
# Commit normal (os hooks são executados automaticamente)
git commit -m "Sua mensagem de commit"
# Verificar manualmente todos os arquivos
pre-commit run --all-files
# Atualizar os hooks para as versões mais recentes
pre-commit autoupdate
# Ignorar os hooks (não recomendado, apenas para emergências)
git commit --no-verify -m "Correção de emergência"- Fork e Clone: Faça fork do repositório e clone-o
- Criar uma Branch: Crie uma branch de funcionalidade a partir de
main - Instalar Pre-commit: Siga as etapas de configuração acima
- Fazer Modificações: Escreva código seguindo o estilo do projeto
- Testar: Certifique-se de que suas modificações funcionam corretamente
- Commit: Os pre-commit hooks formatarão automaticamente seu código
- Push e PR: Faça push para seu fork e crie uma Pull Request
- Use GitHub Issues para reportar bugs ou sugerir funcionalidades
- Forneça informações detalhadas sobre o problema
- Se for um bug, inclua as etapas para reproduzi-lo
❤️ Agradecemos a todos os nossos contribuidores por suas valiosas contribuições.
| ⚡ LightRAG | 🎨 RAG-Anything | 💻 DeepCode | 🔬 AI-Researcher |
|---|---|---|---|
| RAG Simples e Rápido | RAG Multimodal | Assistente de Código IA | Automação de Pesquisa |
Laboratório de Inteligência de Dados @ HKU
⭐ Siga-nos · 🐛 Reportar um bug · 💬 Discussões
✨ Obrigado por visitar DeepTutor!
