- 記事履歴
- RSS フィードを購読する
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
昨日
私たちが解決しようとしている問題は何か?
ワークショップを終えたばかりで、要件がストーリーに凝縮されています。あなたはこのワークショップで得られたストーリーを実装する任務を負っている開発者であるため、カスタマーのインスタンスにあるストーリーのリストからストーリーを選択します。ストーリーを調べて望ましい結果とその構成方法を決定しますが、ストーリーには多くの情報が含まれていますが、すべてを読む忍耐力がないため、最初の文を読んで開発を開始します。
インスタンスで作業を開始し、ストーリーの設定を開始します。しかし、しばらくすると、ストーリーの更新セットを作成していないことに気付いたので、変更をキャプチャする更新セットを作成します。
更新セットを作成するときに、顧客がどのような命名規則を使用しているかよくわからず、実際には開発に戻るため、プレースホルダー名を使用して更新セットを作成します。また、更新セットの説明に何も書き忘れてしまうのは、誰がそれを行う時間があるからです。
ただし、開発サイクルの後半で更新セットを移行するときに、システムアドミニストレーターは作成したこの更新セットを追跡できず、何を意図しているのかわからないため、移行実行ブックの作成が遅れ、本番環境での展開が遅れます。
AI エージェントを入力します...
ただし、ストーリーの更新セットの作成などの管理タスクについては、AI エージェントが対応できるため、心配する必要はありません。
今日作成する AI エージェントは、次のことを行います。
1) 簡単な説明、説明、および受け入れ基準からの情報を使用してストーリーを要約します。
2) ベストプラクティスに沿って、適切な命名規則と説明を使用して更新セットを作成します。
デモ:
デモのテスト:
Now Assist パネルのデモ:
インプリメンテーション
前提条件:
Xanadu パッチ 7+、Yokohama パッチ 1+
Now Assist AI エージェントプラグイン
Agile Development 2.0 プラグイン
Now Assist パネルがオン
パート 1 - ユースケースの作成
AI エージェントを作成する際に考慮すべき適切な実装計画は次のとおりです。
- AI エージェントをなぜ実装していますか? - ユースケース
- AI エージェントをどのように実装していますか? - 個々のエージェント
1) Now Assist AI エージェント>概要に進みます
2) ユースケースまで下にスクロール> [新規] をクリックします
3) この画面が表示されます。フィールドに次の情報を入力します。
|
フィールド |
価値 |
簡単な説明 |
|
名前 (name) |
更新セット作成者 |
これが AI エージェントの目的です |
|
説明 (Description) |
このユースケースでは、ストーリーの簡単な説明、説明、および受け入れ条件を読み込みます。次に、規則に従って正しいスコープに更新セットを作成します |
この説明は、この AI エージェントが作成される理由の簡単な説明であり、エージェントが行うべきことの概要を示しています。 |
|
手順 (Instructions) |
このチームは、rm_storyテーブルから現在のストーリーレコードを分析し、その簡単な説明、説明、および受け入れ条件を確認して、構成更新セットの作成方法を決定できます。<story_number>からストーリーの情報を取得 |
これらは、構成されるエージェントのチーム向けの手順です(この場合は1つのエージェントのみです)。これは、エージェントが達成すべき高レベルの目標と、その達成方法の簡単な説明として表現する必要があります。
たとえば、目標は更新セットを作成することですが、エージェントがそれを実行する方法は次のとおりです。 1) 次のフィールドを確認します。 2) 情報の入手先。
|
4) [保存] をクリックし、[表示の切り替え] 画面が表示されるまで続行します。
これにより、Now Assist パネルから AI エージェントを利用できるようになり、Now Assist パネルをオンにしている限り、プラットフォーム内のどこからでもこの AI エージェントを実行できます。
5) [保存してテスト] をクリックします。
パート 2 - エージェントの作成
この部分では、エージェントがその作業を実行できるようにさまざまなツールを使用する必要があります。
1) [概要] タブに移動し、[AI エージェント] タブまで下にスクロールして、[新規] をクリックします。
2) エージェントに名前と説明を入力します。
3) エージェントのロールと指示を定義します。
AI エージェントロールは、エージェントの想定される人物に基づいて、タスクの実装方法に関するコンテキストをエージェントに提供するため、非常に重要です。これは、エージェントがこのエージェントのターゲットオーディエンスが誰であるかを理解するのに役立ちます。
指示は、タスクの完了方法の概要を示す高レベルの指示です。これらの指示とユースケース側の指示との違いは、ユースケースの指示は AI エージェントのチームを対象としており、AI エージェントのビジネスゴールを定義することです。これらの手順は、個々の AI 履行者が自分の仕事をどのように行うかを対象としたものです。
ツールの追加
AI エージェントがその仕事をするには、特定のツールを構成する必要があります。エージェントの右上のドロップダウンにある、AI エージェントを支援するために使用できるツールが多数あります。
これらは、この AI エージェントに使用されているツールです。
1) ストーリーの詳細を取得
説明:このフローアクションを処理する方法を AI に指示します。詳細についてはステップ 2 を参照してください)
実行モード:
- 監督(Supervised😞エージェントは、タスクの完了時に思考プロセスを検証するためにユーザーに入力を求めます。
- 自律(Autonomous😞エージェントがこのタスクを完全に制御し、ユーザーには出力のみが表示されます。
出力を表示:エージェントがタスクを完了した出力を表示します。
フローアクションコード:
(function execute(inputs, outputs) {
var text = "";
var ctGR = new GlideRecord("rm_story");
ctGR.addQuery('number', inputs.number);
ctGR.query();
if (ctGR.next()) {
text = "Story Number: " + ctGR.getValue('number') + "\n\n";
text += "Short Description: " + ctGR.getValue('short_description') + "\n\n";
text += "Description: " + ctGR.getValue('description') + "\n\n";
var ac = ctGR.getDisplayValue('acceptance_criteria').replace(/<[^>]*>/g, '')
text += "Acceptance Criteria: " + ac;
outputs.content = text;
} else {
outputs.content = "Unable to fetch requested story record.";
}
})(inputs, outputs);
2) ストーリーから更新セットを作成します。
注意:サブフローを作成する前に、システムプロパティ sn_flow_designer.allowed_system_tables を編集してsys_update_setテーブルを含めてください。これもグローバルスコープでのみ機能します。作成されたすべての更新セットはグローバル更新セットになります。
説明を分解するには、サブフローを理解する必要があります。
更新セットレコードを作成
入力と出力
これらの入力と出力はすべて、AI エージェントによって自動的に入力されます。ここで、AI エージェントがこれらの入力を入力する方法について説明します。AI がこれらのフィールドに正しく入力する可能性を高めるには、LLM が入力を理解できるように、変数に適切な名前が付けられていることを確認してください。
AI エージェントでのこのサブフローの説明の内訳に戻ります。
「このサブフローを使用して、sys_update_setテーブルにレコードを作成します。
更新セットの名前は次のようになります:
ストーリー Number_User Initials_Version番号
更新セットの説明は、ストーリーから得た詳細に基づいたストーリーの要件の簡潔な要約である必要があります。情報を取得したフィールドの名前をサマリーに含めないでください。
たとえば、「簡単な説明には...」のようには言わないでください。
出力には更新セットの名前が表示されます。」
エージェントにタスクを説明するときは、できるだけ正確な結果を得るために、できるだけ曖昧さを排除するために、断定的な言葉遣いを使用することが不可欠です。あなたが何を望んでいるのかわからなければ、エージェントはあなたが何を望んでいるのかわかりません。
このサブフローを使用して、sys_update_setテーブルにレコードを作成します。-> サブフローの目的を特定します。
更新セットの名前は次のようになります:
Story Number_User Initials_Version Number
この部分では、適切な名前規則に従って、更新セットの名前を明確に示します。この命令は、サブフローのupdate_set_name変数を入力します。ユーザーのイニシャルの部分は、現在のユーザーのイニシャルの取得フローで説明します。
更新セットの説明は、ストーリーから得た詳細に基づいたストーリーの要件の簡潔な要約である必要があります。情報を取得したフィールドの名前をサマリーに含めないでください。
たとえば、「簡単な説明には...」のようには言わないでください。
これは、エージェントに対して積極的に行動し、何をすべきか、どこから情報を入手すればよいかを伝える良い例です。ストーリーのサマリーにより、更新セットの説明が更新されます。これにより、サブフローのupdate_set_description入力が入力されます。
情報取得元のフィールドの名前をサマリーに追加しないようにしました。
たとえば、「簡単な説明には...」のようには言わないでください。 テスト時と同様に、エージェントはストーリーから情報を取得するフィールドを出力することがありますが、これは要約には役に立たず、あまり現実的に聞こえません。したがって、私は AI にこれをしないように明確に指示しましたが、それはうまく機能したため、断定的な言葉は指示に使用するのに非常に役立つことを繰り返しました。
出力には更新セットの名前が表示されます。-> これは、ユーザーに何を出力するかをエージェントに直接指示します。
3) ユーザーのイニシャルを取得します。
説明:
このサブフローを使用して、現在のユーザーのイニシャルを取得します。出力は、更新セットの命名規則である「ストーリー Number_User Initials_Version番号」で使用されます。この名前の「ユーザーのイニシャル」の部分は、サブフロー出力に置き換える必要があります。
このサブフローは、単に現在のユーザーの最初のイニシャルと最後のイニシャルを取得して連結します。gs.getUser() でフローアクションに問題が発生していたため、ユーザーのイニシャル取得アクションをサブフローにラップする必要がありました。フロープロパティ [実行方法:セッションを開始するユーザー] を設定する必要があるため、サブフローとフローでのみ使用できるプロパティです。
ユーザーのイニシャルコード:
(function execute(inputs, outputs) {
// ... code ...
var firstInitial = String.fromCharCode(gs.getUser().getFirstName().charAt(0))
var lastInitial = String.fromCharCode(gs.getUser().getLastName().charAt(0))
outputs.user_initials = firstInitial+lastInitial;
})(inputs, outputs);
パート 3 - エージェントのユースケースへの接続
1) ユースケースリストに戻り、作成したユースケースをクリックします。
2) [AI エージェントを接続] まで下にスクロールします。
[AI エージェントを追加] をクリックし、作成した AI エージェントを選択します。
3) 保存して続行
エージェントのテスト
1) 左上のテストタブをクリックします。
2) お持ちのストーリーでユースケースをテストします (必要に応じて作成します)
テスト結果の例を次に示します。
免責事項
一部の日本語は、翻訳ソフトウェアを使用してお客様の便宜のために翻訳されています。正確な翻訳をご提供できるよう相当な努力を払っておりますが、いかなる自動翻訳も人間の翻訳者に代わることはなく、そのようなことは意図されておりません。翻訳は「現状のまま」提供されています。他言語への翻訳の的確性、信頼性または正確性については、明示または黙示を問わず、いかなる保証も行われません。翻訳ソフトには限界があるため、一部のコンテンツが正確に翻訳されていない場合があります。これらの資料の公用言語は英語です。翻訳の際に生じる相違または不一致は、コンプライアンスまたは履行の目的に関しては拘束力を有さず、法的効力はないものとします。