こんにちは。
てくさぽBLOGメンバーの高村です。
当ブログ Part1 (前回記事)では、watsonx Orchestrate の概要と IBM Cloud版 watsonx Orchestrate のプロビジョニングおよび環境設定をご紹介しました。
Part2(本記事)では、生成AIスキル、プリビルドスキルおよびスキルフローを作成し、検証してみた感想をご紹介します。
はじめに
検証に入る前に watsonx Orchestrate について簡単におさらいをしたいと思います。
watsonx Orchestrate は、チャットにやりたいことを入力するだけで複数のシステムへログインすることなく処理を実行し、生成AI を活用して効率的に業務を遂行できる製品です。主要機能には、様々なアプリケーションと連携するためのプリビルドスキルや生成AI を活用したスキル作成、プリビルドスキルや生成AIスキルを一連のスキルとして実行できるスキルフローなどが備わっています。
※機能の詳細については Part1 をご参照ください。
検証シナリオ
検証のシナリオは、営業担当者が顧客との打ち合わせ後に議事録をまとめ、それを関係者に送信し、さらに社内の営業支援システム(以下SFA)に登録する作業を想定しています。
通常では以下の図の様に、打ち合わせ後に人力で会議ツールから会議情報を取得し、メモを議事録としてまとめ、メールツールを起動して関係者へメールを送信し、その後 SFA へ議事録を登録する、という流れになるかと思いますが、このような作業は時間がかかるうえに日常業務の中でも頻繁に発生します。
watsonx Orchestrate を使用すると、チャットに「議事録の作成と送信」と入力するだけで、会議ツールから情報を取得、議事録をまとめ、メールのドラフトを作成、SFA への登録を実行するため、作業時間の短縮と情報の共有、SFA への登録忘れの防止、コピー&ペーストミスの低減ができます。
検証環境
Part1 でプロビジョニングした IBM Cloud上の watsonx Orchestrate を利用します。検証では、会議ツールは Webex(無償版)、メールツールは Gmail(弊社アカウント)、議事録を登録する SFA は Salesforce(弊社Sandbox環境)を使用します。
検証実施
前述の通り、会議ツール(Webex)から会議情報を取得し、会議メモを生成AI が要約し、メールツール(Gmail)でメールドラフトを作成し、内容を確認してメール送信し、SFA(Salesforce)に登録する、という処理を作成していきます。
※以降から検証の紹介になりますが、まずは watsonx Orchestrate での処理の流れを見たいという方は、「こちらの動画」をご覧ください。
1. 生成AIスキルの作成
まずはじめに、議事録をまとめる生成AIスキルを作成します。(以下の図オレンジ色の枠部分)
- 左サイドメニューから「スキル・スタジオ」をクリック
- 右上の「作成」プルダウンを開き「プロジェクト」をクリック
- 「Name」に任意のプロジェクト名を入力
(当検証では「イニシャル_Summary」と入力しています。) - 入力後「Create」をクリック
- スキルタイプ選択画面にて「Generative AI」をクリック
- 「Name」に任意のスキル名を入力
(当検証では「イニシャル_Summaryskill」と入力しています。) - 入力後「Create」をクリック
以下の画面が表示されます。デフォルトで選択している言語モデルは利用可能期限が近いため、画面上部に “Foundation model deprecated~” とアテンションが表示されています。
- 「Model: ibm/granite-15b-chat-v2」右横のプルダウンを開き、言語モデルを変更
(当検証では「mixtral-8x7b-instruct-v01」を選択しています。)
アテンションが消え、以下の画面の状態になります。
- 以下の画面①~⑤の入力・設定
1-9-1. 言語モデルのパラメータ値(Parameters)を設定
当検証では最小値 “1”、最大値 “3000” にしてトークンを設定し、出力の長さを調整します。(最大値は言語モデルによって異なる)
1-9-2. 変数を設定
watsonx Orchestrate では生成AI の入力として変数を使用することができます。
Variables で会議メモを変数 “text” として設定します。
1-9-3. コンテキスト(Context)を設定
会議メモの内容をもとに日本語で議事録を作成する指示文を入力します。
会議メモの箇所は変数 {{text}} に設定します。(変数は{{}}で囲う)
1-9-4. 入力プロンプト(Prompt input)を設定
ここでは言語モデルに応答してほしい文を入力します。
今回は変数 {{text}} のみを入力します。
1-9-5. インプット・アウトプットの例(Training examples)を入力
「New example +」をクリックし、インプットとアウトプットの例をそれぞれ入力します。
右上の「Generate」をクリックすると文章が生成され、Generated output(出力プロンプト)で文章を確認できます。
次に、生成AI を公開してスキルを使用できるように設定します。
- スキル名の横にある目のマークをクリックし、地球儀のマークに変更
- 右上の「Share changes」をクリック
- 「Share」をクリック
- 表示されたポップアップにて「Share」をクリック
- 右上に “Success” とポップアップされることを確認し、左の「← Back to xx_Summary」をクリックして戻る
- 右上の「Publish」をクリック
- 表示された「Version and publish」画面にて「Version name」に任意のバージョン名を入力し、「Create version and publish」をクリック
(当検証では「1.0.0」と入力)
- 右上に “Published” と表示されることを確認し、左上の「←(PJ名)」をクリック
- 「スキル・スタジオへようこそ」画面にて、「スキルおよびアプリ」を選択
- スキル一覧に作成したスキルの状況が「公開済み」となっていることを確認後、スキルの右側をクリックし「このスキルの強化」を選択
スキルの強化画面が表示されます。
ここではスキルを実行する際の入力項目、出力項目、呼び出すためのフレーズを設定できます。今回は句タブでスキルを呼び出すフレーズのみ設定します。
- 句タブをクリックし、スキルを呼び出すフレーズを日本語で3つ追加
- 追加後、画面下の「発行」をクリック
- 右上に「正常に公開されました」と表示されることを確認
- メインメニューから「スキル・カタログ」をクリック
スキル・カタログから作成したスキルを自分のスキルとして追加します。
- 検索バーにイニシャルを入力し「スキル」をクリック
- タイル内の「スキルの追加 +」をクリックし、「追加」となることを確認
以上でスキルを実行する準備が整いました。早速チャットから実行してみましょう。
- メインメニューから「チャット」をクリック
チャット画面が表示されます。
- 下部の「スキルタイル」をクリックまたは入力バーにフレーズを入力
(当検証では「議事録をまとめて」と入力しています。) - 呼び出されたスキルを選択
- text欄にサンプルの会議メモを入力し「適用」をクリック
10秒ほどで文章が生成されました。会議メモから体裁の整った議事録が生成されています!
生成AIスキルの作成は以上で完了です。
スキル作成自体の難易度は高くありませんが、整理された議事録を生成してほしいためプロンプト指示文の調整に時間がかかりました。Context の内容は指示ごとに改行し、日本語で生成することを明記するなど工夫が必要です。
また最大トークン数2000としていましたが議事録が途中できれてしまう現象があったため、最大トークンを3000にして調整しました。言語モデルごとに最大トークン数、対応言語は異なるため、複数のモデルをテストして最も期待に合ったモデルを選択することをお勧めします。
2. プリビルドスキルの作成
次に、プリビルドスキルを追加ます。(以下の図緑色の枠部分)
まず、Webex のプリビルドスキルを追加します。
当検証では会議情報をリストする「List all meeting」とその会議情報から参加者のメールアドレス情報を取得する「List meeting invitees」を追加します。
- メニューバーから「スキルカタログ」を選択し、Webexのタイルをクリック
次に、Webex への接続設定を行いなす。
- 「アプリの接続」をクリック
- Bearer Token を入力し「アプリの接続」をクリック
(WebexのBearer TokenはWebex for Developersから取得しました。)
「正常に接続されました」というポップアップが表示されます。
- 「List all meetings」の「スキルの追加」をクリック
- 「追加」となったことを確認
- 会議参加者のメールアドレスを取得するため「List meeting invitees」を同様に追加
Webex の2つのプリビルドスキルをチャットから呼び出すことができるか確認します。
- メニューからチャットを開きList all meetingsのタイルをクリックし、activeな会議をクリックするとスケジュールされている会議情報が表示されることを確認
- List meeting inviteesのタイルをクリック
対象会議を選択すると、参加者の e-mailアドレスが表示されることが確認できます。
※後続のGmailプリビルドスキルでメール送信先として使用します。
次に、議事録送信するための、Gmail の Send a email のプリビルドスキルを追加します。
- スキルカタログからGmailの「Send a email」を選択し「アプリの接続」をクリック
- アカウント選択画面にて、検証用アカウントをクリック
- 以下の画面が表示にて「次へ」をクリック
- 「追加」となっていることを確認
これで、チャットから Gmail を呼び出しメールを送ることが可能になりました。
最後に、Salesforce へ議事録を登録するため、Salesforce のプリビルドスキルを追加します。
ここでは、会議参加者のメールアドレスから対象リードをリストしオポチュニティーIDを取得する「Get all leads」と、Salesforceの商談に議事録を書き込む「Update an opportunity」の2つのプリビルドスキルを追加します。
- スキルカタログを選択し、Salesforceのタイルをクリック
- 右上の「アプリの接続」をクリック
Salesforce への接続に CustomURL を追加します。
- (当検証ではSandbox環境を利用するため)「test.salesforce.com」を入力し「アプリの接続」をクリック
別ウィンドウに Salesforceログイン画面が表示されます。
- ユーザー名、パスワードを入力しログインをクリック
アクセス許可画面が表示されるので確認します。
- 画面をスクロールし「許可」をクリック
右側に「接続済み」と表示されました。
プリビルドスキルを追加します。
- 「Get all leads」をクリックし「追加」となることを確認
- 同様に「Update an opportunity」をクリックしてスキルを追加
これで Salesforce の商談に議事録を書き込むスキルが整いました。
処理の動きは次のスキルフローで確認します。
3. スキルフローの作成
生成AIスキルと複数のプリビルドスキルを繋げたスキルフローを作成します。(以下の図ピンク色の枠部分)
- メインメニューバーから「スキルスタジオ」をクリック
- 「プロジェクト」を選択し「作成」から「スキル・フロー」をクリック
- 以下の画面にて、鉛筆マークをクリック
- 右側に任意のスキルフロー名を入力し「Save」をクリック
左画面のフローにスキルを追加していきます。
追加したスキルは開始から終了へ順番に実行され、画面の「+」をクリックするとスキルをフローに追加することができます。
はじめに Webex のプリビルドスキルを追加します。
- List all meetingsの「Add Skill +」をクリック
追加が完了すると以下の画面の様になります。
- 同様にWebexのList meeting inviteesスキルを追加
追加が完了すると以下の画面の様になります。
- 議事録生成する生成AIスキル、GmailのSend a emailスキル、SalesforceのGet all leads、Update an opportunityスキルの順に追加
全ての追加が完了すると以下の画面の様になります。
(画面ショットの都合上、Update an opportunityスキルは省略しています。)
次に、スキル実行結果から得られる値を次のスキルの引数として渡す設定をします。
- フロー内のList meeting inviteesをクリック
- 右側に表示された入力時の引数設定画面meetingId欄にて、List all meetingsスキルから得られる値を選択
(当検証ではidを選択しています。)
設定が完了すると以下の画面の様になります。
- Send a email の入力引数を以下の様に設定
※richTextBody.Content は生成AIスキルで生成された議事録がメールドラフト本文に自動的に入力されるように設定します- CC:List all meetingsから”hostEmail”を選択
- To:List meeting inviteesから”email”を選択
- Subject:List all meetingから”title”を選択
- richTextBody.Content:生成AIスキルから”generated_text”を選択
次に、Salesforce の Get all leads に入力引数を設定します。
- Emailの値に、List meeting inviteesから「email」を選択
さらに、Update an opportunityに入力引数を設定します。
- Descriptionに、生成AIスキルから「generated_text」を選択
- Filterable input欄の”Value”の値に、Get all leadsの「ConvertedOpportunityid」を選択
- 設定完了後、画面上部Actionsの「Save as draft」をクリック
- スキル・スタジオの画面に戻り、スキルフロー右側の「このスキルの強化」をクリック
- 「句」タブにてスキルフローを呼び出すフレーズを入力
(当検証では「議事録を送信して」と入力しています。) - 入力後「発行」をクリック
- 状況が公開済みとなっていることを確認
以上でスキルフローの作成は完了です。
スキルフローを実行するためには、スキルからスキルへ引数を設定する必要があります。どのスキルのどの実行結果を引数として設定すればよいか検討が必要ですが、UI から簡単にスキルフローを作成することができました。
4. スキルフローを実行してみる(動画あり)
長くなりましたが、スキルフローを実行します!
チャットから「議事録を送信して」と入力してみます。
処理結果は以下の動画をご覧ください。
※音声・字幕無しの動画となっております。動作に関してご不明点がございましたら、お問い合わせ までご連絡ください。
※画面右下音量調整マーク右横のアイコンをクリックすると動画表示画面を拡大できます
会議メモを議事録にまとめ、メール送信、Salesforce への登録作業がほんの3分程度で完了しました!複数のアプリにログインすることなく watsonx Orchestrate の画面から操作できるため、作業時間の短縮になり業務効率化になるのではないでしょうか。
さいごに
いかがでしたでしょうか。Part2 では、生成AIスキル、プリビルドスキル、スキルフローの作成と実行を行いました。
生成AIを操作するにあたりプロンプトの技術は必要ですが、watsonx Orchestrate ではノーコードで生成AIスキルを作成できるため、開発未経験者の方も手軽に生成AI を活用したスキルを作成することができると思います。また、チャット画面が提供されているのでインターフェースUI を作る必要がなく、チャットから出来上がったスキルを呼び出すことが可能です。
今回利用した Standardプランはスキル・スタジオで生成AIスキルを作成することができるプランです。Essentialプランにはスキル・スタジオでの生成AIスキル作成の機能が含まれていないため、別途API経由で生成AI を呼び出す実装工程が必要になります。
プリビルドスキルについては、意外にも躓いた点はアプリケーションの認証です。
アプリケーションの認証情報は各アプリケーションにより異なりますので、事前に認証情報をご確認いただくことをお勧めします。
今回検証したスキルフローはプリビルドスキルを繋げた構成で、フロー中に分岐は含めていません。実業務では作業の結果によって次の作業が分岐する場合もあると思いますので、Part1 で記載したスキルフローの分岐機能も利用できると思います。
当ブログ(Part1、Part2)では、チャットからスキルを呼び出しましたが、今後は AIアシスタントからのスキルの呼び出しや、複数の AIアシスタントを束ねる AIエージェントについても検証してみたいと思います。
お問い合わせ
この記事に関するご質問は以下の宛先までご連絡ください。
エヌアイシー・パートナーズ株式会社
技術企画本部
E-mail:nicp_support@NIandC.co.jp