1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

パラメータ抽出ノード

目的

自然文やメール文面から 型式・数量・納期 を抜き出し、構造化データとして処理する方法を解説します。

  • 簡易版:単一アイテムの抽出に対応
  • 拡張版:複数行アイテム+IF/ELSEでエラーハンドリングし、整形した確認メッセージを返す

簡易版:単一アイテムの抽出フロー

ノード構成

パラメータ.jpg

[開始]
   └→ [パラメータ抽出]
           └→ [終了]

手順

  1. 開始ノード

    • ユーザー入力を受け取る
    • 例:「コネクタX200を5個、9/30までに手配して」
  2. パラメータ抽出ノード

    • 入力:conversation.text
    • 抽出パラメータ:
      • part_number: string(必須)
      • quantity: number(必須)
      • due_date: string(任意, YYYY-MM-DD)
    • 指示文例:
      ユーザー発話から以下を厳密に抽出し、JSONのみを返してください。
      - part_number: string(型式/品番)
      - quantity: number(半角数値)
      - due_date: string(YYYY-MM-DD。無ければ null)
      

パラメータ3.jpg

  1. 終了ノード
    • 出力テンプレート:
      発注内容を確認しました。
      - 型式: {{ parameter_extractor.part_number }}
      - 数量: {{ parameter_extractor.quantity }}
      - 希望納期: {{ parameter_extractor.due_date ?? "指定なし" }}
      

入力サンプル

  • 「E3Z-T61Aを3個、9/30まで」
  • 「XL-400Bを2個お願いします」
  • 「X200を5台」

拡張版:複数行アイテム+確認メッセージ整形フロー

ノード構成

パラメータ2.jpg

[開始]
   └→ [パラメータ抽出: lines(Array[Object])]
           └→ [IF/ELSE: __is_success==1]
                   ├─ ELSE → [回答: エラー内容と入力例を案内]
                   └─ IF   → [イテレーション: lines]
                               └→ (ループ内)
                                     [LLM: 各行のモック結果(JSON)]
                         └→ [LLM 2: 配列を確認メッセージに整形]
                               └→ [回答]

手順

  1. 開始ノード

    • 複数行を含む入力を受け取る
    • 例:「X200は5、X300は2個。X500は来週月曜まで」
  2. パラメータ抽出ノード

    • 入力:conversation.text
    • 抽出パラメータ:
      • lines: Array[Object]
        • part_number: string
        • quantity: number
        • due_date: string|null
    • 指示文例:
      入力から発注行の配列 lines を抽出し、厳密な JSON のみを返してください。
      各要素: { "part_number": string, "quantity": number, "due_date": "YYYY-MM-DD" or null }。
      数量が無ければ 1、日付の略記は今年の該当日に正規化。
      

パラメータ4.jpg

  1. IF/ELSEノード

    • 条件:parameter_extractor.__is_success == 1
    • ELSE 側:抽出失敗時の分岐
  2. 回答ノード(失敗時)

    • メッセージ例:
      発注内容の読み取りに失敗しました。
      入力例:
      - 「E3Z-T61Aを3個、10/5まで」
      - 「X200は5、X300は2個」
      エラー内容: {{ parameter_extractor.__reason }}
      
  3. イテレーションノード

    • 入力コレクション:parameter_extractor.lines
    • ループ要素名:item
  4. ループ内 LLMノード

    • item を受け取り、在庫・価格・納期などを JSON で返す
    • 出力は iteration.results に配列で集約される
      パラメータ5.jpg
  5. LLM 2(整形用)

    • 入力:{{ iteration.results }} を渡す
    • 指示文例:
      以下の発注明細(JSON配列)を読み、人間に分かりやすい確認メッセージに変換してください。
      
      [出力仕様]
      - 件数と合計金額を先頭にまとめる
      - 各行を「・型式 / 数量 / 在庫可否 / 納期(予定) / 金額: \xx,xxx」の形式で列挙
      - 在庫不足がある場合のみ、末尾に「在庫不足の品目があります。納期をご確認ください。」を追記
      - 出力はプレーンテキストのみ
      

パラメータ6.jpg

  1. 回答ノード
    • 出力:{{ LLM_2.text }}

入力サンプル

  • 「E3Z-T61Aを3個、10/5まで。E3Z-T81Aを2個。X200は5。」
    • → 3行の結果が配列で返され、整形後に確認メッセージとして提示
  • 「X200=5、X300=2、X999=1」
    • X999 は在庫不足としてエラーメッセージに反映

まとめ

  • 簡易版:単一アイテムの抽出 → 確認
  • 拡張版:複数アイテムを配列で抽出し、IF/ELSEでエラーハンドリング → イテレーション処理 → 整形メッセージを返答
  • これにより、自由記入の発注文でもそのまま処理フローに流せます。

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?