Class: Chocomint::Validator::SemanticValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/chocomint/validator/semantic_validator.rb

Overview

副 LLM による意味的検証 (DESIGN §4)。 verifier 無効時は常に合格。有効時は 1/0 のみを合否とし、 不正出力 (nil) は「不合格 = RETRY」として扱う (DESIGN §14)。

Constant Summary collapse

FILE_CONTENT_TOOLS =

result にファイル内容を含まないツール (write_file 等は「N bytes 書いた」 としか返さない) は、verifier が中身を確認できず不当に不合格判定しがちなので、 対象ファイルの中身を読んで result に付加してから渡す。

%w[write_file append_file edit].freeze

Instance Method Summary collapse

Constructor Details

#initialize(verifier_client:, enabled:, path_guard: nil) ⇒ SemanticValidator

Returns a new instance of SemanticValidator.



14
15
16
17
18
# File 'lib/chocomint/validator/semantic_validator.rb', line 14

def initialize(verifier_client:, enabled:, path_guard: nil)
  @verifier_client = verifier_client
  @enabled = enabled
  @path_guard = path_guard
end

Instance Method Details

#validate(request:, result:, expectations: nil, trace_id: nil, proposal: nil) ⇒ Object

戻り値: [pass(boolean), verifier_output(String|nil)]



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/chocomint/validator/semantic_validator.rb', line 21

def validate(request:, result:, expectations: nil, trace_id: nil, proposal: nil)
  return [true, nil] unless @enabled

  output = @verifier_client.verify(
    request: request,
    expectations: expectations,
    result: augment_with_file_content(result, proposal),
    trace_id: trace_id
  )

  [output == "1", output]
end