AI Feedback (lexigram-ai-feedback)
AI feedback collection for the Lexigram Framework — collection, processing, and storage
Overview
Section titled “Overview”AI feedback collection and continuous-learning loop for the Lexigram Framework. Captures user ratings, corrections, text feedback, and ground-truth labels from LLM interactions and routes them through an extensible processor pipeline to configurable storage backends. Zero-config usage starts with sensible defaults.
Install
Section titled “Install”uv add lexigram-ai-feedbackQuick Start
Section titled “Quick Start”from lexigram import Applicationfrom lexigram.di.module import Module, module
from lexigram.ai.feedback import FeedbackModulefrom lexigram.ai.feedback.config import FeedbackConfig
@module(imports=[ FeedbackModule.configure( FeedbackConfig( enabled=True, async_processing=True, store_raw_payloads=False, ) )])class AppModule(Module): pass
app = Application(modules=[AppModule])if __name__ == "__main__": app.run()Configuration
Section titled “Configuration”Zero-config usage: Call
FeedbackModule.configure()with no arguments to use defaults.
Option 1 — YAML file
Section titled “Option 1 — YAML file”ai_feedback: enabled: true async_processing: true store_raw_payloads: falseOption 2 — Profiles + Environment Variables (recommended)
Section titled “Option 2 — Profiles + Environment Variables (recommended)”export LEX_AI_FEEDBACK__ENABLED=true# Environment variables for each fieldOption 3 — Python
Section titled “Option 3 — Python”from lexigram.ai.feedback.config import FeedbackConfigfrom lexigram.ai.feedback import FeedbackModule
config = FeedbackConfig( enabled=True, async_processing=True, store_raw_payloads=False,)FeedbackModule.configure(config)Config reference
Section titled “Config reference”| Field | Default | Env var | Description |
|---|---|---|---|
enabled | True | LEX_AI_FEEDBACK__ENABLED | Master on/off switch for all feedback collection |
async_processing | True | LEX_AI_FEEDBACK__ASYNC_PROCESSING | Process feedback handlers asynchronously in the background |
store_raw_payloads | False | LEX_AI_FEEDBACK__STORE_RAW_PAYLOADS | Persist raw incoming feedback payloads for auditing |
Module Factory Methods
Section titled “Module Factory Methods”| Method | Description |
|---|---|
FeedbackModule.configure(config) | Configure with explicit config |
FeedbackModule.stub() | Minimal config for testing |
Key Features
Section titled “Key Features”- Four feedback types: Rating, free-text, correction (original → corrected), and ground-truth labels
- Extensible processor pipeline: Custom processors via
FeedbackProcessorRegistry - Storage backends: In-memory, database (
DatabaseFeedbackStore), and cache (CachedFeedbackStore) - Middleware integration:
FeedbackMiddlewareandFeedbackContextfor request/response capture - Lifecycle hooks:
FeedbackSubmittedHook,FeedbackProcessedHook,FeedbackStoredHook
Testing
Section titled “Testing”async with Application.boot(modules=[FeedbackModule.stub()]) as app: # your test code ...Key Source Files
Section titled “Key Source Files”| File | What it contains |
|---|---|
src/lexigram/ai/feedback/module.py | FeedbackModule.configure(), .stub() |
src/lexigram/ai/feedback/config.py | FeedbackConfig |
src/lexigram/ai/feedback/services/collector.py | FeedbackCollector core service |
src/lexigram/ai/feedback/storage/database.py | DatabaseFeedbackStore |
src/lexigram/ai/feedback/storage/cache.py | CachedFeedbackStore |
src/lexigram/ai/feedback/processors/processor_registry.py | FeedbackProcessorRegistry |
src/lexigram/ai/feedback/di/provider.py | FeedbackProvider boot and registration |