ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

エージェントのワークフロー

エージェントのロジックは、コンテンツ承認に使用するのと同じ ワークフローデザイナー で構築された Liferay ワークフローです。エージェントワークフローは、標準パレットにAI意思決定、AIハブエージェント、HTTPリクエスト、LLM、およびサービスの5つのノードタイプを追加します。

AI Hubインスタンスのワークフローデザイナーは、これら5つの機能をすべて提供します。 AI Hubに接続されたLiferay DXPインスタンスは、AI Hubエージェントノードのみを提供します。これは、他の4つのノードがAI Hub自体で実行されるためです。 AI Hub AgentノードはAI Hubにリクエストを送信し、応答を読み取るため、Liferay DXPが単独で実行できる唯一のノードです。 AI Hub と Liferay DXP の統合については、 を参照してください。

エージェントワークフローの作成と管理

エージェントビルダーでエージェントを開き、ワークフローパネルの ワークフローの編集 をクリックします。 Liferay の標準エージェントのようにエージェントを編集できない場合は、ボタンには ワークフローの表示 と表示されます。

新しいエージェントワークフローには、開始ノードと終了ノードのみが接続されています。 2つのノードの間にノードを追加し、それらを接続し、 更新 をクリックして保存します。

新しいエージェントワークフローは「無題のワークフロー」として開き、開始ノードから終了ノードへと遷移し、その間にノードを追加できるスペースが確保されています。

エージェントノード以外では、ワークフローデザイナーは他のLiferayワークフローと同様に機能します。このプロセスと標準ノードオプション (条件、状態、タスクなど) の詳細については、 ワークフローデザイナーの概要 および ワークフローノード を参照してください。

エージェントワークフローノード

エージェントのワークフローでは、以下の5種類のノードタイプが使用されます。

ノード説明利用可能
法学修士言語モデルにプロンプトを送信し、その応答を保存します。AIハブ
AIの意思決定言語モデルにプロンプトを送信し、その回答に基づいてワークフローの次のパスを選択します。AIハブ
HTTPリクエスト外部エンドポイントを呼び出します。AIハブ
サービスAI Hubに同梱されているJavaデリゲートの1つを実行します。AIハブ
AIハブエージェントAI Hubエージェントを実行し、その応答をワークフローに統合します。AI Hubと接続されたLiferay DXPインスタンス

キャンバス上のノードを選択すると、サイドバーでそのノードを設定できます。ノードの設定は折りたたみ可能なセクションに分割されており、各セクションには設定の一部分のフィールドが含まれています。そのため、表示されるセクションはノードの種類によって異なります。

法学修士

LLMノードは言語モデルにプロンプトを送信し、その応答を保存します。ワークフローの一環として、コンテンツの生成、テキストの要約、データの分類などに活用できます。

その構成要素は、プロンプト、検索拡張型生成、およびツールである。

プロンプトセクションには、以下のフィールドが含まれます。

プロンプト: モデルが従う指示。セクションの最初のフィールドに入力されます。

入力変数: ノードが読み取る値の名前を示す JSON 配列。ノード間で値を渡す を参照してください。

出力変数: ノードがモデルの応答を格納するJSON配列の名前。

ユーザーメッセージ: モデルに送信されたメッセージ。

他の 2 つのセクションについては、 検索拡張生成 および ツール を参照してください。

LLMノードは、最大で1つの出力遷移を受け入れます。 2 つ目の検証では、 スペイン語翻訳ノードには複数の出力遷移がありません のようなノード名を指定したメッセージが表示されて失敗します。

AIの意思決定

AI決定ノードは言語モデルにプロンプトを送信し、その回答に基づいてワークフローが次に進むべき経路を選択します。ワークフローが処理しているコンテンツに関する判断に基づいて分岐が切り替わる場合に使用します。これは、 条件ノード の固定ロジックでは表現できません。

その構成要素は、プロンプト、検索拡張型生成、およびツールである。プロンプトセクションには、 LLM ノードのプロンプトセクションと同じフィールドが含まれています。これらは、モデルが従う指示、入力変数と出力変数のフィールド、およびモデルに送信されるユーザーメッセージです。他の 2 つのセクションについては、 検索拡張生成 および ツール を参照してください。

AI決定ノードには、少なくとも1つの入力遷移と少なくとも2つの出力遷移が必要です。モデルは名前で遷移を選択するため、プロンプトフィールドに遷移の名前を入力してください。モデルがそれらのいずれも指定しない場合、ノードは、遷移サイドバーで デフォルト トグルが設定されている遷移を選択します。

重要

AI決定ノードは、プロンプトセクションに「出力変数」フィールドが表示されているにもかかわらず、出力変数を生成しません。後続のノードは、AI決定ノードから値を読み取ることができません。

HTTPリクエスト

HTTPリクエストノードは外部エンドポイントを呼び出します。これを使用すると、REST API またはクライアント拡張機能からワークフローにデータを取り込んだり、ワークフローの結果を別のシステムに送信したりできます。

その構成要素は、HTTPエンドポイント、ペイロード、変数、接続タイムアウト、認証です。

HTTPエンドポイント: 呼び出すURLとHTTPメソッド。使用可能なメソッドは、 DELETE、 GET、 PATCH、 POST、および PUT です。

ペイロード: リクエストボディ。変数は URL と同様にここで置き換えられるため、入力変数で宣言した {{variable}} は、呼び出しが送信される前に置き換えられます。

変数: ノードの入力変数と出力変数。ノード間で値を渡す を参照してください。

接続タイムアウト: ノードが応答を待つ時間。「ミリ秒単位の値」フィールドで設定します。空欄のままにしておくと、ノードは10000ミリ秒待機します。

認証: 情報です。入力するフィールドはありません。 AI Hub はサインインしているユーザーに代わってリクエストを行い、 Authorization ヘッダーを自動的に設定します。ノードは常にそのヘッダーを送信し、独自のフィールドを提供しないため、それを使用して、サインインしたユーザーのトークンを受け入れるLiferayまたは他のサービスを呼び出します。独自のキーを必要とする外部APIを呼び出すことはできません。

HTTPリクエストノードには、正確に1つの送信遷移、5つのHTTPメソッドのうちの1つ、およびURLが必要です。 3つの要素のうちいずれかが欠けている場合、または複数の出力遷移が含まれている場合に、検証に失敗します。実行時に、エンドポイントが200の範囲外のステータスを返した場合、ノードは失敗します。成功した場合、レスポンスボディを「出力変数」フィールドで宣言された変数に格納します。

サービス

サービスノードは、AI Hubに付属するJavaデリゲートのいずれかを実行します。 Liferayの標準搭載エージェントは、ペイロードの構成やページコンテキストの要求など、他のノードではカバーされないステップにこれを使用します。

そのサービスセクションには、デリゲートのキーを受け取るJavaデリゲートフィールドがあります。出荷されるキーは、 javaDelegate#generateContent および javaDelegate#composeGapSearch の形式をとります。その他の形式の値は検証に失敗し、出荷済みデリゲートに一致しないキーは実行時にエラーになります。

サービスノードには、少なくとも1つの出力遷移が必要です。

AIハブエージェント

AI Hub AgentノードはAI Hubエージェントを実行するため、接続されたLiferay DXPインスタンス上のワークフローからそのノードを呼び出すことができます。既に構築済みのエージェントを実行するために使用してください。その場合、エージェントのロジックをノードとして再構築する必要はありません。

その構成要素は、AIハブエージェントと接続タイムアウトです。

AI Hub エージェント: エージェント定義外部参照コード フィールドは、実行するエージェントを識別します。このフィールドが空の場合、ノードの検証は失敗します。

接続タイムアウト: ノードがエージェントの応答を待つ時間。ミリ秒単位の値フィールドで設定します。空欄のままにしておくと、ノードは120000ミリ秒待機します。

このノードはワークフローの値をAI Hubに送信し、エージェントの応答をそれらにマージした後、デフォルトの遷移に従います。少なくとも1つの入力遷移と、ちょうど1つの出力遷移が必要です。

検索拡張型生成

「検索拡張生成」セクションを設定して、ノードがモデルのみからではなく、接続されているLiferay DXPインスタンス内のコンテンツから応答するようにします。ノードはそのインスタンスを検索し、見つかったものをプロンプトとともにモデルに渡します。

このセクションはLLMおよびAI Decisionノードに表示され、JSONオブジェクトを受け取るフィールドが1つ含まれています。フィールドのプレースホルダーには例が示されています。

{"contentRetriever": {"key": "liferay", "blueprintExternalReferenceCode": "BLUEPRINT_EXTERNAL_REFERENCE_CODE"}}

検索を有効にするには、キー を から liferay に設定してください。ノードはログインしているユーザーとして検索を行うため、ユーザーが既にアクセスできるコンテンツのみを読み取ります。

検索を1つに絞り込むには、 blueprintExternalReferenceCode を追加し、 Search Blueprint を検索します。その制限なしに検索するには、キーを省略してください。

検索結果は最大5件まで表示され、スコアが5未満の結果はすべて除外されます。したがって、一致が弱い場合、ノードは何も受信しない可能性がある。検索ブループリントに基づいて検索範囲を絞り込むことで、関連性のないコンテンツが上位5件の結果から除外されます。

このフィールドは、この検索のみを制御します。エージェントの データソースには影響しません。データソースが接続されたエージェント上のノードは、フィールドが設定されているかどうかをデータソースから回答します。エージェントにデータソースがなく、フィールドが空の場合、ノードはプロンプトとユーザーメッセージに基づいて応答します。エージェントがチャットセッション内で実行されると、ノードはその会話の履歴も確認できる。

ツール

ノードに組み込みツールを与えるには、「ツール」セクションを設定します。利用できるツールは画像生成のみです。

このセクションはLLMおよびAI Decisionノードに表示され、JSON配列を受け取るフィールドが1つ含まれています。画像生成ツールはLLMノードでのみ動作し、AI決定ノードはそれを無視します。

各エントリは、 externalReferenceCode および type キーを持つオブジェクトです。タイプ を ツール に、 externalReferenceCode を L_IMAGE_GENERATIONに設定します。これは、ノードが操作する唯一のコードです。

[
    {
        "externalReferenceCode": "L_IMAGE_GENERATION",
        "type": "tool"
    }
]

ツール エントリで、他のコードが含まれている場合は、エラーなしで無視されます。

ノード間で値を渡す

あるノードから次のノードへ値を移動するには、その値を名前付きワークフロー変数として宣言します。

重要

遷移はノードの実行順序を設定するものであり、データは含まない。AI決定ノードのパス選択も例外ではない。ノードが扱うすべての値は、ノードが宣言した変数から取得されます。

エージェントフォームでは、「入力変数」にはエージェントが受け取る値の名前が、「出力変数」にはワークフローが返す値の名前が付けられます。そこから、各ノードは読み書きする内容を宣言する。入力変数と出力変数は、LLMまたはAI決定ノードのプロンプトセクション、およびHTTPリクエストノードの変数セクションにあります。

どちらのフィールドも、それぞれ 名前 と タイプ を持つオブジェクトの JSON 配列を受け取ります。

[{"name":"tone", "type":"string"}]

型 は 文字列 または JSON です。文字列 変数はそのまま置き換えられます。値が HTTP リクエスト ノードのペイロード フィールドなどの JSON ペイロードに入る場合は、 json を設定します。ノードは、値を読み取る際に、バックスラッシュ、引用符、改行、タブをエスケープするため、ペイロードは有効なJSON形式のままになります。

変数名のみでは有効なJSONになりません。フィールドは解析されず、ノードは何も宣言せず、リテラル {{tone}} は値ではなくモデルに到達します。

その形状が手に入ったら、値を以下のように配線します。

  1. 「入力変数」に、ノードが読み込む変数を一覧表示します。それぞれに、ワークフローに既に存在する値の名前を付けてください。

  2. ノード内の他のフィールドで宣言された変数を参照するには、その変数名を二重の中括弧で囲みます。

    入力変数にテキスト が含まれる LLM ノードでは、ユーザー メッセージ このテキストをスペイン語に翻訳してください: {{text}} がエージェントのテキスト の値をモデルに送信します。

  3. 「出力変数」で、ノードの結果に名前を付けます。後続のノードは、自身の入力変数に同じ名前を宣言することで、その結果を読み取ります。

出力変数には最初のエントリのみが書き戻されるため、2番目のエントリは後のノードに到達することはありません。

ノードは、入力変数で宣言した変数のみを置き換えます。それ以外のものはすべてリテラルのままなので、宣言されていない {{text}} は、それらの文字とまったく同じ文字としてモデルに到達します。その変数を参照するすべてのノードで、変数を宣言してください。

具体的な例については、 カスタムエージェントの構築 を参照してください。

Liferay検索エージェント

Liferayに標準搭載されているLiferay Searchエージェントは、接続されているLiferay DXPインスタンス内のコンテンツから質問に回答します。そのワークフローは、開始ノード、1つのLLMノード、および終了ノードで構成されています。エージェントは リクエスト を受け取り、 レスポンス を返します。

LLMノードのプロンプトセクションには、以下の値が格納されます。

項目値
プロンプトYou are the Liferay Knowledge Assistant, a specialized AI agent designed to assist users by retrieving accurate information specifically from the Liferay Digital Experience Platform (DXP) instance or using the chat history. Your tone is professional, helpful, and concise.
入力変数[{"name": "request", "type": "string"}]
出力変数[{"name": "response", "type": "string"}]
ユーザーメッセージ{{request}}

その「Retrieval-Augmented Generation」セクションでは、 liferay コンテンツリトリーバーを設定します。

{"contentRetriever": {"key": "liferay"}}

その「ツール」セクションには空の配列が含まれているため、このノードはツールを使用しません。