サービスフローにおける生成的AIタスクの構築

サービス・フローに生成AIロジックを実装するために、生成AIタスクを作成することができます。 生成AIタスクは、大規模言語モデル(LLM)にプロンプトを送り、生成された出力を受け取ることができる。

開始前に

サービスフローエディターでジェネレーティブAIツールを使用するには、まず、 watsonx.ai™ プロバイダーへの接続でサーバーを構成する必要があります。 サービスフローエディターでGen AIタブに移動し、サーバーが設定されていない場合、エラーメッセージと設定ドキュメントへのリンクが表示されます。

ジェネレーティブAIタスクの設定方法については、 コンテナ上の Business Automation Workflow、ジェネレーティブAIを有効にするを参照のこと。

サーバーが設定されると、生成AIタスクの新しいAIエントリ()がサービスフローエディターパレットのアクティビティセクションに追加されます。

手順

  1. デザイナーでプロセスアプリケーションを開き、既存のサービスフローを開くか、左側のナビゲーションツリーから新しいフローを作成します。
  2. サービスフローの「ダイアグラムビューで、コンポーネントパレットの「アクティビティアイコンの横にある矢印をクリックしてサブパレットを開き、「AIアイコン()をダイアグラムキャンバス上にドラッグします。
  3. 生成AIタスクを設定するには、ダイアグラムでそのタスクをクリックし、「実施タブに移動して「オープン・ジェンAIクリックするか、エディタの上部にある「Gen AIタブをクリックし、左側のパネルでタスク名をクリックする。
    Gen AIタブにエディターが開く。
  4. プロンプトに使用する大規模言語モデル(LLM)を選択します。
    各項目には、LLMの簡単な説明が含まれている。
    コンテナで生成AIを有効にする Business Automation Workflow の手順で説明されているように、プロパティを使用して、LLMリストに表示されるものを設定することができます。 選択した LLM は、「 始める前に 」のセクションで設定したサーバー構成に関連する watsonx.ai プロジェクト/デプロイメントにアクセスできます。

    利用可能なLLMの詳細については、 財団モデルライブラリ 外部リンクは新しいウィンドウまたはタブで開きます .

  5. 処理のためにLLMに送信されるプロンプトを作成する。
    プロンプトには2つのパートがある:コンテキストインプット。 コンテキストは指示と背景情報で構成され、インプットはコンテキストに提供されるデータである。 入力は、すべての文脈で必要とされるとは限らないことに注意。 プロンプトの作成方法の例については、 サンプルプロンプトおよび「 生成AIタスクを実装するにはどのような手順が必要ですか?
    1. Contextフィールドに命令文を入力する。
    2. オプション: 入力フィールドに、モデルに応答させたいテキストを入力します。
  6. オプション:コンテキストと入力をより再利用可能にするために変数を追加する。
    1. サービスフローの「変数」タブに移動し、サービスフローで必要な各入出力変数について、「変数」セクションの横にある「+」記号をクリックします。 Nameフィールドで、デフォルトの名前をより分かりやすい名前に置き換える。 変数の種類]の横にある[選択]をクリックし、リストから[文字列システムデータ]を選択する。 オプションとして、Has defaultを選択し、Default Valueセクションの対応するフィールドに値を入力することで、変数のデフォルト値を設定することができる。
    2. Gen AIタブタブのエディターから、変数セクションのAdd Variable +をクリックする。
    3. ドロップダウンメニューから Gen AI タスクに追加する変数を選択し、Add をクリックします。 文字列型でリストでない変数のみがサポートされ、ドロップダウンメニューから利用できます。
      変数は生成AIタスクに追加され、変数セクションの下にリストされます。 これらの変数は後でゴミ箱アイコンをクリックして削除することができます。
      警告 変数]タブから変数を削除すると、プロンプトの入力とコンテキストで使用できなくなるため、その変数も削除する必要があります。
    4. 異なる入力値でLLMにどのような異なるタイプの出力が生成されるかを確認するには、プロンプトで使用するフィールドに変数のテスト値を入力する。 この値は実行時には使用されない。
      注:サービスフローで変数にデフォルト値が追加された場合、変数がGen AIタスクに追加されると、フィールドに自動的に表示されます。
    5. 領域の左下隅にある+記号をクリックするか、 を押して、サービスフローからコンテキストまたは入力に変数を追加します。 変数名は、例えば、二重のカギカッコで囲まれて、関連フィールドに表示される:
  7. オプション:生成される出力の長さを制限するには、[パラメータ]ペインから、LLM が生成できるトークンの最小数と最大数を指定します。
    ヒントトークンとは、モデルの意味的な意味を持つ文字の並びのことです。 LLM処理の前に、プロンプトテキストの単語はトークンに変換される。 同様に、モデルからの生の出力もトークンの形をしている。 これらの出力トークンは、最終結果として表示される単語に変換される。
    • デフォルトの最小値は1、最大値は50に設定されている。
    • 最小値を0にすることはできない。
    • 各LLMには、入力プロンプトのトークンと生成された出力のトークンの両方を含む、トークン総数の最大制限がある。 これらの制限は、Large language modelドロップダウンメニューのLLMの説明で見ることができます。 トークンの詳細については、 トークンとトークン化を参照してください。 外部リンクは新しいウィンドウまたはタブで開きます.
    LLMを呼び出すコストは、それが消費し生成するトークンの数に依存する。 冗長になりすぎず、適切な回答を得るためには、結果を限定することを推奨する。 例えば、"はい "または "いいえ "の回答が期待される場合、トークンの最大数を1に設定することができる。
  8. オプション:生成AIタスクの精度と関連性を向上させるために、トレーニング例を追加し、トレーニング例セクション新規例を/span>クをリックして、入力と期待される出力を入力することで、1つ以上のサンプル入力と対応する出力のペアを指定する。
    LLMに適切な訓練例を提供することで、よりマッチした出力が得られますが、LLMが設定した最大トークン入力制限と、入力および生成された出力トークン全体の最大トークン制限を超えないようにしてください。
  9. 生成」をクリックする。
    ヒント Generateボタンの横にあるRAWをクリックすると、LLMに送信される情報が表示される。
  10. 生のプロンプトを表示するには、[生のプロンプト]アイコンをクリックして、[生成された出力]ペインで結果を確認します。
    View raw promptウィンドウでは、生成された出力を得るために使用されるコンテキスト、入力、およびトレーニング例を見ることができます:
    • プロンプトの結果をさらに改善するには、入力や期待される出力を編集し、より多くの例を提供することができます。
    • 生成された出力に満足したら、Save as exampleをクリックしてプロンプト入力と生成された出力をトレーニングとして保存することができます。
  11. 生成された出力をサービスフロー内の変数にマッピングするには、「ダイアグラム」タブのプロパティペインの「データマッピング」セクションに進みます。
    タスクの出力は、サービスフロー内の変数にマッピングされ、他の下流タスクや呼び出しプロセス、サービスタスクで使用できるようになります。 入力マッピングは、Gen AIタブで変数を追加する際に暗黙のうちに行われるため、記入する必要はない。 タスクからの4つのアウトプットがマッピング可能である:
    • 生成されたテキスト:LLMの出力。
    • 生成トークン数:生成されたテキストに対してLLMが生成したトークンの数。
    • 入力トークン数:与えられた入力に対してLLMが消費したトークンの数。
    • 停止理由:通話が停止した理由。 次のような名前にすることができます。
      • not_finished:ストリーミングされるトークンが増える可能性がある。
      • max_tokens:要求されたトークンの最大値に達した。
      • eos_token:シーケンス終了トークンに遭遇した。
      • キャンセルされた:クライアントによってキャンセルされたリクエスト。
      • time_limit:制限時間に達した。
      • stop_sequence:ストップシーケンスに遭遇した。
      • token_limit: トークンの上限に達した。
      • エラーが発生しました:エラーが発生しました。

結果

サービスフロー内の生成AIタスクに設定した生成AIプロンプトが、プロセスアプリケーション内から呼び出せるようになりました。
注:生成AIタスクのエラー処理は、サービスフロー内のすべてのタスクと同じように、境界イベントを使用して行われる。 詳細については、エラー境界イベントを使用してエラーをキャッチするを参照してください。