O GitHub RAG Tool é um projeto dedicado à criação de agentes inteligentes capazes de dialogar com repositórios do GitHub. Utilizando técnicas avançadas de RAG (Retrieval-Augmented Generation), a ferramenta permite que usuários façam perguntas sobre qualquer repositório e obtenham respostas contextualizadas, baseadas no código fonte, issues e pull requests.
- Análise Inteligente: Extrai e indexa informações de repositórios GitHub
- Resposta Contextual: Fornece respostas precisas com base no conteúdo do repositório
- Memória de Conversação: Mantém o contexto durante toda a interação
- Rastreabilidade: Todas as respostas vêm com referências às fontes originais
- Flexibilidade: Funciona com qualquer repositório público do GitHub
- Persistência: Salva sessões para uso futuro
- Python 3.12.9+
- Chaves de API para serviços de LLM (OpenAI, etc)
- Acesso à internet para conexão com GitHub
- Token de uso da API do GitHub
-
Clone o repositório:
git clone https://github.com/seu-usuario/github-rag-tool.git cd github-rag-tool
-
Instale as dependências:
pip install -r requirements.txt
-
Configure o arquivo
.env
com suas credenciais:OPENAI_API_KEY=<sua_chave_openai> OPENAI_MODEL=gpt-4o-mini OPENAI_EMBBENDING_MODEL=text-embedding-3-large GITHUB_API_TOKEN=<seu_token_github>
O projeto utiliza um conjunto de tecnologias modernas para processamento de linguagem natural e recuperação de informações:
- LangChain: Framework para construção de aplicações com modelos de linguagem
- FAISS: Biblioteca para busca de similaridade eficiente em grandes bases de dados vetoriais
- OpenAI API: Fornece modelos como GPT-4o para geração de texto e embeddings
- GitHub API: Permite acessar repositórios, issues e pull requests programaticamente
- Chroma DB: Banco de dados vetorial para armazenamento de embeddings
- Python asyncio: Para processamento assíncrono e melhor desempenho
- PyTorch: Base para processamento de modelos de ML (utilizado indiretamente)
Execute o script sem argumentos e forneça a URL quando solicitado:
python main.py
from github_rag import SessionManager
import os
from dotenv import load_dotenv
load_dotenv()
config_options = {
"chunk_size": 1200,
"chunk_overlap": 300,
"retriever_k": 7,
"use_memory": True,
"memory_window": 5,
}
session_manager = SessionManager(
repo_url="https://github.com/username/repo",
initial_config=config_options,
embeddings_model=os.getenv("OPENAI_EMBBEDDING_MODEL"),
)
session_manager.setup(limit_issues=100, rebuild=False)
result = session_manager.query("Qual é o propósito deste projeto?")
print(result["resposta"])
- Inicialização: A ferramenta inicializa e configura a sessão RAG
- Construção da Base de Conhecimento: O repositório é analisado e indexado
- Interação: Faça perguntas sobre o repositório e receba respostas contextualizadas
- Salvamento: A sessão é automaticamente salva para uso futuro
A ferramenta suporta várias configurações para personalizar o comportamento:
config_options = {
"chunk_size": 1200, # Tamanho dos trechos de texto para indexação
"chunk_overlap": 300, # Sobreposição entre trechos para manter contexto
"retriever_k": 7, # Número de documentos recuperados por consulta
"use_memory": True, # Habilitar memória de conversação
"memory_window": 5, # Tamanho da janela de memória
}
- Extração: Código, issues e PRs são baixados do repositório
- Processamento: O conteúdo é dividido em chunks significativos
- Indexação: Embeddings são gerados para busca semântica
- Recuperação: Quando uma pergunta é feita, recuperam-se os trechos mais relevantes
- Geração: Um LLM usa os trechos recuperados para produzir respostas precisas
- Apresentação: A resposta é exibida junto com as fontes consultadas
🚀 Iniciando sessão com o repositório: https://github.com/huggingface/lerobot
🔧 Inicializando a ferramenta RAG...
⚙️ Configurações aplicadas: {
"chunk_size": 1200,
"chunk_overlap": 300,
"retriever_k": 7,
"use_memory": true,
"memory_window": 5
}
🔍 Construindo base de conhecimento...
✅ Preparação concluída em 45.23 segundos
📊 Status da Ferramenta:
- Sessão: session_20250313224434_28d3d4c5
- Modelo de Chat: gpt-4o-mini
- Modelo de Embedding: text-embedding-3-large
- Base vetorial pronta: True
- Documentos indexados: 1724
💬 Modo de consulta ativado para o repositório lerobot
Digite 'sair' para encerrar, 'status' para ver estatísticas, ou 'ajuda' para comandos adicionais
> Qual é o propósito do LeRobot?
🤖 LeRobot visa tornar a IA para robótica mais acessível através da aprendizagem de ponta a ponta. O projeto fornece modelos pré-treinados, datasets e ferramentas para robótica no mundo real usando PyTorch. Seu objetivo é reduzir a barreira de entrada para a robótica, permitindo que todos possam contribuir e se beneficiar do compartilhamento de datasets e modelos pré-treinados.
📚 Fontes:
[1] Arquivo: README.md
Linguagem: Markdown
[2] Issue #42: Roadmap para implementação de novos ambientes
URL: https://github.com/huggingface/lerobot/issues/42
O sistema implementa estratégias inteligentes para lidar com limites de taxa (rate limits) da API OpenAI e GitHub:
- Retry com backoff exponencial: Espera progressivamente mais tempo entre tentativas
- Agrupamento de requisições: Otimiza o número de chamadas à API
- Caching de resultados: Evita requisições redundantes
- Monitoramento de uso: Acompanha o consumo de tokens para evitar custos excessivos
A ferramenta é compatível com diversos modelos de linguagem e embeddings:
-
Modelos de Chat:
- OpenAI: GPT-4o, GPT-4-Turbo, GPT-3.5-Turbo
-
Modelos de Embedding:
- OpenAI: text-embedding-3-large, text-embedding-3-small, text-embedding-ada-002
Contribuições são bem-vindas! Para contribuir:
- Faça um fork do repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade
) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade'
) - Push para a branch (
git push origin feature/nova-funcionalidade
) - Abra um Pull Request
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.