Class: Legion::Extensions::Agentic::Executive::DualProcess::Helpers::Heuristic
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Executive::DualProcess::Helpers::Heuristic
- Defined in:
- lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb
Instance Attribute Summary collapse
-
#confidence ⇒ Object
readonly
Returns the value of attribute confidence.
-
#created_at ⇒ Object
readonly
Returns the value of attribute created_at.
-
#domain ⇒ Object
readonly
Returns the value of attribute domain.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#last_used_at ⇒ Object
readonly
Returns the value of attribute last_used_at.
-
#pattern ⇒ Object
readonly
Returns the value of attribute pattern.
-
#response ⇒ Object
readonly
Returns the value of attribute response.
-
#success_count ⇒ Object
readonly
Returns the value of attribute success_count.
-
#use_count ⇒ Object
readonly
Returns the value of attribute use_count.
Instance Method Summary collapse
-
#initialize(pattern:, domain:, response:, confidence: Constants::DEFAULT_CONFIDENCE) ⇒ Heuristic
constructor
A new instance of Heuristic.
- #reliable? ⇒ Boolean
- #success_rate ⇒ Object
- #to_h ⇒ Object
- #use!(success: true) ⇒ Object
Constructor Details
#initialize(pattern:, domain:, response:, confidence: Constants::DEFAULT_CONFIDENCE) ⇒ Heuristic
Returns a new instance of Heuristic.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 15 def initialize(pattern:, domain:, response:, confidence: Constants::DEFAULT_CONFIDENCE) @id = SecureRandom.uuid @pattern = pattern @domain = domain @response = response @confidence = confidence.clamp(Constants::CONFIDENCE_FLOOR, Constants::CONFIDENCE_CEILING) @use_count = 0 @success_count = 0 @created_at = Time.now.utc @last_used_at = nil end |
Instance Attribute Details
#confidence ⇒ Object (readonly)
Returns the value of attribute confidence.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def confidence @confidence end |
#created_at ⇒ Object (readonly)
Returns the value of attribute created_at.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def created_at @created_at end |
#domain ⇒ Object (readonly)
Returns the value of attribute domain.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def domain @domain end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def id @id end |
#last_used_at ⇒ Object (readonly)
Returns the value of attribute last_used_at.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def last_used_at @last_used_at end |
#pattern ⇒ Object (readonly)
Returns the value of attribute pattern.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def pattern @pattern end |
#response ⇒ Object (readonly)
Returns the value of attribute response.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def response @response end |
#success_count ⇒ Object (readonly)
Returns the value of attribute success_count.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def success_count @success_count end |
#use_count ⇒ Object (readonly)
Returns the value of attribute use_count.
12 13 14 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 12 def use_count @use_count end |
Instance Method Details
#reliable? ⇒ Boolean
42 43 44 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 42 def reliable? success_rate >= 0.7 && @use_count >= 3 end |
#success_rate ⇒ Object
36 37 38 39 40 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 36 def success_rate return 0.0 if @use_count.zero? @success_count.to_f / @use_count end |
#to_h ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 46 def to_h { id: @id, pattern: @pattern, domain: @domain, response: @response, confidence: @confidence, use_count: @use_count, success_count: @success_count, success_rate: success_rate, reliable: reliable?, created_at: @created_at, last_used_at: @last_used_at } end |
#use!(success: true) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/legion/extensions/agentic/executive/dual_process/helpers/heuristic.rb', line 27 def use!(success: true) @use_count += 1 @last_used_at = Time.now.utc @success_count += 1 if success delta = success ? Constants::HEURISTIC_BOOST : -Constants::HEURISTIC_BOOST @confidence = (@confidence + delta).clamp(Constants::CONFIDENCE_FLOOR, Constants::CONFIDENCE_CEILING) end |