LLM が受け取る前に artifact を検証する¶
目的: LLM が呼び出される前に不正な入力をキャッチし、LLM が反応できるように(ユーザーへの質問、拒否、フォールバック)所見を表面化する。
使うべき状況¶
- 入力 artifact に LLM が検証するにはコストがかかる構造がある(長いリスト、ネストされたオブジェクト、クロスフィールド制約を持つオプションフィールド)。
- 「LLM がおそらく気付く」ではなく、決定論的なゲートが欲しい。
パターン¶
Phase の preprocessor に validate ステップを追加します。所見は into に格納され、LLM はそれを他の入力フィールドと同様に読み取ります。
---
type: phase
name: triage
input: ticket_batch
preprocessor:
- validate:
schema:
type: object
required: [tickets]
properties:
tickets:
type: array
items:
type: object
required: [id, title]
properties:
id: { type: string }
title: { type: string, minLength: 1 }
target: input
into: validation_findings
---
各チケットを `bug`、`feature`、`chore` にトリアージしてください。
`validation_findings.errors` が空でない場合は、トリアージの前に
ユーザーに入力を修正するよう依頼してください。
validation_findings の形式¶
{
"errors": [{"path": "tickets[3].title", "message": "must NOT be shorter than 1 chars"}],
"warnings": [],
"valid": false
}
LLM は into で設定したキーの下でそれを読み取ります。Phase の指示はスキーマを知らずにフィールド名で所見を参照します(P8)。
検証が自動で行われる箇所¶
以下のいずれかには validate ステップは不要です。OS が行います:
- トランジション検証。 すべての artifact はトランジション前に次の Phase の
inputスキーマに対して検証されます。 - 最終出力の検証。 終了 artifact は Skill の
final_output宣言に対して検証されます。
validate は LLM 呼び出しの前、Phase の内部で検証したい場合にのみ使用します。