LangStudio は、フロー制御、大規模言語モデル (LLM)、エージェント、データ取得、ドキュメント解析、音声認識、Python スクリプトのための構築済みワークフローノードを提供します。
フロー制御
開始
1 つのアプリケーションフローには、[開始] ノードを 1 つしか設定できません。
[開始] ノードは、実行が開始される場所を示し、アプリケーションフローの入力パラメーターを宣言します。
-
対話型フローの場合、システムは会話履歴とユーザー入力の 2 つのデフォルトフィールドを提供します。必要に応じてカスタム変数を追加してください。ユーザーがアップロードしたファイルを受け入れるには、ファイルタイプの入力変数を定義します。詳細については、「ファイルタイプの入出力」をご参照ください。

-
アプリケーションフローを実行する際、会話パネルで現在のセッションの入力パラメーターを設定します。

条件分岐
このノードは、フロー制御のための if-else ロジックを実装します。条件を評価し、最初に一致したブランチに実行を誘導します。どの条件も true でない場合は、else ブランチが実行されます。このノードを 変数集約ノードと組み合わせることで、異なるブランチからの結果をマージできます。
-
設定

-
入力
ブランチの条件を設定する際には、以下の点にご注意ください:
-
各ブランチは実行パスを表します。最後のブランチは else ブランチであり、他のどの条件にも一致しない場合に実行され、編集することはできません。
-
各ブランチには複数の条件を含めることができ、and/or ロジックを使用して組み合わせることができます。
-
上流ノードからの出力、演算子 (例:
=、≠、is empty、does not include)、および値を検証して、正確で有効な条件を確保してください。
-
-
出力
このノードは出力を生成しません。
-
使用例
条件分岐ノードを下流ノードに接続すると、各ブランチに対応する接続ポートができます。ブランチの条件が満たされると、システムはそのブランチの下流ノードを実行し、他のブランチをスキップします。変数集約ノードを使用して、アクティブなブランチからの実行結果を収集します。

変数集約
このノードは、異なるブランチからの出力結果を統一された変数にマージします。条件分岐ノードまたはインテント認識ノードが実行されると、1 つのブランチのみが実行されます。このノードにより、下流ノードはどのブランチが実行されたかに関わらず、単一の集約された変数を参照でき、冗長なロジックを防ぎます。
-
設定

-
入力
変数グループを設定する際には、以下の点にご注意ください:
-
出力
ノードの出力変数は、設定されたグループに依存します。複数のグループが存在する場合、ノードは各グループに対してキーと値のペアを出力します。ここで、キーはグループ名、値はそのグループからの最初の空でない変数です。
-
使用例
条件分岐ノードのユースケースをご参照ください。
ループ
ループノードは、各反復が前の結果に依存する反復タスクを実行します。ループは、終了条件が満たされるか、最大反復回数に達するまで続きます。ループノード内で、システムがループ変数に基づいて繰り返し実行するサブフローを設定します。
-
設定

-
入力
-
ループ変数:反復間でデータを渡します。ループが完了した後も、その最終値は下流ノードで利用可能です。値が手動で入力されるか、上流ノードの出力から選択される複数のループ変数を設定できます。
-
ループ終了条件:ループ変数に基づいて終了条件を設定できます。指定されたループ変数が事前設定された条件を満たすと、ループは終了します。
-
最大反復回数:無限ループを防ぐために、ループの最大実行回数を制限します。
-
-
出力
ノードの出力は、最終反復後のループ変数の値です。ループ変数は、変数割り当てノードによってのみ更新できます。このノードがない場合、ループの出力は反復回数に関係なく、初期入力と同じままになります。
-
関連ノード
ループ関連のノードは、ループ内でのみ使用できます。ループ内のノードの右側にある + アイコンをクリックして、以下の関連ノードを追加します:
-
ループ中断
ループを即座に終了します。これは通常、条件分岐ノードの前に置かれます。
-
変数割り当て
ループ内のノードの出力をループ変数に割り当て、ループの状態を進めます。

-
直接出力
直接出力ノードは、出力テンプレートを使用して直接返信するコンテンツを設定します。{{node.variable}} 構文による上流ノードの出力の参照と、ストリーミング出力をサポートしています。
例:LLM ノードの前に直接出力ノードを追加して、メインタスクが処理されている間に「思考中...」などの初期メッセージをユーザーに送信します。


バッチ処理
バッチ処理ノードは、リストデータを並列で処理します。各リスト要素に同じサブフローを適用することで、効率を大幅に向上させます。各ステップが前のステップに依存する反復タスクの場合は、代わりにループノードを使用してください。
入力
-
入力リスト:処理対象のデータのリスト。ノードは各要素を独立したアイテムとしてサブフローに送信して実行します。
-
出力フィールド:サブフロー内のノードから出力変数を選択し、各アイテムのタスクの結果として使用します。
-
並列処理数:オプション。同時に実行されるタスクの数を制御します。デフォルトは 4 で、有効範囲は 1 から 10 です。
出力
result:すべてのバッチタスクからの出力結果を含むリストで、入力リストと同じ順序です。入力で指定された「出力フィールド」の実際の出力値を集約します。
関連ノード
バッチ開始
バッチ開始ノードは、バッチ処理サブフローのエントリポイントです。サブフロー内の後続ノードが参照できるように、以下の出力変数を提供します:
-
item:現在処理中のデータアイテムで、入力リストの要素に対応します。
-
index:入力リスト内の現在のデータアイテムのインデックス (0 から開始)。
バッチ中断
バッチ中断ノードは、特定の条件が満たされた場合に、現在のデータアイテムの処理を早期に終了するために使用されます。
注:バッチ中断ノードは、現在の反復のみを終了させ、他のデータアイテムの処理には影響しません。
使用例
ドキュメントの一括解析とインテリジェント処理
シナリオ:ある企業が複数のドキュメントファイルを一括で解析し、正常に解析されたドキュメントに対して LLM を呼び出してコンテンツ処理を行い、解析に失敗したものは自動的にスキップする必要があります。
バッチ処理ノードの設定:
|
パラメーター |
値 |
説明 |
|
入力リスト |
|
上流の開始ノードから出力されたファイルリストを参照します。 |
|
出力フィールド |
|
LLM ノードの出力フィールドをバッチ処理ノードの出力として選択します。 |
|
並列処理数 |
|
4 つのファイルを同時に処理します。 |

サンプル出力:
{
"result": [
"このドキュメントは製品 XX のユーザーマニュアルで、製品の機能紹介、インストール手順などが含まれています...",
"これはソフトウェアサービス調達契約で、契約期間は 12 ヶ月です...",
null,
"付加価値税普通領収書、日付は 2026 年 1 月 15 日です..."
]
}
注:出力の null 値は、ファイルの解析に失敗し、バッチ中断ノードが後続の処理をスキップしたことを示します。
注意事項
-
結果の順序保証:出力リストの順序は、入力リストの順序と一致します。
-
サブフローの柔軟性:サブフロー内では、異なるデータアイテムが異なる実行パスをトリガーする場合があります。
-
Null 値の処理:アイテムの実行フローが早期に終了したり、その出力が空であったりする場合、出力リストの対応する位置は null になります。
終了
終了ノードは、アプリケーションフローの完了を示し、その出力パラメーターを定義します。1 つのアプリケーションフローには、終了ノードを 1 つしか設定できません。
-
出力パラメーターの設定
アプリケーションフローの出力は、任意の上流ノードの出力を参照できます。例えば、以下のサンプルでは、アプリケーションフローの「answer」出力は LLM ノードの出力を、「search_results」は検索ノードの出力を使用しています。
説明-
対話型フローには、デフォルトの「Chat」出力フィールドがあり、これがアプリケーションフローの対話出力として機能します。
-
アプリケーションフローには、開始ノードと終了ノードが含まれている必要があります。それらの間に接続されているノードのみが実行され、孤立したノードは無視されます。
-
AI 機能
LLM
LLM ノードは、大規模言語モデルを呼び出してテキスト生成、質疑応答、複雑な入力処理などの自然言語タスクを実行するアプリケーションフローのコアコンポーネントです。モデルパラメーターの調整、会話履歴の管理、プロンプトのカスタマイズのための設定オプションを提供します。
-
ユースケース
-
テキスト生成:トピックやキーワードに基づいてテキストコンテンツを生成します。
-
コンテンツ分類:メールの種類 (例:問い合わせ、苦情、迷惑メール) を自動的に分類します。
-
テキスト翻訳:テキストを指定された言語に翻訳します。
-
RAG:取得した知識とモデルの推論を組み合わせて、ユーザーの質問に答えます。
-
-
設定

-
入力
-
モデル設定:ModelGallery からデプロイされたモデル、カスタムデプロイされたモデルサービス、および Dashscope や DeepSeek などのプロバイダーからのモデルをサポートします。最高のパフォーマンスを得るには、高性能なモデルを選択してください。以下のモデルパラメーターを設定します:
-
Temperature:通常 0 から 1 の間の値で、出力のランダム性を制御します。0 に近い値はより決定論的な出力を生成し、1 に近い値はより多様な結果を生成します。
-
Top P:Nucleus サンプリングのしきい値。モデルは、累積確率がしきい値 P を超える最小のトークンセットからサンプリングし、出力の多様性に影響を与えます。
-
Top K:候補トークンを最も確率の高い上位 K 個に制限します。これにより、ランダム性が減り、出力がより集中的になり、Top P よりも直接的に創造性を制約します。
-
Presence penalty:同じエンティティや情報の繰り返しを減らします。生成されたテキストに既に存在するトークンにペナルティを課します。値が高いほど、繰り返しをより積極的に減らします。
-
Frequency penalty:生成されたテキスト内でのトークンの頻度に基づいてペナルティを課し、過度に頻繁な単語やフレーズを減らします。値が高いほど、より多くの語彙の多様性を促進します。
-
Max tokens:1 回の実行あたりの最大出力長 (トークン単位)。値が低いと出力が切り捨てられる可能性があり、値が高いとより長い応答が可能になります。
-
Seed:指定すると、モデルは決定論的なサンプリングを試みます。同じシードとパラメーターを持つリクエストを繰り返すと、同じ結果が生成されるはずですが、完全な決定論は保証されません。変更を監視するには、system_fingerprint レスポンスパラメーターをご参照ください。
-
Stop sequences:モデルにさらなる出力の生成を停止するよう指示する最大 4 つのシーケンス。モデルがこれらのシーケンスのいずれかに遭遇すると、トークンの生成を停止します。返されるテキストには停止シーケンスは含まれません。
-
-
会話履歴:有効にすると、アプリケーションフローのチャット履歴が自動的にプロンプトに挿入されます。
-
入力変数:変数は、先行するすべてのノードの出力を参照できます。
-
プロンプト:プロンプトには、システム (SYSTEM)、ユーザー (USER)、またはアシスタント (ASSISTANT) のためのカスタムコンテンツが含まれます。プロンプトは Jinja2 テンプレートであり、二重中括弧
{{}}を使用して入力変数を参照できます。
-
-
出力
ノードはデフォルトで文字列出力をしますが、JSON もサポートしています。JSON タイプはカスタム出力変数をサポートし、モデルは変数名に基づいて出力を生成します。
-
ユースケース
インテント認識
インテント認識ノードは、主にフロー制御のために使用されます。大規模言語モデルを使用してユーザーの意図を分析し、その結果に基づいて対応するブランチに実行を誘導します。マルチインテント設定と会話履歴をサポートしています。
-
設定

-
入力
-
ユーザー入力:インテント認識に使用するユーザー入力を選択します。
-
マルチインテント設定:必要に応じてインテントを設定し、各インテントの説明が明確で、異なるインテント間に意味的な重複がないことを確認します。最後のインテントはデフォルトで「その他」となり、他のどのインテントにも一致しない場合にマッチし、編集することはできません。
-
モデル設定:インテント認識のための大規模言語モデルを設定します。より良いパフォーマンスを得るには、qwen-max などのより高性能なモデルを選択してください。
-
会話履歴:有効にすると、大規模言語モデルは推論中にアプリケーションフローのチャット履歴を自動的にプロンプトに挿入します。
-
追加プロンプト:このコンテンツは、モデルがより正確にインテント認識を実行するのを助けるために、システムプロンプトに追加されます。
-
-
出力
このノードは出力を生成しません。
-
使用例
インテント認識ノードを下流ノードに接続すると、各インテントブランチにはノード上に対応する接続ポートができます。インテントが認識されると、そのブランチに接続された下流ノードが実行され、他のブランチのノードはスキップされます。その後、変数集約ノードを使用して、各ブランチからの実行結果を収集できます。

エージェント
エージェントノードは、大規模言語モデル (LLM) が自律的に計画、ツールの選択、および行動を可能にします。推論戦略とツール使用能力をサポートしています。FunctionCalling や ReAct などの戦略を統合することで、LLM は実行時にモデルコンテキストプロトコル (MCP) に準拠したツールを自律的に呼び出し、マルチステップの推論を実現します。
ノードパラメーター
-
エージェント戦略:希望するエージェントの推論戦略を選択します。現在、FunctionCalling と ReAct 戦略がサポートされています。
FunctionCalling
この機能は、OpenAI Chat API の構造化された
tool call定義 (JSON 形式) に基づいて、大規模言語モデル (LLM) と外部ツールとの対話を可能にします。LLM はユーザーの自然言語の指示を分析して、意図を自動的に識別し、適切なツールを選択し、パラメーターを抽出します。その後、システムは対応するツールを呼び出し、その結果をモデルに返して、さらなる推論を行い、最終的な回答を生成します。ユースケースと利点:
-
構造化された呼び出し、強力な互換性:構造化データを使用してツール名と呼び出しパラメーターを明確に定義し、ツール呼び出しをサポートするすべてのモデルとの互換性を確保します。
-
安定したパフォーマンス:天気の確認、情報の検索、データのクエリなど、明確な目的と明確に定義されたステップを持つタスクに適しています。
ReAct
ReAct (Reasoning + Acting) は、プロンプトを使用してモデルに思考 (Thoughts) と行動 (Actions) を明示的に生成させる柔軟な推論戦略であり、マルチステップの推論とツール呼び出しのための閉ループを作成します。この戦略は通常、自然言語を使用して呼び出しプロセスを記述します。「Action=xxx, Action Input=xxx」のようなテキストを出力することでバックエンドのツール実行をトリガーし、その結果をモデルの推論チェーンに注入します。この方法は API レベルの
tool_callsを必要としないため、より一般的なモデルやフレームワークに適しています。ユースケースと利点:
-
強化された推論能力:モデルを段階的に思考するように導き、各ステップで推論ロジックを明示的に表現します。
-
透明な戦略:強力なデバッグと解釈可能性を必要とするエージェントアプリケーションに最適です。
-
ツール呼び出しのサポート不要:構造化出力をサポートしないモデルでも使用できます。
-
-
モデル設定:FunctionCalling 戦略は、ツール呼び出しをネイティブにサポートするモデルが必要です。ReAct 戦略にはこの制限はありませんが、強力な推論能力を持つモデルを選択することを推奨します。
-
会話履歴:会話履歴を有効にすると、エージェントにコンテキストメモリが提供されます。システムは過去の会話メッセージを自動的にプロンプトに含め、エージェントが会話の前の部分を理解し、参照できるようにします。例えば、会話履歴が有効なエージェントは、ユーザーが情報を繰り返す必要なく、代名詞 (「彼」や「それ」など) を解決できます。
-
タスク計画:有効にすると、システムは組み込みの
write_todosツールをエージェントの利用可能なツールに自動的に追加します。複雑なユーザーの質問に対して、エージェントは自動的にwrite_todosツールを呼び出してタスクを計画し、段階的に実行し、最新情報に基づいて計画を動的に更新します。 -
MCP ツールとツール:MCP ツールと非 MCP ツールの両方の設定をサポートします。詳細については、「エージェントのツールの設定」をご参照ください。
-
プロンプト設定
-
入力変数:アプリケーションフローの上流ノードの変数をプロンプトで参照したい場合、現在のノードに対応する入力変数を定義し、その値を上流ノードの変数への参照として設定する必要があります。その後、以下のプロンプトセクションで、二重中括弧 (
{{}}) で示される Jinja2 テンプレート構文を使用して、これらの定義された入力変数を参照し、動的なデータ渡しを可能にします。 -
システムプロンプト:エージェントのタスク目標とコンテキストを指定するために使用され、モデルに応答生成を導くために必要な背景を提供します。これは ReAct 戦略ではオプションです。
-
ユーザープロンプト:ユーザーの入力またはクエリを受け取り、これがモデルの応答生成の基礎となります。
-
-
ループ回数:エージェントの最大実行サイクル数を 1 から 99 の範囲で設定します。エージェントは、以下のいずれかの条件が満たされるまで、応答を生成するためにタスクを繰り返します:
-
LLM は、ツールを呼び出すことで、完全な結果を生成するのに十分な情報を収集したと判断します。
-
設定された最大ループ回数に達した場合。
適切なループ回数を設定することは、応答の完全性と実行効率のバランスを取るのに役立ちます。タスク計画が有効になっている場合は、モデルが計画通りにすべてのステップを完全に実行できるように、デフォルトの最大ループ回数を使用することを推奨します。
-
-
出力変数:
-
intermediate_steps:エージェントの実行の中間ステップを含む文字列。
-
text:エージェントの最終出力を含む文字列。
-
トレースとログ
アプリケーションフローページ右上の [実行] をクリックした後、表示されるダイアログボックスの実行結果の下でトレースまたはログを表示できます。
-
中間出力の表示:ワークフロー内のエージェントノードの右上にある実行ステータスアイコンをクリックします。下のドロワーで、[出力] の中の
intermediate_stepsを見つけて、エージェントの推論プロセスを表示します。 -
トレースの表示:現在の実行のトレース情報を表示して、各モデルリクエスト (ツール呼び出しとリクエストパラメーターを含む) のエージェントの入出力、トークンコスト、および時間消費を理解します。
-
ログの表示:アプリケーションフローでエラーが発生した場合、現在の実行ログを表示して、ノードの実行プロセスの詳細を取得できます。
さらに、アプリケーションフローページの右上にある [実行] ボタンの右側にあるアイコンをクリックして、実行履歴を表示できます。特定の実行レコードを選択して、そのトレースまたはログを表示します。
ドキュメント解析
システムの組み込みインテリジェントドキュメントパーサーと AI Search Open Platform のドキュメント解析サービスの使用をサポートします。
-
組み込みパーサー:ドキュメントから構造化されたコンテンツとメタデータを抽出し、PDF、DOCX、PPTX、TXT、HTML、CSV、XLSX、XLS、JSONL、MD を含むさまざまな主流のドキュメント形式をサポートします。
-
AI Search Open Platform:高精度の構造化ドキュメント解析を実現し、タイトルや段落などの論理的な階層情報、およびテキスト、テーブル、画像などのコンテンツの抽出をサポートします。これにより、ドキュメント抽出の効果と精度が向上します。まず、AI Search Open Platform のモデルサービス接続を設定する必要があります。サポートされているファイル形式には、PDF、DOCX、PPTX、TXT、HTML が含まれます。
このツールは、RAG、要約、質疑応答のシナリオをサポートします。設定インターフェイスは次のとおりです:
-
ドキュメントファイル:解析するドキュメントファイル。上流ノードからファイルタイプのフィールドを選択します。
-
モデル設定:(オプション) LangStudio で作成された AI Search Open Platform のモデルサービス接続を選択します。設定されていない場合、システムはデフォルトで組み込みの基本解析メソッドを使用します。
-
出力:
-
file_id:入力ファイルの一意の識別子。
-
content:解析された構造化テキストコンテンツ。タイトルや段落などの階層情報を含みます。
-
status:解析ステータス。SUCCESS または FAIL のいずれかです。
-
metadata:ドキュメントのメタデータと解析の詳細。
-
file_name:ファイルの名前。
-
file_type:ファイルのタイプ。
-
source_uri:ファイルの元の URI。
-
download_url:ファイルのダウンロード可能な URL。
-
analysis_method:使用された解析メソッド。「opensearch」は AI Search Open Platform を使用した構造化解析を示し、「builtin」は組み込みの基本解析メソッドの使用を示します。
-
-
下流での使用例:下流ノードでは、必要に応じてドキュメント解析ノードの結果フィールドを参照します。LLM ノードでドキュメント解析結果を使用するには、以下のようにユーザープロンプトに解析されたコンテンツを含めることができます:

音声認識
音声認識ノードを使用して、音声または動画ファイルをテキストに変換します。複数の音声形式と言語認識をサポートしています。
入力
-
モデル設定:音声認識モデルを設定します。現在、Alibaba Cloud Model Studio が提供する音声認識サービスがサポートされています。より良い認識性能と多言語サポートのために
paraformer-v2を使用することを推奨します。 -
音声/動画ファイル:認識する音声または動画ファイルを選択します。サポートされている形式については、「ファイルタイプの入出力」をご参照ください。
-
認識言語:音声認識の言語を指定します。サポートされている言語は、中国語、英語、日本語、広東語、韓国語、ドイツ語、フランス語、ロシア語、または自動検出です。注:この機能は
paraformer-v2モデルでのみサポートされています。他のモデルはデフォルトで自動言語検出を使用します。
出力
-
file_id:入力ファイルの一意の識別子。
-
status:認識ステータス。可能な値は
SUCCESSまたはFAILです。 -
content:書き起こされたテキストコンテンツ。
-
segments:タイムスタンプ、テキストフラグメント、その他の詳細を含む文の断片情報のリスト。
-
metadata:ファイルのメタデータ。以下を含みます:
-
file_name:ファイルの名前。
-
file_type:ファイルのタイプ。
-
source_uri:ファイルの URI。
-
download_url:ファイルのダウンロード URL。
-
データ取得
以下のノードを設定するには、「データ取得ノード」をご参照ください:
-
ナレッジベース検索
-
Alibaba Cloud IQS - Web 検索
-
SerpAPI - 汎用検索
-
HTTP リクエスト
データ処理
Python 開発 (Python)
アプリケーションフローは、複雑なデータ処理のためにカスタム Python コードを持つノードをサポートしています。これらのノードは、ストリーミング入出力をサポートしています。設定ページは次のとおりです:

Python コードを入力するだけで、入力と出力はコードから自動的に解析されます。以下の点にご注意ください:
-
エントリ関数は、ノードとしてロードされるために
@toolでデコレートする必要があります。説明Python ノードのストリーミング入力を有効にするには、
@tool(properties={"streaming_pass_through": True})を設定する必要があります。そうしないと、LLM などからの Python ノードへの入力は、ストリームではなく完全な出力テキストになります。 -
この関数は、int、float、bool、str、dict、TypedDict、dataclass (出力のみ)、list、および File の入力/出力タイプをサポートしています。
-
エントリ関数のパラメーターは、ノードの入力として動的に解析されます。出力は
outputディクショナリに配置され、他のノードから参照できます。重要Python ノードの入出力パラメーターの自動解析は、ランタイムに依存します。ランタイムが起動していない場合、ノードの入出力情報を設定することはできません。
-
Python コードが依存関係を必要とする場合は、キャンバスの右上隅にある [依存関係のインストール] を選択し、必要なパッケージを入力します。
requirements.txtファイルはアプリケーションフローと共に保存されます。依存関係は、ランタイムを起動するか、サービスをデプロイするときにインストールされます。

ユースケース 1:コードエリアに次のコードを入力します。コードはノードの入力と出力にマッピングされます:
from langstudio.core import tool
from dataclasses import dataclass
@dataclass
class Result:
output1: str
output2: int
@tool
def invoke(foo: str, bar: int) -> Result:
return Result(
output1="hello" + foo,
output2=bar + 10
)

ユースケース 2:ストリーミング入出力。Python ノードを使用して、思考プロセスを含む LLM またはエージェントノードからのテキストストリームをトリミングします。<think>\n\n</think> セクション内のコンテンツを破棄することで、結果の最終的なテキストストリームを取得できます。以下はその例です:
import re
from typing import Iterator
from langstudio.core import tool
@tool(properties={"streaming_pass_through": True})
def strip_think(
stream: Iterator[str],
) -> Iterator[str]: # 入力はストリーミング文字列イテレータで、出力はフィルタリングされたストリーミング文字列イテレータです。
# <think>\n...\n</think> 構造に一致させ、閉じタグの後のテキストをキャプチャします。
pattern = re.compile(r"<think>\n[\s\S]*\n</think>(.*)")
in_thinking = True # 現在の位置が <think> ブロック内にあるかどうかを示すフラグ。
think_buf = "" # 未処理のコンテンツを保存するバッファ。
for chunk in stream:
if in_thinking:
think_buf += chunk
m = pattern.search(think_buf) # バッファに完全な思考ブロックが含まれているか確認します。
if m:
in_thinking = False
result_part = m.groups()[0]
if result_part:
yield result_part # 結果のテキストが存在する場合、すぐにそれを yield します。
else:
yield chunk # 思考ブロックを抜けた後、後続のすべてのチャンクを直接 yield します。
テンプレート変換
テンプレート変換ツールは、Jinja2 テンプレート構文を使用して、柔軟なテキストフォーマットとデータ変換を可能にします。
入力
変換モードは、Jinja2 モードとノード参照モードをサポートしています。
-
Jinja2 モード:完全な Jinja2 テンプレート構文を使用して、出力フォーマットをカスタマイズします。このモードは、複雑な構造化出力、条件付きロジック、およびループレンダリングに適しています。
-
テンプレート変数:テンプレートで使用される変数を定義します。
重要変数名は、
items、keys、valuesなどの Python の組み込みメソッド名にすることはできません。item_listやproduct_listなどの特定のフィールド名を使用してください。 -
テンプレートコンテンツ:Jinja2 構文で書かれたテンプレート文字列。変数の置換
{{ variable }}、ループ{% for %}、条件付きステートメント{% if %}、およびフィルター{{ value | filter }}を含む完全な構文をサポートしています。重要テンプレートで参照されるすべての変数は、変数リストで定義されている必要があります。そうでない場合、エラーが発生します。
-
-
ノード参照モード:上流ノードの出力を直接参照し、自動的に文字列に連結します。このモードは、単純なテキストの組み合わせシナリオに適しています。
-
テンプレートコンテンツ:上流ノードの出力フィールドを選択します。システムはそれらを順番に自動的に連結します。
-
出力
output:テンプレートがレンダリングされた後のテキスト結果。注:入出力のテンプレートコンテンツの長さは、どちらも 100,000 文字に制限されています。この制限を超えるコンテンツは切り捨てられます。
使用例
例 1:注文確認メールの生成
変数の設定:
|
変数名 |
変数値 |
|
customer_name |
|
|
order_id |
|
|
products |
|
|
total |
|
テンプレートコンテンツ:
拝啓 {{ customer_name }} 様:
ご注文 {{ order_id }} が確定しました。詳細は以下の通りです:
{% for product in products %}
- {{ product.name }}: ¥{{ product.price }}
{% endfor %}
合計: ¥{{ total }}
ご購入いただきありがとうございます!
出力結果:
拝啓 田中太郎 様:
ご注文 ORD-2025-001 が確定しました。詳細は以下の通りです:
- ノートパソコン: ¥8999
- ワイヤレスマウス: ¥199
合計: ¥9198
ご購入いただきありがとうございます!
例 2:ナレッジベース検索結果のフォーマット
変数の設定:
|
変数名 |
変数値 |
|
chunks |
|
テンプレートコンテンツ:
{% for chunk in chunks %}
### 関連度: {{ "%.2f" % chunk.score }}
#### {{ chunk.title }}
{{ chunk.content }}
---
{% endfor %}
出力結果:
### 関連度: 0.95
#### 製品紹介
これは製品の詳細な紹介です...
---
リスト操作
リスト操作ツールを使用すると、さまざまなタイプのリストデータに対して柔軟なフィルタリングとソートを実行でき、詳細なデータ処理と選択が可能になります。
入力
-
入力リスト:処理対象のリストデータ。文字列、数値、ブール値、ファイルオブジェクト、辞書など、あらゆるサブタイプをサポートしています。
-
操作:順番に実行される一連の連鎖操作。フィルターとソートの 2 種類の操作をサポートしています。
-
フィルター操作 (filter):フィルター操作は、入力リストのタイプに基づいて動的に異なるフィルタリング方法を提供します。注:すべてのフィルター操作は、大文字と小文字を区別します。
フィルターキー
説明
範囲
インデックス
リスト内の要素の位置に基づいてフィルタリングします。
すべてのリストタイプに適用されます。
要素の値
要素自体の値に基づいてフィルタリングします。
すべてのリストタイプに適用されます。
カスタム属性
カスタム属性に基づいてフィルタリングします。
辞書のリストにのみ適用されます。
ファイル属性
ファイルの属性に基づいてフィルタリングします。
ファイルのリストにのみ適用されます。
-
ソート操作 (sort):ソート操作は、入力リストのタイプに基づいて異なるソート方法を提供します。
ソートキー
説明
範囲
要素の値
要素自体の値に基づいてソートします。
文字列、数値、またはブール値のリストにのみ適用されます。
カスタム属性
カスタム属性に基づいてソートします。
辞書のリストにのみ適用されます。
ファイル属性
ファイルの属性に基づいてソートします。
ファイルのリストにのみ適用されます。利用可能な属性は、フィルター操作と同じです。
-
出力
-
result:処理されたリストの結果。
-
first_item:結果リストの最初の要素。リストが空の場合、値は
Noneです。 -
last_item:結果リストの最後の要素。リストが空の場合、値は
Noneです。
使用例
例 1:ファイル分類 - 画像ファイルをフィルタリングし、ファイル名の長さでソートし、上位 3 つを取得する
シナリオ:ユーザーがさまざまなファイルタイプが混在したリストをアップロードします。画像ファイルをフィルタリングし、ファイル名の長さでソートし、後続の画像認識処理のために上位 3 つだけを保持する必要があります。
操作の設定:
操作 1 - フィルター (ファイルカテゴリによる):
フィルターキー: item.category
フィルター演算子: equals
フィルター値: image
操作 2 - ソート (ファイル名の長さによる):
ソートキー: item.file_name
ソート方向: asc
操作 3 - フィルター (上位 3 つを取得):
フィルターキー: index
フィルター演算子: less than
フィルター値: 3

例 2:データ分析 - 高スコアのユーザーをフィルタリングし、上位 5 人を取得する
シナリオ:ユーザー評価のリストから、スコアが 80 以上のユーザーをフィルタリングし、スコアの降順でソートし、上位 5 人を取得します。
入力リスト:
[
{"name": "Zhang San", "score": 95, "department": "Tech Dept"},
{"name": "Li Si", "score": 72, "department": "Marketing Dept"},
{"name": "Wang Wu", "score": 88, "department": "Tech Dept"},
{"name": "Zhao Liu", "score": 91, "department": "Product Dept"},
{"name": "Qian Qi", "score": 65, "department": "Marketing Dept"},
{"name": "Sun Ba", "score": 98, "department": "Tech Dept"}
]
操作の設定:
操作 1 - フィルター (高スコアのユーザー):
フィルターキー: item.score
フィルター演算子: greater than or equal to
フィルター値: 80
操作 2 - ソート (スコアの降順):
ソートキー: item.score
ソート方向: desc
操作 3 - フィルター (上位 5 人を取得):
フィルターキー: index
フィルター演算子: less than
フィルター値: 5

出力結果:
[
{"name": "Sun Ba", "score": 98, "department": "Tech Dept"},
{"name": "Zhang San", "score": 95, "department": "Tech Dept"},
{"name": "Zhao Liu", "score": 91, "department": "Product Dept"},
{"name": "Wang Wu", "score": 88, "department": "Tech Dept"}
]
注:
-
ツールの入力が、Python ノードでカスタマイズされた
list型の出力変数を参照する場合、Python ノードでリストの明確な要素タイプ (例:list[str]) を定義してください。これにより、リスト操作ノードでの演算子マッチングがより正確になります。