Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

naoto kadowaki
ServiceNow Employee
ServiceNow Employee
本稿はこちらの記事の翻訳です。最新の情報は元となる記事をご覧ください。
このトピックの一部は機械翻訳で処理されている場合があります。

 

最近、あるお客様から、インシデント管理用の一種の「ホットトピック」レポートを作成する方法を尋ねられました。

ソリューションに入る前に、次の要件を明確にしておきましょう。
インシデントが作成されると、ServiceNow [簡単な説明] フィールドと [説明] フィールドを分析し、ユーザーが報告している主要なトピックを特定したいと考えています。これらの問題点は、長期的な傾向を追跡できるように、レポート用に保存する必要があります。

これを製品の観点から見ると、予測インテリジェンステキスト分析でできることによく似ています。

 

OOTB (out of the box) オプションを使用してみませんか?

予測インテリジェンス (またはタスクインテリジェンス)

この機能は、インシデントデータを分析し、自動的に分類します。サービスとサービスオファリングを備えた明確に定義された CSDM がある場合有望に聞こえます。
しかし、そうでない場合はどうでしょうか? 予測インテリジェンスを使用してデータを分析し、特定されたキーワードをカスタムテーブルに格納するカスタムロジックを構築することはできますが、これはすぐに利用可能なソリューションではなく、LLM の仕組みに関する知識が必要です。

 

テキストアナリティクス

これは実際に私の顧客が必要としていることを正確に実行し、100% OOTB です。完璧ですよね? 不正解です。大きな障害: テキストアナリティクスはプラットフォームアナリティクスダッシュボードではサポートされておらず、私の知る限り、短期的なロードマップには含まれていません。

そこで、別の選択肢が必要でした。

 

生成 AI は役に立ちますか?

そこで、この投稿のトピックに移ります。ServiceNowの新しい生成AIツールを使用してこれを実現できるか?
確認してみましょう。

この投稿では、次の 2 つの異なるアプローチを使用します。

  • カスタム Now Assist スキル
  • カスタム AI エージェント (次の投稿で説明)

Now Assist から始めましょう。

 

Now Assist を使用したカスタムスキルの構築

私たちのニーズに合う OOTB スキルがないため、カスタムスキルを作成しました。

Now Assist スキルキットコンソールに移動し、新しいスキルを作成します。名前と説明を入力し、プロバイダーを選択します。私の場合、Now LLMを使用しましたが、必要に応じて別のプロバイダーを選択することもできます。

次に、プロンプトで使用する入力フィールドを追加します。私は2つ追加しました:

  • 簡単な説明
  • 説明

naotokadowaki_0-1764130488816.png

 

naotokadowaki_1-1764130488823.png

 

サマリーに移動」をクリックすると、プロンプトの作成と設定を行う画面が表示されます。

 

プロンプトの作成

私が思いついたプロンプトは次のとおりです (ChatGPT が生成を手伝ってくれました)

IT インシデントチケットを分析し、インシデントの簡単な説明と完全な説明に基づいて最も関連性の高いトピックを抽出する AI アシスタントです。

インシデントに関連する特定のシステム、サービス、テクノロジー、コンポーネント、またはエラータイプを特定します。

提供された既存のキーワードのリストを使用して、関連するトピックをマッピングします。インシデントに、既存のキーワードでカバーされていない新しいトピックが明らかに含まれている場合は、同じスタイルに従う新しい簡潔なキーワードを追加できます。

症状ではなく、問題が何に関するものかに焦点を当てます。

ドメインに関連する簡潔な用語 (VPN 接続」、「Outlook 同期エラー」、「共有フォルダーへのアクセスが拒否されました」など) を使用してください。

複数の個別の問題が説明されている場合は、それぞれを個別のトピックとしてリストします。

「問題」、「問題」などの一般的な単語や、「ユーザーはアクセスできません」などのフレーズは避けてください。

結果を文字列の JSON アレイとして出力します。

Input:
Short Description: {{short_description}}
Description: {{description}}
Existing Keywords:  {{GetExistingKeywords.output}}

Output example:

  "Email delivery failure", 
  "Outlook calendar sync", 
  "Active Directory group permissions" 

 

プロンプトには次のものが含まれます。

  • スキルが実行すべきことについての明確な指示
  • フォーマットの予想 (解析しやすい JSON)
  • 入力変数:short_description、description、およびGetExistingKeywords.output (これについては後ほど詳しく説明します)
  • LLM の応答スタイルをガイドする出力例
  • 一般的または曖昧な表現を避けるためのルール

 

naotokadowaki_2-1764130488831.png

 

 

既存のキーワードの再利用

Now Assist が毎回新しいキーワードを作成しないように、既存のキーワードを再利用するロジックを追加しました。

🔍この時点で、キーワードとそれに関連するインシデントレコードを保存するカスタムテーブルをすでに作成しています。テーブルには、キーワードとレコードの 2 つのフィールドがあります。

既存のキーワードを取得するために、スキルキットにツールを作成しました:

  1. [ツールエディター] タブに移動します。
  2. プロンプトノードの前にある + アイコンをクリックします。
  3. スクリプトツールノードの作成します。

naotokadowaki_3-1764130488834.png

 

 

[Write my own script] を選択し、次のように貼り付けます。

(function runScript(context) {
    /*  {Object} context - Execution context, which may include:*/
    /*                         - Previous tool outputs/inputs (e.g., context['ToolName.attributeName'] or context.getValue('ToolName.attributeName')).*/
    /*                         - Additional context information (e.g., context.getAllValues()).*/
    /* @returns {Object} - The computed value for the attribute.*/
    var kwGr = new GlideAggregate('sn_itsm_gen_ai_ai_key_topics');
    kwGr.addAggregate('COUNT');
    kwGr.groupBy('u_keyword');
    kwGr.query();

    var items = [];
    while (kwGr.next()) {
        items.push(kwGr.u_keyword.getDisplayValue());
    }
    
    return {"keywords": items.toString()};
})(context);

 

naotokadowaki_4-1764130488840.png

 

 

次に、プロンプトエディターに戻り、[入力の挿入] をクリックして、このスクリプトの出力をプロンプトに追加します。

 

スキルの公開

すべての設定が完了したら、次の操作を行います。

  1. [プロンプトをファイナライズ] をクリックします
  2. [スキル設定] タブに移動します。
  3. [展開設定] で、スキルのトリガー方法を選択します

このユースケースでは、インシデントの作成時にスキルが自動的に実行されるため、[フローアクション]を選択しました。

最後に、スキルを公開し、Now Assist アドミンコンソール (ITSM の下) からアクティブ化します。

naotokadowaki_5-1764130488848.png

 

naotokadowaki_6-1764130488857.png

 

 

フローによる自動化

スキルの準備はできており、データを分析できますが、実際に何かを実行させるには、プロセスを自動化する必要があります。

インシデントが作成されたときにトリガーされる簡単なフローを作成しました。それは:

  • スキルを呼び出します。
  • キーワードリストを待機します。
  • 結果を解析します。
  • キーワードテーブルにレコードを挿入します。

naotokadowaki_7-1764130488864.png

 

 

また、スキルの JSON 応答を解析してテーブルに保存するAI キーワードの解析」というカスタムアクションも作成しました。

(function execute(inputs, outputs) {

    var modelOutput = (JSON.parse(inputs.KeywordsJson)).model_output;
    var keywords = JSON.parse(modelOutput.replace(/\n/g, '')).topics;

    for (var i in keywords) {
        var grKeyword = new GlideRecord('sn_itsm_gen_ai_ai_key_topics');
        grKeyword.initialize();
        grKeyword.u_keyword = keywords[i];
        grKeyword.u_record = inputs.RecordId;
    }

})(inputs, outputs);

 

naotokadowaki_8-1764130488870.png

 

 

最終的な考え

これですべてが整いました。

  • インシデントは自動的に分析されます。
  • キーワードが抽出されて保存されます。
  • 長期的な傾向を追跡して報告できます。

軽量でありながら強力なセットアップで、Now Assist1 つのカスタムテーブル、1 つのフローのみを使用します。

次の投稿では、カスタム AI エージェントを使用して同様のことを行う方法を紹介します。