Class: Legion::Extensions::Agentic::Inference::ArgumentMapping::Helpers::ArgumentEngine
- Inherits:
-
Object
- Object
- Legion::Extensions::Agentic::Inference::ArgumentMapping::Helpers::ArgumentEngine
show all
- Includes:
- Constants
- Defined in:
- lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb
Constant Summary
Constants included
from Constants
Constants::ARGUMENT_STRENGTHS, Constants::BACKING_WEIGHT, Constants::DECAY_RATE, Constants::DEFAULT_STRENGTH, Constants::GROUND_WEIGHT, Constants::MAX_ARGUMENTS, Constants::MAX_HISTORY, Constants::QUALIFIER_TYPES, Constants::REBUTTAL_IMPACT_LABELS, Constants::REBUTTAL_PENALTY, Constants::WARRANT_WEIGHT
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of ArgumentEngine.
14
15
16
17
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 14
def initialize
@arguments = {}
@history = []
end
|
Instance Attribute Details
#arguments ⇒ Object
Returns the value of attribute arguments.
12
13
14
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 12
def arguments
@arguments
end
|
#history ⇒ Object
Returns the value of attribute history.
12
13
14
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 12
def history
@history
end
|
Instance Method Details
#add_backing(argument_id:, backing:) ⇒ Object
39
40
41
42
43
44
45
46
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 39
def add_backing(argument_id:, backing:)
argument = @arguments[argument_id]
return { success: false, reason: :not_found } unless argument
argument.add_backing(backing: backing)
add_history(type: :backing_added, argument_id: argument_id)
{ success: true, argument: argument.to_h }
end
|
#add_ground(argument_id:, ground:) ⇒ Object
30
31
32
33
34
35
36
37
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 30
def add_ground(argument_id:, ground:)
argument = @arguments[argument_id]
return { success: false, reason: :not_found } unless argument
argument.add_ground(ground: ground)
add_history(type: :ground_added, argument_id: argument_id)
{ success: true, argument: argument.to_h }
end
|
#add_rebuttal(argument_id:, content:, impact: 0.5) ⇒ Object
48
49
50
51
52
53
54
55
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 48
def add_rebuttal(argument_id:, content:, impact: 0.5)
argument = @arguments[argument_id]
return { success: false, reason: :not_found } unless argument
argument.add_rebuttal(content: content, impact: impact)
add_history(type: :rebuttal_added, argument_id: argument_id, impact: impact)
{ success: true, argument: argument.to_h }
end
|
#arguments_by_domain(domain:) ⇒ Object
84
85
86
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 84
def arguments_by_domain(domain:)
@arguments.values.select { |a| a.domain == domain }
end
|
#assess_argument(argument_id:) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 57
def assess_argument(argument_id:)
argument = @arguments[argument_id]
return { success: false, reason: :not_found } unless argument
{
success: true,
argument_id: argument_id,
claim: argument.claim,
domain: argument.domain,
strength: argument.strength,
strength_label: argument.strength_label,
sound: argument.sound?,
rebutted: argument.rebutted?,
ground_count: argument.grounds.size,
backing_count: argument.backing.size,
rebuttal_count: argument.rebuttals.size
}
end
|
#create_argument(claim:, domain: :general, warrant: nil, qualifier: :presumably) ⇒ Object
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 19
def create_argument(claim:, domain: :general, warrant: nil, qualifier: :presumably)
return { success: false, reason: :max_arguments_reached } if @arguments.size >= MAX_ARGUMENTS
id = generate_id('arg')
argument = Argument.new(id: id, claim: claim, domain: domain,
warrant: warrant, qualifier: qualifier)
@arguments[id] = argument
add_history(type: :created, argument_id: id, claim: claim, domain: domain)
{ success: true, argument: argument.to_h }
end
|
#decay_all ⇒ Object
96
97
98
99
100
101
102
103
104
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 96
def decay_all
@arguments.each_value do |argument|
next unless argument.instance_variable_defined?(:@base_strength)
current = argument.instance_variable_get(:@base_strength)
argument.instance_variable_set(:@base_strength, [current - DECAY_RATE, 0.0].max)
end
@arguments.size
end
|
#rebutted_arguments ⇒ Object
80
81
82
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 80
def rebutted_arguments
@arguments.values.select(&:rebutted?)
end
|
#sound_arguments ⇒ Object
76
77
78
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 76
def sound_arguments
@arguments.values.select(&:sound?)
end
|
#strongest_arguments(limit: 5) ⇒ Object
88
89
90
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 88
def strongest_arguments(limit: 5)
@arguments.values.sort_by { |a| -a.strength }.first(limit)
end
|
#to_h ⇒ Object
106
107
108
109
110
111
112
113
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 106
def to_h
{
total_arguments: @arguments.size,
sound_arguments: sound_arguments.size,
rebutted_arguments: rebutted_arguments.size,
history_entries: @history.size
}
end
|
#weakest_arguments(limit: 5) ⇒ Object
92
93
94
|
# File 'lib/legion/extensions/agentic/inference/argument_mapping/helpers/argument_engine.rb', line 92
def weakest_arguments(limit: 5)
@arguments.values.sort_by(&:strength).first(limit)
end
|