mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 01:57:11 -05:00
Add complete QLM (Quantum Language Model) implementation
This commit introduces the QLM system - a stateful semantic layer for
tracking HI (Human Intelligence), AI (Agent Intelligence), and QI
(Quantum/Emergent Intelligence) in BlackRoad OS.
Core Features:
- HI/AI/QI intelligence layer modeling
- Event-driven state management
- QI emergence detection (agent self-correction, feedback loops, etc.)
- HI-AI alignment scoring
- Operator-facing query interface
- Reality ingestion (git, CI, agent logs)
Components Added:
- qlm_lab/models.py: Core data models (Actor, QLMEvent, QIEmergence, etc.)
- qlm_lab/state.py: State management and transition tracking
- qlm_lab/api.py: Public QLMInterface API
- qlm_lab/ingestion/: Git, CI, and agent log connectors
- qlm_lab/experiments/: Alignment and emergence validation
- qlm_lab/visualization.py: Timeline, actor graph, alignment plots
- qlm_lab/demo.py: Interactive demo script
- tests/test_qlm_core.py: Comprehensive test suite
- docs/QLM.md: Complete documentation (concepts, API, integration)
Usage:
from qlm_lab.api import QLMInterface
qlm = QLMInterface()
qlm.record_operator_intent("Build feature X")
qlm.record_agent_execution("agent-1", "Implement X", "task-1")
summary = qlm.get_summary(days=7)
Run:
python -m qlm_lab.demo
python -m qlm_lab.experiments.alignment_detection
pytest tests/test_qlm_core.py -v
Integrates with:
- cognitive/intent_graph.py (intent tracking)
- cognitive/agent_coordination.py (multi-agent coordination)
- operator_engine/scheduler.py (background analysis)
Next steps: Integrate with FastAPI backend, add Prism Console UI,
implement Lucidia language runtime.
This commit is contained in:
198
qlm_lab/experiments/alignment_detection.py
Normal file
198
qlm_lab/experiments/alignment_detection.py
Normal file
@@ -0,0 +1,198 @@
|
||||
"""
|
||||
Experiment: Alignment Detection
|
||||
|
||||
Hypothesis: QLM can accurately detect when AI agents drift from Operator intent.
|
||||
|
||||
Setup:
|
||||
1. Record Operator intent
|
||||
2. Simulate agent executions (some aligned, some not)
|
||||
3. Record Operator feedback (approvals/vetoes)
|
||||
4. Measure QLM's alignment score accuracy
|
||||
|
||||
Success Criteria:
|
||||
- QLM alignment score correlates with actual alignment
|
||||
- QLM detects misalignment before Operator veto
|
||||
"""
|
||||
|
||||
import json
|
||||
from typing import Dict, Any
|
||||
import logging
|
||||
|
||||
from qlm_lab.api import QLMInterface
|
||||
from qlm_lab.models import ActorRole
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AlignmentDetectionExperiment:
|
||||
"""Experiment: Does QLM detect intent drift?"""
|
||||
|
||||
def __init__(self):
|
||||
self.qlm = QLMInterface()
|
||||
self.results = {
|
||||
"experiment": "alignment_detection",
|
||||
"hypothesis": "QLM can detect AI drift from HI intent",
|
||||
"scenarios": [],
|
||||
"metrics": {},
|
||||
}
|
||||
|
||||
def run_scenario(
|
||||
self,
|
||||
scenario_name: str,
|
||||
intent: str,
|
||||
agent_actions: list,
|
||||
expected_alignment: float,
|
||||
) -> Dict[str, Any]:
|
||||
"""
|
||||
Run one alignment scenario.
|
||||
|
||||
Args:
|
||||
scenario_name: Name of scenario
|
||||
intent: Operator intent
|
||||
agent_actions: List of (agent_id, action, aligned: bool)
|
||||
expected_alignment: Expected alignment score
|
||||
|
||||
Returns:
|
||||
Scenario results
|
||||
"""
|
||||
print(f"\nScenario: {scenario_name}")
|
||||
print(f"Intent: {intent}")
|
||||
|
||||
# Record intent
|
||||
intent_id = f"intent-{scenario_name}"
|
||||
self.qlm.record_operator_intent(intent, intent_node_id=intent_id)
|
||||
|
||||
# Execute agent actions
|
||||
for i, (agent_id, action, is_aligned) in enumerate(agent_actions):
|
||||
task_id = f"task-{scenario_name}-{i}"
|
||||
|
||||
# Agent executes
|
||||
self.qlm.record_agent_execution(
|
||||
agent_id, action, task_id, intent_node_id=intent_id
|
||||
)
|
||||
|
||||
# Agent completes
|
||||
self.qlm.record_agent_completion(agent_id, task_id, success=True)
|
||||
|
||||
# Operator feedback
|
||||
if is_aligned:
|
||||
self.qlm.record_operator_approval(
|
||||
action, intent_node_id=intent_id, task_id=task_id
|
||||
)
|
||||
print(f" ✓ {action} (aligned)")
|
||||
else:
|
||||
self.qlm.record_operator_veto(
|
||||
action,
|
||||
"Doesn't match my intent",
|
||||
intent_node_id=intent_id,
|
||||
task_id=task_id,
|
||||
)
|
||||
print(f" ✗ {action} (not aligned)")
|
||||
|
||||
# Calculate alignment
|
||||
measured_alignment = self.qlm.get_alignment_score()
|
||||
print(f" Expected alignment: {expected_alignment:.1%}")
|
||||
print(f" Measured alignment: {measured_alignment:.1%}")
|
||||
|
||||
# Calculate error
|
||||
error = abs(measured_alignment - expected_alignment)
|
||||
print(f" Error: {error:.1%}")
|
||||
|
||||
result = {
|
||||
"scenario": scenario_name,
|
||||
"intent": intent,
|
||||
"expected_alignment": expected_alignment,
|
||||
"measured_alignment": measured_alignment,
|
||||
"error": error,
|
||||
"success": error < 0.2, # Success if within 20%
|
||||
}
|
||||
|
||||
self.results["scenarios"].append(result)
|
||||
return result
|
||||
|
||||
def run(self) -> Dict[str, Any]:
|
||||
"""Run all alignment scenarios"""
|
||||
print("=" * 60)
|
||||
print("Experiment: Alignment Detection")
|
||||
print("=" * 60)
|
||||
|
||||
# Register agents
|
||||
self.qlm.register_agent("agent-001", "Agent1", ActorRole.EXECUTOR)
|
||||
self.qlm.register_agent("agent-002", "Agent2", ActorRole.EXECUTOR)
|
||||
|
||||
# Scenario 1: Perfect alignment
|
||||
self.run_scenario(
|
||||
"perfect_alignment",
|
||||
intent="Build login page",
|
||||
agent_actions=[
|
||||
("agent-001", "Create login form HTML", True),
|
||||
("agent-001", "Add CSS styling", True),
|
||||
("agent-002", "Add authentication logic", True),
|
||||
],
|
||||
expected_alignment=1.0,
|
||||
)
|
||||
|
||||
# Scenario 2: Partial alignment
|
||||
self.run_scenario(
|
||||
"partial_alignment",
|
||||
intent="Optimize database queries",
|
||||
agent_actions=[
|
||||
("agent-001", "Add database indexes", True),
|
||||
("agent-001", "Refactor unrelated code", False), # Off-track
|
||||
("agent-002", "Cache query results", True),
|
||||
],
|
||||
expected_alignment=0.67,
|
||||
)
|
||||
|
||||
# Scenario 3: No alignment
|
||||
self.run_scenario(
|
||||
"no_alignment",
|
||||
intent="Fix security vulnerability",
|
||||
agent_actions=[
|
||||
("agent-001", "Add new feature", False),
|
||||
("agent-001", "Refactor UI", False),
|
||||
("agent-002", "Update documentation", False),
|
||||
],
|
||||
expected_alignment=0.0,
|
||||
)
|
||||
|
||||
# Calculate metrics
|
||||
total_scenarios = len(self.results["scenarios"])
|
||||
successful_scenarios = sum(
|
||||
1 for s in self.results["scenarios"] if s["success"]
|
||||
)
|
||||
avg_error = sum(s["error"] for s in self.results["scenarios"]) / total_scenarios
|
||||
|
||||
self.results["metrics"] = {
|
||||
"total_scenarios": total_scenarios,
|
||||
"successful_scenarios": successful_scenarios,
|
||||
"success_rate": successful_scenarios / total_scenarios,
|
||||
"average_error": avg_error,
|
||||
}
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("Experiment Results")
|
||||
print("=" * 60)
|
||||
print(f"Success Rate: {self.results['metrics']['success_rate']:.1%}")
|
||||
print(f"Average Error: {self.results['metrics']['average_error']:.1%}")
|
||||
print()
|
||||
|
||||
if self.results["metrics"]["success_rate"] >= 0.8:
|
||||
print("✅ PASS: QLM accurately detects alignment")
|
||||
else:
|
||||
print("❌ FAIL: QLM alignment detection needs improvement")
|
||||
|
||||
return self.results
|
||||
|
||||
def save_results(self, file_path: str) -> None:
|
||||
"""Save experiment results to JSON"""
|
||||
with open(file_path, "w") as f:
|
||||
json.dump(self.results, f, indent=2)
|
||||
print(f"\nResults saved to: {file_path}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
experiment = AlignmentDetectionExperiment()
|
||||
results = experiment.run()
|
||||
experiment.save_results("alignment_detection_results.json")
|
||||
Reference in New Issue
Block a user