Generate and render a call graph for a Python project.
Project description
Ragdaemon
Ragdaemon is a Retrieval-Augmented Generation (RAG) system for code. It runs a daemon (background process) to watch your active code, put it in a knowledge graph, and query the knowledge graph to (among other things) generate context for LLM completions.
Three ways to use Ragdaemon:
1. Help me write code
Ragdaemon powers the 'auto-context' feature in Mentat, a command-line coding assistant. You can install Mentat using pip install mentat
. Run with the --auto-context-tokens <amount>
or -a
(default=5000) flag, and ragdaemon-selected context will be added to all of your prompts.
2. Explore the knowledge graph
Install locally to visualize and query the knowledge graph directly.
Install using pip install ragdaemon
, and run in your codebase's directory, e.g. ragdaemon
. This will start a Daemon on your codebase, and an interface at localhost:5001
. Options:
--chunk-extensions <ext>[..<ext>]
: Which file extensions to chunk. If not specified, defaults to the top 20 most common code file extensions.--chunk-model
: OpenAI'sgpt-4-0215-preview
by default.--embeddings-model
: OpenAI'stext-embedding-3-large
by default.--diff
: A git diff to include in the knowledge graph. By default, the active diff (if any) is included with each code feature.
3. Use ragdaemon Python API
Ragdaemon is released open-source as a standalone RAG system. It includes a library of python classes to generate and query the knowledge graph. The graph itself is a NetworkX MultiDiGraph which saves/loads to a .json
file.
import asyncio
from pathlib import Path
from ragdaemon.daemon import Daemon
async def main():
cwd = Path.cwd()
daemon = Daemon(cwd)
await daemon.update()
results = daemon.search("javascript")
for result in results:
print(f"{result['distance']} | {result['id']}")
query = "How do I run the tests?"
context_builder = daemon.get_context(
query,
auto_tokens=5000
)
context = context_builder.render()
messages = [
{"role": "user", "content": query},
{"role": "user", "content": f"CODE CONTEXT\n{context}"}
]
print(messages)
asyncio.run(main())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ragdaemon-0.2.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e404773fe7eaa0a8927ad19a6ff09bd26e0d6213a7562ee9d3071c3c2276457 |
|
MD5 | cf31fd503f13f8f1cc479bb1b87f2398 |
|
BLAKE2b-256 | a5ebcaaf4e0cde6f2c0e7200fd1b6959a638b4636eed6fd9afe3e883227f4c8b |