Module: Legion::Extensions::Agentic::Self::MetacognitiveMonitoring::Runners::MetacognitiveMonitoring
- Includes:
- Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb
Instance Method Summary collapse
- #average_effort(window: Helpers::CALIBRATION_WINDOW, engine: nil) ⇒ Object
- #calibration_curve(bins: 5, engine: nil) ⇒ Object
- #calibration_report(engine: nil) ⇒ Object
- #detect_overconfidence(engine: nil) ⇒ Object
- #detect_underconfidence(engine: nil) ⇒ Object
- #feeling_of_knowing(domain:, query: nil, engine: nil) ⇒ Object
- #judgment_of_learning(domain:, content: nil, engine: nil) ⇒ Object
- #monitoring_report(engine: nil) ⇒ Object
- #record_judgment(type:, domain:, predicted_confidence: Helpers::DEFAULT_CONFIDENCE, effort: 0.5, engine: nil) ⇒ Object
- #resolve_judgment(judgment_id:, actual_outcome:, engine: nil) ⇒ Object
Instance Method Details
#average_effort(window: Helpers::CALIBRATION_WINDOW, engine: nil) ⇒ Object
124 125 126 127 128 129 130 131 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 124 def average_effort(window: Helpers::CALIBRATION_WINDOW, engine: nil, **) eng = engine || monitoring_engine effort = eng.average_effort(window: window) label = Helpers::EFFORT_LABELS.find { |range, _| range.cover?(effort) }&.last { success: true, average_effort: effort, effort_label: label, window: window } end |
#calibration_curve(bins: 5, engine: nil) ⇒ Object
133 134 135 136 137 138 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 133 def calibration_curve(bins: 5, engine: nil, **) eng = engine || monitoring_engine curve = eng.calibration.calibration_curve(bins: bins) { success: true, bins: bins, curve: curve } end |
#calibration_report(engine: nil) ⇒ Object
106 107 108 109 110 111 112 113 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 106 def calibration_report(engine: nil, **) eng = engine || monitoring_engine report = eng.calibration_report log.debug "[metacognitive] calibration_report domains=#{report[:by_domain].size}" { success: true, report: report } end |
#detect_overconfidence(engine: nil) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 80 def detect_overconfidence(engine: nil, **) eng = engine || monitoring_engine findings = eng.detect_overconfidence log.debug "[metacognitive] overconfidence_scan count=#{findings.size}" { success: true, count: findings.size, findings: findings.map(&:to_h) } end |
#detect_underconfidence(engine: nil) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 93 def detect_underconfidence(engine: nil, **) eng = engine || monitoring_engine findings = eng.detect_underconfidence log.debug "[metacognitive] underconfidence_scan count=#{findings.size}" { success: true, count: findings.size, findings: findings.map(&:to_h) } end |
#feeling_of_knowing(domain:, query: nil, engine: nil) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 50 def feeling_of_knowing(domain:, query: nil, engine: nil, **) eng = engine || monitoring_engine judgment = eng.feeling_of_knowing(domain: domain, query: query) log.debug "[metacognitive] fok domain=#{domain} confidence=#{judgment.predicted_confidence.round(2)}" { success: true, judgment_id: judgment.id, domain: domain, predicted_confidence: judgment.predicted_confidence, confidence_label: judgment.confidence_label } end |
#judgment_of_learning(domain:, content: nil, engine: nil) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 65 def judgment_of_learning(domain:, content: nil, engine: nil, **) eng = engine || monitoring_engine judgment = eng.judgment_of_learning(domain: domain, content: content) log.debug "[metacognitive] jol domain=#{domain} confidence=#{judgment.predicted_confidence.round(2)}" { success: true, judgment_id: judgment.id, domain: domain, predicted_confidence: judgment.predicted_confidence, confidence_label: judgment.confidence_label } end |
#monitoring_report(engine: nil) ⇒ Object
115 116 117 118 119 120 121 122 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 115 def monitoring_report(engine: nil, **) eng = engine || monitoring_engine report = eng.monitoring_report log.debug "[metacognitive] monitoring_report total=#{report[:total_judgments]}" { success: true, report: report } end |
#record_judgment(type:, domain:, predicted_confidence: Helpers::DEFAULT_CONFIDENCE, effort: 0.5, engine: nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 15 def record_judgment(type:, domain:, predicted_confidence: Helpers::DEFAULT_CONFIDENCE, effort: 0.5, engine: nil, **) eng = engine || monitoring_engine type_sym = type.to_sym return { success: false, error: :invalid_judgment_type, valid_types: Helpers::JUDGMENT_TYPES } unless Helpers::JUDGMENT_TYPES.include?(type_sym) judgment = eng.record_judgment( type: type_sym, domain: domain, predicted_confidence: predicted_confidence, effort: effort ) log.debug "[metacognitive] record_judgment type=#{type_sym} domain=#{domain} " \ "confidence=#{judgment.predicted_confidence.round(2)} id=#{judgment.id[0..7]}" { success: true, judgment_id: judgment.id, judgment: judgment.to_h } end |
#resolve_judgment(judgment_id:, actual_outcome:, engine: nil) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/legion/extensions/agentic/self/metacognitive_monitoring/runners/metacognitive_monitoring.rb', line 35 def resolve_judgment(judgment_id:, actual_outcome:, engine: nil, **) eng = engine || monitoring_engine judgment = eng.resolve_judgment(judgment_id: judgment_id, actual_outcome: actual_outcome) unless judgment log.debug "[metacognitive] resolve_judgment not_found id=#{judgment_id[0..7]}" return { success: false, error: :not_found } end log.info "[metacognitive] resolved judgment=#{judgment_id[0..7]} " \ "error=#{judgment.calibration_error&.round(3)}" { success: true, judgment_id: judgment_id, judgment: judgment.to_h } end |