メインコンテンツまでスキップ

式の変換・判定の使用例

このページでは、ワークフローの各ステップで利用する式、フィルタの使い方を、ユースケースと入出力例を交えて説明します。

フィルタの構文・一覧は 式の変換・判定(フィルタ) を参照してください。

パイプ記法の基本

| で左から右へ順番にフィルタが適用されます。

A | f1 | f2 は、「Af1 を適用した結果」を f2 を適用します。

利用例)

処理内容
{{ name | to_lower }}name の値を小文字に変換する。
{{ text | contains "abc" }}text"abc" が含まれているかを判定する。
複数のフィルタを繋げることもできます。

以下のように、左から順番に処理する順に記載します。
{{ message | to_lower | contains "error" }}
{{ input_path | path_basename | to_upper }}

以降では具体的な処理を説明します。


JSON 変換

以下の2つを対で使い分けて利用します。

  • from_json文字列をオブジェクトに変換する
  • to_jsonオブジェクトを文字列に変換する

文字列をオブジェクトに変換

AIに文章から情報を抽出させ、その結果を JSON形式のテキストで返すケースがあります。
このままでは単なる文字列ですが、from_json を使うとオブジェクトとして扱えるようになります。

利用場面

  • llm ステップが JSON形式のテキストを返したあと、プロパティを参照したいとき
  • 外部ファイルから読んだ JSON文字列を後続の条件式・変数参照で使いたいとき

利用例

{{ llm_response | from_json }}

の場合、以下のようにプロパティ(namepriority)として設定されます。

入力(llm_response変換後
{"name":"alice","priority":"high"}{name: "alice", priority: "high"}

変換後は後続のステップで次のように参照できます。

{{ extracted.priority == "high" }}
{{ extracted.name }}
備考

tool ステップの結果変数は自動でオブジェクト化されるため、 from_json は不要です。
主に、AIの出力や外部ファイルの読み込み結果など、JSON形式のテキストを明示的に変換したい場合に使います。

オブジェクトを文字列に変換

ツールの実行結果を後続のAIに要約させる場合、オブジェクトのままだとプロンプトに埋め込みにくいことがあります。
その場合は to_json を使って文字列化します。

利用場面

  • tool ステップの結果を llm ステップのプロンプトに埋め込みたいとき
  • オブジェクト型の変数を文字列入力欄に渡したいとき

利用例

{{ tool_result | to_json }}

の場合、以下のように文字列("name""priority")として設定されます。

入力(tool_result変換後
{name: "alice", score: 90}{"name":"alice","score":90}
オプションを設定することで、null も含めることができます。

以下で指定した場合、 {"name":"alice","score":null} と出力します。
{{ tool_result | to_json { ignoreNulls: false } }}


文字列一致判定

以下の方法で文字列一致を判定します。

  • contains:部分一致
  • starts_with:前方一致
  • ends_with:後方一致

戻り値は true または false です。

いずれも大文字小文字を区別します

区別せずに判定したい場合は事前に to_lower を使用してください。

部分一致

contains は、文字列の中に特定の文字列が含まれているかを判定します。

利用場面

  • if ステップで、レスポンスにキーワードが含まれるか判定したいとき
    • "error" が含まれるときの分岐 など。
  • LLMの出力に期待する語句が含まれているか確認したいとき

利用例

{{ responseBody | contains "World" }}
入力(responseBody結果
"World"true
"world"false
大文字/小文字を区別しない場合

式をresponseBody | to_lower | contains "World" にした場合は、どちらのケースもtrueになります。

前方一致

starts_with は、文字列の先頭が指定した文字列と一致するかを判定します。

利用場面

  • ステータスコードが 2 で始まるかを見て、2xx 系の成功レスポンスか判定したいとき
  • URLが https:// で始まるか確認したいとき
  • IDやコードの接頭辞によって処理を分けたいとき
  • ファイルパスが特定のフォルダから始まるか確認したいとき

利用例

{{ statusCode | starts_with "2" }}
入力(statusCode結果
"200"true
"404"false

後方一致

ends_with は、文字列の末尾が指定した文字列と一致するかを判定します。

利用場面

  • foreach でファイル一覧を処理するときに、特定の拡張子のファイルだけを対象にしたいとき
  • .csv.json.txt など、ファイル種別によって処理を分けたいとき
  • 出力ファイル名が期待した拡張子で終わっているか確認したいとき

利用例

{{ file | ends_with ".csv" }}
入力(file結果
"report.csv"true
"report.xlsx"false

パス操作

以下の方法でファイルパスを取得、変更します。

  • path_filename:拡張子付きファイル名を取り出す
  • path_basename:拡張子なしのファイル名を取り出す
  • path_join:パス要素を結合する
  • path_normalize:パス表記を正規化する

拡張子付きファイル名を取り出す

path_filename は、フルパスから拡張子付きのファイル名だけを取り出します。

利用場面

  • foreach でフルパスの一覧を処理するとき
  • 通知文やプロンプトに短いファイル名だけ埋め込みたいとき

利用例

{{ input_path | path_filename }}
入力(input_path結果
C:\work\reports\sales.csvsales.csv

拡張子なしのファイル名を取り出す

path_basename は、パスから拡張子を除いたファイル名を取り出します。

利用場面

  • 入力ファイルと同名で拡張子だけ変えた出力ファイルを作りたいとき
  • ファイル名をキー名の一部として使いたいとき

利用例

{{ input_path | path_basename }}
入力(input_path結果
C:\work\reports\sales.csvsales

パス要素を結合する

path_join は、複数のパス要素を結合して1つのパスを作るフィルタです。

ヒント

文字列連結でパスを作るよりも、path_join を使う方が意図が明確で、安全に扱いやすくなります。

利用場面

  • 出力フォルダとファイル名を別変数で持っているとき
  • 手動で パス区切り文字(/) を入力したくないとき
  • サブフォルダ名や日付フォルダ名を組み合わせてパスを作りたいとき

利用例

{{ [output_dir, sub_dir, file_name] | path_join }}
入力結果
output_dir:["C:\work",
sub_dir:"logs",
file_name:"app.log"
C:\work\logs\app.log

パス表記を正規化する

path_normalize は、パスに含まれる ... を解決して、表記を整えるフィルタです。

備考

path_normalize は、ファイルの存在確認は行いません。あくまでパス文字列の表記を整えるフィルタです。

利用場面

  • path_join で組み立てたパスを後続処理に渡す前に整えたいとき
  • ユーザー入力に .. が含まれる可能性があるとき

利用例

{{ raw_path | path_normalize }}
入力(raw_path結果
C:\work\..\logs\app.logC:\logs\app.log