Class: Agentic::Verification::CriticFramework

Inherits:
Object
  • Object
show all
Defined in:
lib/agentic/verification/critic_framework.rb

Overview

Framework for multi-perspective evaluation of task results

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(critics: [], config: {}) ⇒ CriticFramework

Initializes a new CriticFramework

Parameters:

  • critics (Array<Critic>) (defaults to: [])

    The critics to register

  • config (Hash) (defaults to: {})

    Configuration options for the framework



16
17
18
19
# File 'lib/agentic/verification/critic_framework.rb', line 16

def initialize(critics: [], config: {})
  @critics = critics
  @config = config
end

Instance Attribute Details

#configHash (readonly)

Returns Configuration options for the framework.

Returns:

  • (Hash)

    Configuration options for the framework



11
12
13
# File 'lib/agentic/verification/critic_framework.rb', line 11

def config
  @config
end

#criticsArray<Critic> (readonly)

Returns The critics registered with this framework.

Returns:

  • (Array<Critic>)

    The critics registered with this framework



8
9
10
# File 'lib/agentic/verification/critic_framework.rb', line 8

def critics
  @critics
end

Instance Method Details

#add_critic(critic) ⇒ void

This method returns an undefined value.

Adds a critic to the framework

Parameters:

  • critic (Critic)

    The critic to add



24
25
26
# File 'lib/agentic/verification/critic_framework.rb', line 24

def add_critic(critic)
  @critics << critic
end

#evaluate(task, result) ⇒ CriticResult

Evaluates a task result using all registered critics

Parameters:

  • task (Task)

    The task to evaluate

  • result (TaskResult)

    The result to evaluate

Returns:



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/agentic/verification/critic_framework.rb', line 32

def evaluate(task, result)
  evaluations = @critics.map { |critic| critic.critique(task, result) }

  # Aggregate critic evaluations
  positive_critiques = evaluations.count(&:positive?)
  total_critiques = evaluations.size
  confidence = (total_critiques > 0) ? positive_critiques.to_f / total_critiques : 0.5

  comments = evaluations.flat_map(&:comments)

  CriticResult.new(
    task_id: task.id,
    confidence: confidence,
    verdict: confidence >= 0.7, # Pass if 70% or more critics give positive evaluation
    comments: comments
  )
end