Class: Chocomint::Validator::SemanticValidator
- Inherits:
-
Object
- Object
- Chocomint::Validator::SemanticValidator
- 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
-
#initialize(verifier_client:, enabled:, path_guard: nil) ⇒ SemanticValidator
constructor
A new instance of SemanticValidator.
-
#validate(request:, result:, expectations: nil, trace_id: nil, proposal: nil) ⇒ Object
戻り値: [pass(boolean), verifier_output(String|nil)].
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 |