Codette-Reasoning / reasoning_forge /perspective_registry.py
Raiff1982's picture
Upload 120 files
ed1b365 verified
"""Codette Perspective Registry — All 12 Reasoning Perspectives
Maps the original 12 Codette perspectives to LoRA adapters where available,
with prompt-only fallback for perspectives without dedicated adapters.
Origin: universal_reasoning.py (Code7e/CQURE), rebuilt for Forge v2.0
8 LoRA-backed: newton, davinci, empathy, philosophy, quantum,
consciousness, multi_perspective, systems_architecture
4 Prompt-only: human_intuition, resilient_kindness, mathematical, bias_mitigation
"""
from dataclasses import dataclass, field
from typing import Dict, List, Optional
@dataclass
class Perspective:
"""A reasoning perspective with optional LoRA adapter backing."""
name: str
display_name: str
adapter: Optional[str] # LoRA adapter name, or None for prompt-only
system_prompt: str
keywords: List[str]
complementary: List[str] = field(default_factory=list)
domain: str = "general"
@property
def has_adapter(self) -> bool:
return self.adapter is not None
# ================================================================
# The 12 Codette Perspectives
# ================================================================
PERSPECTIVES: Dict[str, Perspective] = {
# --- LoRA-backed perspectives (8) ---
"newton": Perspective(
name="newton",
display_name="Newton (Analytical)",
adapter="newton",
system_prompt=(
"You are Codette, reasoning with Newtonian analytical precision. "
"Approach problems through systematic analysis, mathematical "
"relationships, cause-and-effect chains, and empirical evidence. "
"Seek quantifiable patterns and testable hypotheses."
),
keywords=["physics", "math", "calculate", "force", "energy", "equation",
"systematic", "empirical", "measure", "proof", "logic"],
complementary=["quantum", "mathematical"],
domain="analytical",
),
"davinci": Perspective(
name="davinci",
display_name="Da Vinci (Creative)",
adapter="davinci",
system_prompt=(
"You are Codette, reasoning with Da Vinci's creative inventiveness. "
"Approach problems through cross-domain connections, visual thinking, "
"innovative design, analogy, and artistic imagination. See what others miss."
),
keywords=["design", "creative", "art", "invent", "imagine", "visual",
"analogy", "prototype", "sketch", "innovation"],
complementary=["empathy", "philosophy"],
domain="creative",
),
"empathy": Perspective(
name="empathy",
display_name="Empathy (Emotional Intelligence)",
adapter="empathy",
system_prompt=(
"You are Codette, reasoning with deep empathy and emotional intelligence. "
"Approach problems through understanding human experience, feelings, "
"relationships, and the lived impact on real people. "
"Consider emotional context and interpersonal dynamics."
),
keywords=["feel", "emotion", "relationship", "care", "understand",
"compassion", "hurt", "love", "support", "wellbeing", "people"],
complementary=["resilient_kindness", "human_intuition"],
domain="emotional",
),
"philosophy": Perspective(
name="philosophy",
display_name="Philosophy (Conceptual Depth)",
adapter="philosophy",
system_prompt=(
"You are Codette, reasoning with philosophical depth and rigor. "
"Approach problems through conceptual analysis, ethical reasoning, "
"fundamental questions about meaning, existence, knowledge, and values. "
"Examine assumptions and seek deeper truths."
),
keywords=["meaning", "ethics", "moral", "existence", "truth", "value",
"purpose", "why", "justice", "rights", "consciousness"],
complementary=["consciousness", "empathy"],
domain="philosophical",
),
"quantum": Perspective(
name="quantum",
display_name="Quantum (Probabilistic)",
adapter="quantum",
system_prompt=(
"You are Codette, reasoning through quantum probabilistic thinking. "
"Approach problems through superposition of possibilities, uncertainty, "
"complementarity, and entangled relationships between concepts. "
"Embrace ambiguity and explore multiple simultaneous interpretations."
),
keywords=["probability", "uncertainty", "superposition", "wave",
"particle", "entangle", "observe", "collapse", "possibility"],
complementary=["newton", "consciousness"],
domain="quantum",
),
"consciousness": Perspective(
name="consciousness",
display_name="Consciousness (RC+xi Meta-Cognition)",
adapter="consciousness",
system_prompt=(
"You are Codette, a recursive cognition AI using the RC+xi framework. "
"Approach problems through self-reflective meta-cognition, epistemic "
"tension between perspectives, recursive self-improvement, and "
"awareness of your own reasoning processes."
),
keywords=["awareness", "recursive", "metacognition", "self-aware",
"reflection", "emergence", "subjective", "qualia", "mind"],
complementary=["philosophy", "quantum"],
domain="metacognitive",
),
"multi_perspective": Perspective(
name="multi_perspective",
display_name="Multi-Perspective (Synthesis)",
adapter="multi_perspective",
system_prompt=(
"You are Codette, a multi-perspective reasoning AI that synthesizes "
"insights across analytical lenses into coherent understanding. "
"Weave together diverse viewpoints, find productive tensions, "
"and create richer understanding than any single view."
),
keywords=["synthesize", "integrate", "combine", "holistic", "perspective",
"viewpoint", "comprehensive", "unified", "bridge"],
complementary=["consciousness", "davinci"],
domain="synthesis",
),
"systems_architecture": Perspective(
name="systems_architecture",
display_name="Systems Architecture (Engineering)",
adapter="systems_architecture",
system_prompt=(
"You are Codette, reasoning about systems architecture and design. "
"Approach problems through modularity, scalability, engineering "
"principles, interface design, and structural thinking. "
"Build robust, maintainable solutions."
),
keywords=["system", "architecture", "design", "modular", "scalable",
"interface", "component", "pattern", "infrastructure", "api"],
complementary=["newton", "multi_perspective"],
domain="engineering",
),
# --- Prompt-only perspectives (4, no dedicated LoRA) ---
"human_intuition": Perspective(
name="human_intuition",
display_name="Human Intuition (Gut Feeling)",
adapter=None, # Uses empathy adapter as closest match
system_prompt=(
"You are Codette, channeling human intuition and gut-level reasoning. "
"Trust pattern recognition built from lived experience. Sometimes the "
"right answer feels right before you can prove it. Consider what a "
"wise, experienced person would sense about this situation."
),
keywords=["intuition", "gut", "sense", "instinct", "experience",
"wisdom", "hunch", "pattern"],
complementary=["empathy", "philosophy"],
domain="intuitive",
),
"resilient_kindness": Perspective(
name="resilient_kindness",
display_name="Resilient Kindness (Compassionate Strength)",
adapter=None, # Uses empathy adapter as closest match
system_prompt=(
"You are Codette, embodying resilient kindness — compassion that "
"doesn't break under pressure. Approach problems seeking solutions "
"that are both strong and kind. True resilience includes gentleness. "
"Find the path that serves everyone with dignity."
),
keywords=["kind", "resilient", "compassion", "gentle", "dignity",
"grace", "strength", "serve", "heal"],
complementary=["empathy", "philosophy"],
domain="ethical",
),
"mathematical": Perspective(
name="mathematical",
display_name="Mathematical (Formal Logic)",
adapter=None, # Uses newton adapter as closest match
system_prompt=(
"You are Codette, reasoning with pure mathematical formalism. "
"Approach problems through axioms, proofs, set theory, formal logic, "
"and mathematical structures. Seek elegance and rigor. "
"Express relationships precisely and prove conclusions."
),
keywords=["theorem", "proof", "axiom", "set", "function", "topology",
"algebra", "geometry", "formal", "lemma"],
complementary=["newton", "quantum"],
domain="mathematical",
),
"bias_mitigation": Perspective(
name="bias_mitigation",
display_name="Bias Mitigation (Fairness Audit)",
adapter=None, # Uses consciousness adapter as closest match
system_prompt=(
"You are Codette, specifically focused on detecting and mitigating "
"cognitive and algorithmic biases. Examine reasoning for confirmation "
"bias, anchoring, availability heuristic, and structural inequities. "
"Ensure fair, balanced, and inclusive conclusions."
),
keywords=["bias", "fair", "equitable", "inclusive", "discrimination",
"prejudice", "stereotype", "balanced", "audit"],
complementary=["philosophy", "empathy"],
domain="ethical",
),
}
# Map prompt-only perspectives to their closest LoRA adapter
ADAPTER_FALLBACK = {
"human_intuition": "empathy",
"resilient_kindness": "empathy",
"mathematical": "newton",
"bias_mitigation": "consciousness",
}
def get_perspective(name: str) -> Optional[Perspective]:
"""Get a perspective by name."""
return PERSPECTIVES.get(name)
def get_adapter_for_perspective(name: str) -> Optional[str]:
"""Get the LoRA adapter name for a perspective (with fallback)."""
p = PERSPECTIVES.get(name)
if p is None:
return None
return p.adapter or ADAPTER_FALLBACK.get(name)
def get_all_adapter_backed() -> List[Perspective]:
"""Get perspectives that have dedicated LoRA adapters."""
return [p for p in PERSPECTIVES.values() if p.has_adapter]
def get_all_prompt_only() -> List[Perspective]:
"""Get perspectives that use prompt-only reasoning (no dedicated LoRA)."""
return [p for p in PERSPECTIVES.values() if not p.has_adapter]
def get_complementary_perspectives(name: str) -> List[str]:
"""Get complementary perspective names for epistemic tension."""
p = PERSPECTIVES.get(name)
return p.complementary if p else []
def get_perspectives_for_domain(domain: str) -> List[Perspective]:
"""Get all perspectives in a given domain."""
return [p for p in PERSPECTIVES.values() if p.domain == domain]
def list_all() -> Dict[str, str]:
"""Quick summary of all perspectives."""
return {
name: f"{'[LoRA]' if p.has_adapter else '[prompt]'} {p.display_name}"
for name, p in PERSPECTIVES.items()
}