Skip to content

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI Engineering Intelligence Platform

An agentic codebase intelligence and code-graph search system designed for Python repositories. By combining Abstract Syntax Tree (AST) static analysis, Git history tracking, and vector semantic search, the platform builds a multi-dimensional knowledge graph of code architecture, call hierarchies, changesets, and issues. Users can query the repository through a multi-agent chat workflow orchestrated by LangGraph, featuring automated verification, reflection/retry loops, and LLM fallback logic.


Tech Stack & Dependencies

  • Language: Python 3.11.11 (specified in runtime.txt)
  • Web Framework: FastAPI (ASGI server powered by Uvicorn)
  • Agentic Orchestration: LangGraph (with custom state tracking and multi-turn loops)
  • Databases:
    • Neo4j: Graph database storing syntax relationships, import structures, commit history, and issue connections.
    • Pinecone: Vector database for semantic similarity searches across chunked code files, commits, and pull requests.
    • PostgreSQL: Relational database storage (managed via SQLAlchemy ORM) for users, repository metadata, and conversation history.
  • LLM Providers: Google Gemini SDK (google-genai) and Cohere SDK (cohere) with fallback failover.
  • Embeddings: LangChain Cohere Embeddings (embed-v4.0)
  • Static Code Analysis: Python AST (ast module) for syntax tree parsing.
  • Git Integration: GitPython (git) for cloning and parsing repositories.
  • Authentication & Security: JWT tokens (python-jose), password hashing (passlib with Argon2 context).

Features

  1. Unified Code & Git Knowledge Graph (Neo4j)

    • Extracts structural code relationships (CONTAINS, DECLARES, CALLS, IMPORTS, DEPENDS_ON).
    • Integrates Git history nodes (Commit, Issue) mapping which commits modified which files and which commits resolved specific issue numbers (MODIFIES, FIXES).
  2. Hybrid Retrieval (Vector + Graph)

    • Combines semantic search via Pinecone (for code snippets, commits, and pull requests) with structural lookup via Neo4j (for call graph queries, callers, callees, and dependencies).
  3. Agentic Question-Answering (LangGraph Workflow)

    • Planner Node: Evaluates the user's question and history to generate a structured execution plan.
    • Executor Node: Runs vector and graph query tools against the database registry.
    • Verification Node: Inspects query results. Decides to compile a final answer (answer), refine the plan and retry (retry), or stop due to missing evidence (stop).
    • Reflection Node: Tracks retry cycles (capped at 2 reflections) and feeds reasoning feedback back into the Planner.
    • Report Node: Formats proof and generates the final markdown report.
  4. Resilient LLM Failover

    • Dual-provider support (Gemini & Cohere). Automatically routes requests to the secondary LLM if the primary provider hits quota constraints or rate limits.
  5. Multi-Tenant Ingestion Pipelines

    • Validates target repository language (currently restricted to Python).
    • Asynchronously clones, chunks, embeds, parses, and structures repository records.
    • Implements transactional cleanups (rollback) across Pinecone, Neo4j, and local storage on ingestion failures.

Project Structure

├── .env.example                  # Template configuration for environment variables
├── .gitignore                    # Git ignore configurations (venv, data, caches)
├── requirements.txt              # Project package dependencies
├── runtime.txt                   # Specifies Python runtime version (python-3.11.11)
├── logs/                         # Execution tracing logs (workflows, nodes, timestamps)
├── data/                         # Local storage for cloned Git repositories
├── scripts/                      # Integration and module test scripts
└── app/                          # Core application package
    ├── main.py                   # FastAPI entrypoint and router registration
    ├── LangGraph/                # LangGraph state workflow configuration
    │   ├── workflow.py           # Compiles state graph and defines routing
    │   └── nodes/                # Node implementations (planner, executor, verifier, etc.)
    ├── agents/                   # Agent logic and prompt payloads
    │   ├── planner.py            # Planner agent
    │   ├── verifier.py           # Verification agent
    │   ├── report_generator.py   # Final reporter agent
    │   ├── router.py             # Conditional routing rules
    │   └── state.py              # Typed agent state schema
    ├── api/                      # FastAPI routing layer
    │   ├── dependencies/         # Security and database dependencies
    │   ├── routes/               # API endpoints (auth, chat, ingestion, repositories)
    │   └── schemas/              # Pydantic request/response models
    ├── auth/                     # JWT tokens, password hashing, and user DB access
    ├── conversation/             # Message and chat session DB access
    ├── core/                     # Configuration loading settings and logging
    ├── database/                 # SQLAlchemy connections and metadata base
    ├── git/                      # Git log history and issue number parse extraction
    ├── graph/                    # Neo4j connections, models, builders, and query layers
    ├── ingestion/                # Document loading, git cloning, AST parsing, and chunking
    ├── llm/                      # Gemini/Cohere SDK wrappers and LLM fallback router
    ├── parsing/                  # Rich Python AST extractors and symbol table builders
    ├── repository/               # Repository DB mappings and services
    ├── retrieval/                # Pinecone retriever interface
    ├── services/                 # Embeddings generation, Pinecone upsert, and cleanups
    ├── tools/                    # Tool execution registry (GraphTool, VectorTool)
    ├── tracing/                  # Trace logger capturing execution logs
    └── utils/                    # GitHub metadata verification helpers

Environment Variables

Create a .env file in the root directory. Below are the required environment variable names (do not expose actual secret values in production configurations):

# Application Settings
APP_NAME="Engineering Intelligence Platform"
APP_VERSION="1.0.0"
HOST="127.0.0.1"
PORT=8000
DEBUG=True

# Neo4j Database Configuration
NEO4J_URI=
NEO4J_USERNAME=
NEO4J_PASSWORD=

# Vector Split Configurations
CHUNK_SIZE=1000
CHUNK_OVERLAP=200

# Pinecone Vector Database Configuration
PINECONE_API_KEY=
PINECONE_INDEX_NAME=

# LLM Providers Keys & Models Configuration
GEMINI_API_KEY=
COHERE_API_KEY=
GEMINI_MODEL=
COHERE_MODEL=
COHERE_EMBEDDING_MODEL=
LLM_PROVIDER=

# Authentication Configs
JWT_SECRET=

# Relational Database URL (e.g. PostgreSQL)
DATABASE_URL=

Start the FastAPI Server

To start the API in hot-reload development mode:

python -m uvicorn app.main:app --reload

The server will start on http://127.0.0.1:8000. You can access the auto-generated API documentation (Swagger UI) at http://127.0.0.1:8000/docs.


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages