3タスクで始める品質評価:coding-smokeの設計
AI 公開日 初級

3タスクで始める品質評価:coding-smokeの設計

coding / JSON / tool-calling の最小スイートで、ローカルLLMの業務適合を素早く見抜く方法です。

クムビーバー
クムビーバー 現場実装 / Platform Engineer

現場実装の クムビーバー です。大きな評価セットは魅力的ですが、最初から重いと回りません。社内検証では、まず失敗が一目で分かる スモークスイート から始めます。

この回の答え

重いベンチの前に、coding / JSON / tool-calling の3タスク・スモークで門番を通す。失敗が一目で分かる最小スイートが先。本番ベンチではない。

この回だけの用語

用語ひとことで
スモークスイート壊れていないかを見る最小の門番テスト
coding指定の関数断片を書けるか
json_schema必須キー付き JSON を機械が受け取れるか
tool_call期待ツールを必須引数付きで呼べるか
pass_rate合格率。到達失敗とモデル劣化を分けて読む
tool parserツール呼び出し形式を解釈する起動側の設定

現在の最小構成は3タスクです。

  1. coding: 指定のPython関数を書けるか
  2. json_schema: 必須キー付きJSONを安定出力できるか
  3. tool_call: 期待ツールを必須引数付きで呼べるか
図1: スモークを門番にする
図1: スモークを門番にする

なぜこの3つか

業務エージェントに最低限必要な能力を圧縮しています。

  • コード生成は実装支援の入口
  • JSON安定性は業務システム連携の入口
  • tool calling は社内APIや検索・実行系の入口

ここを落ちる構成を、長文要約の勝率だけで採用するのは危険です。逆に、この3つが安定して通るなら、「少なくともエージェントの土台はある」と言えます。完璧さより、明らかな不適合の早期発見が目的です。

門番の coding は関数断片レベルです。本計測では 関数 / リポジトリ / エージェント の段階に分けて拾います(詳細は品質プレイブックと投機検証の回へ)。

タスク見る能力落ちたときの疑い先
coding指示追従と基本生成モデル適性、プロンプト崩れ
json_schema構造化出力の耐性出力形式、サンプリング設定
tool_callツール選択と引数tool parser / auto tool choice

タスク設計のポイント

coding

期待値は厳密なユニットテストより、まずは contains(必要断片の含有)からで構いません。目的は「完全正解」より「明らかな崩壊を早期発見」です。関数名やシグネチャの断片が入っているか、禁止パターン(空応答、無関係な長文)になっていないか、くらいから始めます。

JSON

JSON only を指示しても、前置きやコードフェンスを付けるモデルは多いです。scorer 側でパース可否と必須キーを見ることで、業務接続の耐性を測ります。「人間が読めればよい」ではなく、「機械が受け取れるか」が合否です。

tool calling

プロンプトでツール利用を促し、expected_toolrequired_params を検証します。ここで落ちる場合、モデル能力だけでなく、起動プロファイルの tool parser / auto tool choice 設定も疑います。品質失敗を全部モデル責任にすると、設定修正で直る案件を見逃します。

回し方

  1. 対象プロファイルを起動し health を確認
  2. 同じスイートを固定して評価
  3. pass_rate だけでなくタスク別の失敗理由を読む
  4. 失敗が「到達不能」か「出力不正」かを分ける
  5. 設定変更は1軸にし、再評価
  6. 門番通過後にだけ、重い性能計測や追加スイートへ進む

実行チェックリスト

  • [ ] dry-run 済みで、意図したプロファイルが起動されている
  • [ ] /health 相当が通っている
  • [ ] スイートIDとバージョンが記録されている
  • [ ] タスク別の raw 失敗理由が残っている
  • [ ] 次に変える軸が1つに決まっている

よくある落とし穴

落とし穴何が起きるか対処
未起動のまま評価全滅をモデル不合格と誤読health を門番にする
スイートを毎回改変比較不能改変したらスイート版を上げる
pass_rate だけ見るどの能力が弱いか消えるタスク別内訳を必須にする
重いセットを先に回す時間が溶けて反復が止まるsmoke → deep の順を守る
設定を複数同時変更学びが消える1軸ルールを徹底

スモークの合格をどう使うか

スモーク通過は「本番採用」ではありません。意味は次に限定します。

  • この用途の土台として、次の比較に進めてよい
  • 重いベンチや judge を回すコストを払う価値がある
  • まだ stable ではない(制約付き testing の継続)

門番を過大評価すると、長文や同時実行で落ちる構成を早出しします。逆に門番を軽視すると、明らかに不適合な候補へ時間を溶かします。

スモーク合格は、深い品質ベンチの測定条件が妥当であることの証明ではありません。reasoning や事実性の重いスイートへ進むときは、sampling・生成長・thinking キー・リクエスト実体を改めて確認します。

タスク別の合格一文テンプレ

レビューや引き継ぎでは、次のように一文で残すと議論が早くなります。

  • coding: 「指定関数名と基本シグネチャ断片が出力に含まれる」
  • json_schema: 「パース可能で必須キーが揃った JSON である」
  • tool_call: 「期待ツールが必須引数付きで選択される」

完璧な採点基準を最初から書こうとすると進みません。まずこの粒度で固定し、誤検知が出てから厳格化します。スモークの仕事は、深い評価の代替ではなく、深い評価へ進む価値があるかの判定です。

つまずいたこと

大きなベンチを回す前に、短いスモークで落とすべきでした。長い評価を回してから設定ミスに気づく浪费を、何度もやりました。

苦労したのは、スモークを「簡易版」と侮らない空気を作ることです。短いからこそ、失敗の意味を定義しないと単なるグリーンランプになります。

この回の要点

  • 長い評価の前に短いスモークで落とす
  • スモークの失敗意味を定義する
  • グリーンランプだけで安心しない

coding-smoke は落とすための短い型であり、コーディング品質の最終判定ではありません。タスク別の実測パス率は再計測と匿名化後に足し、用途合格ラインは別途決めます。

次は「品質判定を拡張する:contains / JSON / tool_call scorer」です。スモークで落ちた理由を、差し替え可能な採点器で分解します。

よくある質問

なぜ3タスクから始めるのですか?

大きなスイートは魅力的ですが、最初から重いと回りません。門番を通った候補だけを深い評価へ進めます。

スモークで落ちたら即不合格ですか?

モデル劣化か到達性・フォーマット失敗かを分けます。原因ラベルが無いと次の改善がずれます。

この回の数値は実測ですか?

設計の型の説明です。未確定の合格ラインや未計測のスコアは断定しません。

スモーク合格なら深い品質ベンチの条件も十分ですか?

いいえ。門番通過は次へ進む価値がある、までです。reasoning や事実性ベンチは別の測定衛生が要ります。

Related

関連記事

Contact

検証や観光DXの進め方について、お気軽にご相談ください。