コンテンツにスキップ

Transformノード

Transformノードは2つのContract間でデータを整形するノードです。入力エッジのContractを入力形として受け取り、LLMを実行して、出力エッジのContractに合うオブジェクトを出力します。HQは実行時にLLM出力を出力Contractに対して検証します。

Transformはピンポイントのツールです。設計上は噛み合いそうだが形が一致しない2つのグラフセクションを橋渡しする用途に向きます。リッチなプロンプティングを行うフルのSkillノードの代替にはなりません。

  • 異なるContractで設計された2つのグラフセクションの間に薄いアダプタが欲しい。
  • 上流出力に余計なフィールドが含まれるとき、下流に渡す前に射影・リネーム・変換したい。
  • 上流では出していない、派生可能なフィールドをLLMに埋めてもらいたい。

「整形」の実体が大きなタスク(調査、統合、コード生成など)なら、Transformではなくフルのプロンプトを書けるSkillノードを選んでください。

フィールド説明
assigned_role"pm" または "engineer" — Transformを実行するロール。
transform_instruction(任意)LLMプロンプトに追記する自由記述ヒント。Contractだけで意図が伝わるなら空欄でOK。単位変換・フィルタ条件・命名規則など、スキーマが表現できない意図を書く用途で使います。

入力Contract出力Contractはノード本体のフィールドではなく、入力エッジ/出力エッジから読み取られます。エッジのプロパティパネルでContractを割り当ててください。

  1. cascadeがTransformに到達するとpendingとして挿入され、アサインされたミニオンで実行されます。
  2. ミニオンは入力データ(入力Contractで型付け)と出力Contract(ターゲットスキーマ)、そして任意のヒントをLLMに渡します。
  3. HQはLLM出力を出力Contractに対して検証。スキーマ不一致ならノードは失敗します(黙って通過することはありません)。
  • assigned_role は必須。
  • 入力エッジはちょうど1本(revisionエッジを除く)。
  • 出力エッジはちょうど1本(revisionエッジを除く)。
  • 入力エッジはContractを宣言していること。
  • 出力エッジはContractを宣言していること。
flowchart LR
Fetch["Skill: fetch-user-report"] -- UserReport --> T["Transform"]
T -- LeadSummary --> CRM["Skill: push-to-crm"]

UserReport{ name, email, activity: […] } を持ち、LeadSummary{ contact, score } を期待しているとします。Transformにターゲット形状を伝えると、派生フィールドであるscoreも含めたマッピングを生成します。