Naive Knowledge Base
A dependency graph analyzer using smolagents for building and analyzing code dependencies.
Features
- 🔍 Dependency Graph Generation: Automatically generate dependency graphs from source code
- 🤖 AI-Powered Analysis: Uses smolagents for intelligent code analysis
- 📊 Multiple Language Support: Support for Java and other languages
- 🌳 Directory Tree Visualization: Generate visual representations of project structure
- 📝 File Operations: Read, write, and manage files programmatically
Installation
From Source
git clone https://github.com/yourusername/naive-knowledge-base.git
cd naive-knowledge-base
pip install -e .
From PyPI (when published)
pip install naive-knowledge-base
Requirements
- Python 3.8+
- OpenAI API key (or compatible API)
Configuration
Create a .env file in your project directory with the following:
OPENAI_API_KEY=your_api_key_here
# Or configure your API endpoint
API_BASE_URL=your_api_base_url
Usage
Command Line Interface
After installation, you can use the naive-kb command:
# Basic usage
naive-kb /path/to/source/directory
# Specify file extensions
naive-kb /path/to/source/directory java
# Specify directories to ignore
naive-kb /path/to/source/directory java "target,.git,test,node_modules"
Python API
from naive_knowledge_base import run_analysis
# Run dependency graph analysis
result = run_analysis(
source_directory="/path/to/source",
file_extensions="java",
ignore_dirs="target,.git,test"
)
Advanced Usage
from smolagents import CodeAgent, ToolCallingAgent
from naive_knowledge_base.api_models import FlowApiModel
from naive_knowledge_base.tools import (
save_content_to_file,
read_file_content,
delete_folder_or_file,
generate_folder_tree
)
from naive_knowledge_base.agents.dependency_graph import generate_dependency_graph
# Create custom agents
model = FlowApiModel(model_id="gpt-4.1", temperature=0.5)
dependency_agent = ToolCallingAgent(
tools=[generate_dependency_graph],
model=model,
max_steps=7,
name="dependency_graph_agent"
)
manager_agent = CodeAgent(
managed_agents=[dependency_agent],
model=model,
tools=[read_file_content, save_content_to_file],
max_steps=30,
name="tech_lead_agent"
)
# Run analysis
result = manager_agent.run("Analyze dependencies in /path/to/source")
Package Structure
naive_knowledge_base/
├── agents/
│ ├── common/ # Common agent utilities
│ │ ├── base.py
│ │ ├── exceptions.py
│ │ ├── logging.py
│ │ └── utils.py
│ └── dependency_graph/ # Dependency graph analysis
│ ├── agent.py
│ └── model.py
├── api_models/ # API model integrations
│ └── flow_api_model.py
└── tools/ # Agent tools
├── io.py # File I/O operations
└── tree.py # Directory tree generation
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/yourusername/naive-knowledge-base.git
cd naive-knowledge-base
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in editable mode with dev dependencies
pip install -e ".[dev]"
Running Tests
pytest tests/
Code Formatting
# Format code
black .
isort .
# Check code quality
pylint naive_knowledge_base/
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built with smolagents
- Uses OpenAI API for AI-powered analysis
Support
For issues and questions, please file an issue on the GitHub repository.
Metadata
Release files for naive-knowledge-base 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| naive_knowledge_base-0.2.2.tar.gz | 22.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| naive_knowledge_base-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.3 kB
Release files / naive_knowledge_base-0.2.2.tar.gz
| Download URL | naive_knowledge_base-0.2.2.tar.gz |
|---|---|
| Size | 22.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea0fb65235d1529c30d8a5d4e75700e43d1310422cb3d7732e411ac712be2060
|
|
BLAKE2b-256 checksum How to use checksums |
85c8f661298a4c6ba3ffdc13f07c3fcc70413ee3ae1d085a0b7d8a8f501980c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / naive_knowledge_base-0.2.2-py3-none-any.whl
| Download URL | naive_knowledge_base-0.2.2-py3-none-any.whl |
|---|---|
| Size | 24.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
05bd06ec77a1f75f0154f175256b3e792b36829ccc594241fdd429332cdd4e98
|
|
BLAKE2b-256 checksum How to use checksums |
9ffced4c963932285a27efc19128192fd877561b644fc364c31eaca059f1dbdd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|