式の変換・判定の使用例
こ のページでは、ワークフローの各ステップで利用する式、フィルタの使い方を、ユースケースと入出力例を交えて説明します。
パイプ記法の基本
| で左から右へ順番にフィルタが適用されます。
A | f1 | f2 は、「A に f1 を適用した結果」を 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 }}
の場合、以下のようにプロパティ(name、priority)として設定されます。
入力(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