Class: Chocomint::LLM::VerifierClient
- Inherits:
-
Object
- Object
- Chocomint::LLM::VerifierClient
- Defined in:
- lib/chocomint/llm/verifier_client.rb
Overview
副 LLM による意味的検証 (DESIGN §4)。1 または 0 のみを返させる。
Constant Summary collapse
- PROMPT_TEMPLATE =
<<~PROMPT あなたは厳格な監査器です。 ユーザー要求: %<request>s 期待条件: %<expectations>s 実行結果: %<result>s 要求が完全に満たされている場合のみ 1 を返してください。 少しでも不明点・不足・失敗の可能性がある場合は 0 を返してください。 exit_code が 0 で stdout が要求を満たしていれば、stderr に警告・ログめいた 文字列が含まれていても、それだけを理由に不合格にしないでください。 出力は 1 または 0 のみ。 PROMPT
- OVERALL_TEMPLATE =
マルチステップ全体の達成判定プロンプト。 単一結果ではなく、これまで実行した全ステップを踏まえて要求全体を評価させる。
<<~PROMPT あなたは厳格な監査器です。 ユーザー要求: %<request>s 期待条件: %<expectations>s これまでに実行が完了したステップ (順番どおり): %<steps>s 上記のステップ実行の結果として、ユーザー要求が「全体として完全に」満たされたかを判定してください。 まだ実行すべき作業が残っている、または要求の一部しか満たされていない場合は 0 を返してください。 要求が過不足なくすべて達成されている場合のみ 1 を返してください。 出力は 1 または 0 のみ。 PROMPT
Instance Method Summary collapse
-
#initialize(base_client:) ⇒ VerifierClient
constructor
A new instance of VerifierClient.
-
#verify(request:, result:, expectations: nil, trace_id: nil) ⇒ Object
戻り値: "1" / "0" / nil(不正出力 -> RETRY 扱い).
-
#verify_overall(request:, done_steps:, expectations: nil, trace_id: nil) ⇒ Object
マルチステップ全体の達成判定。戻り値: "1" / "0" / nil(不正 -> 未達成扱い)。 done_steps: [{ tool:, arguments:, result: }, ...] 形式の完了済みステップ列。.
Constructor Details
#initialize(base_client:) ⇒ VerifierClient
Returns a new instance of VerifierClient.
50 51 52 |
# File 'lib/chocomint/llm/verifier_client.rb', line 50 def initialize(base_client:) @client = base_client end |
Instance Method Details
#verify(request:, result:, expectations: nil, trace_id: nil) ⇒ Object
戻り値: "1" / "0" / nil(不正出力 -> RETRY 扱い)
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/chocomint/llm/verifier_client.rb', line 73 def verify(request:, result:, expectations: nil, trace_id: nil) prompt = format( PROMPT_TEMPLATE, request: request.to_s, expectations: (expectations || "(なし)").to_s, result: serialize(result) ) response = @client.( messages: [{ "role" => "user", "content" => prompt }], trace_id: trace_id ) normalize(extract_text(response)) end |
#verify_overall(request:, done_steps:, expectations: nil, trace_id: nil) ⇒ Object
マルチステップ全体の達成判定。戻り値: "1" / "0" / nil(不正 -> 未達成扱い)。 done_steps: [{ tool:, arguments:, result: }, ...] 形式の完了済みステップ列。
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/chocomint/llm/verifier_client.rb', line 56 def verify_overall(request:, done_steps:, expectations: nil, trace_id: nil) prompt = format( OVERALL_TEMPLATE, request: request.to_s, expectations: (expectations || "(なし)").to_s, steps: serialize_steps(done_steps) ) response = @client.( messages: [{ "role" => "user", "content" => prompt }], trace_id: trace_id ) normalize(extract_text(response)) end |