Module: Legion::Extensions::Agentic::Inference::FreeEnergy::Runners::FreeEnergy
- Includes:
- Helpers::Constants, Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb
Constant Summary
Helpers::Constants::DEFAULT_PRECISION, Helpers::Constants::FREE_ENERGY_THRESHOLD, Helpers::Constants::INFERENCE_MODES, Helpers::Constants::LEARNING_RATE, Helpers::Constants::MAX_ACTIONS, Helpers::Constants::MAX_BELIEFS, Helpers::Constants::MAX_HISTORY, Helpers::Constants::PRECISION_CEILING, Helpers::Constants::PRECISION_DECAY, Helpers::Constants::PRECISION_FLOOR, Helpers::Constants::PRECISION_UPDATE_RATE, Helpers::Constants::STALE_THRESHOLD, Helpers::Constants::SURPRISE_LABELS
Instance Method Summary
collapse
Instance Method Details
#add_generative_belief(content:, domain: :general, prediction: {}, precision: DEFAULT_PRECISION) ⇒ Object
13
14
15
16
17
18
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 13
def add_generative_belief(content:, domain: :general, prediction: {}, precision: DEFAULT_PRECISION, **)
belief = engine.add_belief(content: content, domain: domain, prediction: prediction, precision: precision)
return { success: false, reason: :limit_reached } unless belief
{ success: true, belief_id: belief.id, precision: belief.precision }
end
|
#compute_free_energy ⇒ Object
45
46
47
48
49
50
51
52
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 45
def compute_free_energy(**)
{
success: true,
total_free_energy: engine.total_free_energy.round(4),
surprise_level: engine.surprise_level,
high_surprise_count: engine.high_surprise_beliefs.size
}
end
|
#domain_free_energy(domain:) ⇒ Object
68
69
70
71
72
73
74
75
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 68
def domain_free_energy(domain:, **)
{
success: true,
domain: domain,
free_energy: engine.domain_free_energy(domain: domain).round(4),
belief_count: engine.domain_beliefs(domain: domain).size
}
end
|
#free_energy_stats ⇒ Object
82
83
84
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 82
def free_energy_stats(**)
{ success: true }.merge(engine.to_h)
end
|
#high_surprise_beliefs ⇒ Object
63
64
65
66
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 63
def high_surprise_beliefs(**)
beliefs = engine.high_surprise_beliefs
{ success: true, beliefs: beliefs, count: beliefs.size }
end
|
#minimize_free_energy(belief_id:, mode: :perceptual) ⇒ Object
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 34
def minimize_free_energy(belief_id:, mode: :perceptual, **)
result = engine.minimize(belief_id: belief_id, mode: mode)
return { success: false, reason: :not_found } unless result
if mode == :active
{ success: true, mode: :active }.merge(result)
else
{ success: true, mode: :perceptual, belief_id: result.id, prediction: result.prediction }
end
end
|
#observe_outcome(belief_id:, observation:) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 20
def observe_outcome(belief_id:, observation:, **)
belief = engine.observe(belief_id: belief_id, observation: observation)
return { success: false, reason: :not_found } unless belief
{
success: true,
belief_id: belief_id,
prediction_error: belief.prediction_error.round(4),
free_energy: belief.free_energy.round(4),
surprising: belief.surprising?,
surprise_label: belief.surprise_label
}
end
|
#surprise_assessment ⇒ Object
54
55
56
57
58
59
60
61
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 54
def surprise_assessment(**)
{
success: true,
surprise_level: engine.surprise_level,
most_surprising: engine.most_surprising,
most_precise: engine.most_precise
}
end
|
#update_free_energy ⇒ Object
77
78
79
80
|
# File 'lib/legion/extensions/agentic/inference/free_energy/runners/free_energy.rb', line 77
def update_free_energy(**)
engine.decay_stale
{ success: true }.merge(engine.to_h)
end
|