Skip to main content

Advanced Features

Learn how to build automated documentation, robust regression testing, and self-healing systems using VectorWave.

1. AI Auto-Documentation​

Is writing search_description manually a hassle? Leave it to the LLM. It analyzes the function's code to generate a description and can either save it to the Vector DB or inject it directly into the source code.

Setup and Execution​

  1. OpenAI Setup: The .env file must contain the OPENAI_API_KEY.
  2. Mark auto=True: Add auto=True to the decorator.
  3. Generate Metadata: It is recommended to execute this via a separate script rather than at server startup.
# 1. Marking (Source Code)
@vectorize(auto=True)
def complex_algo(data):
pass

# 2. Generation & Injection Script (generate_docs.py)
from vectorwave import generate_and_register_metadata

# inject=True: Automatically inserts the generated description into the source file's Docstring.
generate_and_register_metadata(inject=True)

2. Replay Testing​

This is a powerful feature that utilizes actual data from the production environment as test cases.

🚀 Stronger Verification: VectorCheck (CLI)​

Simple string comparison (assert a == b) is not suitable for testing AI responses. VectorCheck is an independent CLI tool that verifies the AI's "Intent" based on vector similarity.

Installation:

pip install vectorcheck

Configuration (vwtest.ini):

[vectorcheck]
python_paths = src

; 1. LLM Summary Function (High Randomness) -> Pass if similarity is over 85%
[test:my_module.generate_summary]
strategy = similarity
threshold = 0.85

; 2. URL Generation Function (Deterministic) -> Must match exactly
[test:my_module.generate_url]
strategy = exact

Execution:

vw test
vw test --target my_module.generate_summary
vw test --exact

Code-Based Replay (Basic)​

If you want to perform a simple replay within the code without CLI tools, you can use VectorWaveReplayer.

from vectorwave.utils.replayer import VectorWaveReplayer
replayer = VectorWaveReplayer()
result = replayer.replay("my_module.process_payment", limit=10)
print(f"Success: {result['passed']}, Failure: {result['failed']}")

3. Auto-Injection​

You can inject VectorWave functionality externally without directly modifying business logic code (without @vectorize). This is useful for legacy code or libraries where you don't have modification rights.

How to use​

  1. Initialize: Perform DB connection first.
  2. Configure: Set common tags like team, priority, etc.
  3. Inject: Specify the target module path as a string.
  4. Register: When using auto=True mode, batch register the metadata.
from vectorwave import initialize_database, VectorWaveAutoInjector, generate_and_register_metadata
import my_service.payment # Target module (example)

# 1. DB Initialization
initialize_database()

# 2. Configure Global Settings
VectorWaveAutoInjector.configure(
team="billing-team", # Tag to be applied to all injected functions
priority=1,
auto=True # True: Collect metadata in memory (Pending), False: Save immediately
)

# 3. Inject Module
# VectorWave is automatically applied to functions within 'my_service.payment'.
# No need to touch the source code!
VectorWaveAutoInjector.inject("my_service.payment")

# 4. Register Metadata (Required if auto=True)
# Batch save collected metadata from memory to DB.
generate_and_register_metadata()

# 5. Execute Business Logic
# Now, vectorization and logging are performed automatically whenever the function runs.
my_service.payment.process_transaction()

4. Self-Healing​

VectorWaveHealer comprehensively analyzes the error log, past successful logs, and source code for a function where an error occurred, and proposes patched code.

from vectorwave import VectorWaveHealer

healer = VectorWaveHealer(model="gpt-4")
patch = healer.diagnose_and_heal("buggy_function_name")
print(patch) # Output suggested code patch

5. Data Archiving​

You can export old logs to JSONL files or delete them to manage database capacity.

from vectorwave.database.archiver import VectorWaveArchiver

archiver = VectorWaveArchiver()
archiver.export_and_clear(
function_name="my_func",
output_file="data_backup.jsonl",
clear_after_export=True
)

6. Data Drift Detection​

Detects phenomena (Drift) where user input patterns deviate from existing training data.

How it Works​

When new input data comes in, it calculates the Vector Distance from existing stored data. If the distance exceeds the threshold (DRIFT_DISTANCE_THRESHOLD), it is likely a new type of data.

Configuration (.env)​

DRIFT_DETECTION_ENABLED=True
DRIFT_DISTANCE_THRESHOLD=0.25

7. Golden Dataset Management​

Establish verified correct data (Golden Data) that serves as a standard for regression testing or self-healing.

Using the Dataset Manager​

from vectorwave.database.dataset import VectorWaveDatasetManager
manager = VectorWaveDatasetManager()

1. Register Golden Data​

Promote verified execution logs to Golden Data.

manager.register_as_golden(log_uuid="...", note="Standard success case")