Skip to Content
Technical Articles
Author's profile photo Shunichiro Yamamoto

SAP CoPilotで独自スキルを作ってみた

はじめに

SAP CoPilotで独自スキルを作ってみましたので、詳細な手順をご紹介したいと思います。

ところで、SAP CoPilotとは、SAPによるエンタープライズ向けのデジタルアシスタントです。コンシューマ向けのデジタルアシスタント(Google Assistant、Amazon Alexa、Apple Siriなど)が提供する優れたUXを、エンタープライズの世界に持ち込むことにより、これまでにない柔軟性・拡張性・多様性をもたらすものとして、大いに期待しています。

SAP CoPilotの製品情報については、https://www.sap.com/products/digital-assistant.htmlをご参照ください。

2018年10月に開催されたSAP TechEdに参加し、SAP CoPilotのハンズオンセッションを受講してきました。この記事は、そのセッション内容がベースとなっています。

前提条件

SAP CoPilotを使用するためには、SAP Cloud Platformのサブスクリプションが必要となります。

SAP CoPilotサブスクリプションを有効化し、適切に設定を行うと、SAP Cloud Platform上にあるCoPilot(コアのサービス)と、スキルを作るために必要なSkill Builderというツールが使えるようになります(AWSでのAmazon Lexのようなものです)。今回は、2018年10月時点で最新のものを使用しています。

最初に覚えておきたい3要素

SAP CoPilotスキルを作り始める前に、言葉の整理をしておきましょう。スキルを作る上で、『Skill』『Intent』『Utterance』という3要素がとても重要になります。

要素 意味
Skill Intentをバンドルしたもの。いわゆるスキル。
Intent ユーザーのやりたいこと。意志/意図/目的。
Utterance Intentをトリガーするための合言葉。発言/発声/発話。

表だけだと分かりにくいと思いますので、具体例を挙げてみましょう。「製品管理」というSkill、製品を「登録したい/読込したい/変更したい/照会したい」というIntent、そして一例として照会(Query)したい場合のUtteranceです。

Intentの動詞を眺めると分かるように、ODataオペレーション(Create/Read/Update/Query)と一致しています。このように、ODataオペレーションをベースとしてIntentが構成されているというのが、SAP CoPilotの特徴のひとつです。

 

SAP CoPilotで独自スキルを作ってみた

さて、前置きが長くなりましたが、いよいよ独自スキルを作ってみましょう。ところで、「独自」と明記していることにも意味があります。SAP CoPilotは、SAP標準のデジタルアシスタントなので、わざわざ独自スキルを作成しなくても、膨大な標準スキルを提供してくれるようになります。今回は、ハンズオンそのものが目的だったため、独自スキルを作成しています。

スキル作成編

まず、Skill Builderにログインして、「New Skill」をクリックします。

 

スキル名を入力して、Intentを追加します。

 

ODataサービスのエンドポイントを直接指定するか、「Browse」をクリックします。

 

「Browse」をクリックした場合は、ODataサービスを選択し、「Import Service」をクリックします。

 

選択したODataサービスのオブジェクト(エンティティ)を選択します。

 

オブジェクト(エンティティ)を選択したら、それに対するオペレーションを有効化します。今回は、一覧を取得するQueryオペレーションを選択します。

 

選択したオペレーションに必要なパラメータを選択します。ここまでで、Intentの基本設定は完了です。いったん「Save」をクリックして保存します(保存後、スキル一覧画面に戻ります)。

 

設定に残項目があると、『!』マークがつきます。再びIntentを選択して、内容を確認してみましょう。

 

UI Display(UI表示設定)が未完了なようです。また、Utteranceには黄色い『!』マークがついていますが、これは警告です。

 

UI表示設定のTitleとSubtitleとImageを設定します。これにて設定完了です。

 

続いて、警告が出ていたUtteranceを確認します。ヒントが未設定のため、警告となっているようです。質問の仕方、例えば “Show me products from ABC.” といった「このように聞いて欲しい」というUtteranceをヒントとして追加します。このヒントがあるおかげで、始めてこのスキルを利用する人も、迷わずに利用できるようになります。

 

警告は出ていませんが、Utteranceの下のEntitiesも見てみましょう。ここでは、パラメータ(=ODataサービスのFilter項目)を確認することができます。各項目が必須項目かどうか、値ヘルプを使うかどうかなどを設定可能です。ビジネスドメインの事前定義値ヘルプが充実しているのは、SAPならではの強みですね。さらに、独自の別名(シノニム)を追加することも可能です。

 

必要な設定がすべて完了したら、「Build」をクリックします。ビルドが完了するまで、しばらく待ちます。

以上でSAP CoPilotスキルが作成できました。

 

スキル実行編

さて、いよいよ実際に作ったスキルを実行してみます。ハンズオンでは、SAP CoPilotのスタンドアロン版で動作確認しました。会話の流れは以下の通りです。

  • わたし:Could you show me products of supplier ‘AVANTEL’?
  • SAP CoPilot:Here’s what I found products with supplier AVANTEL.
  • わたし:show me a price of second one
  • SAP CoPilot:The price per unit for the product “ITelO Vault SAT” is 149.00 USD.

最初に「サプライヤーAVANTELの製品を見せて」とお願いすると、「見つかりました」と言って写真付きの製品リストを返してくれました。次に「二番目の値段は?」と聞くと、「ITelO Vault SAPの単価は149ドルです」と答えてくれました。”二番目”という指示に回答できるということは、前後の文脈を理解している、ということですね。

説明を簡単にするため、Queryオペレーションだけをご紹介しましたが、もちろん “I would like to create …” と言えばCreateオペレーションを実行することができます。また、Queryオペレーションもサプライヤー以外の条件も加えた “Show me products that are availability in stock and price over 150 dollars in category of computer components.”(在庫がある150ドル以上のコンピュータ部品を見せて)のような長文も理解できます。

 

SAP CoPilotで独自スキルを作ってみて

実際に、Skill Builderを使って独自スキルを作ってみて感じたことを簡単にまとめます。

あれ? Utteranceをセットしていないですよね?

Amazon Lexにも、Intent(やってほしいこと)とUtterance(Intentをトリガーするための合言葉)がありますが、多くのサンプルUtterancesを登録して、漏れなくIntentがトリガーされるようにするのが、非常に大変でした。

具体的には、”Show me products”, “Let me see …”, “Can I see …” など、意図は同じで言い回しが違うものをいかに網羅するかが勝負でした。Intentがなかなかトリガーされないと、すぐにポンコツBot認定されてしまいますからね。

SAP CoPilotでは、例えば “Show me products” と聞いてください、というヒントUtteranceをひとつ定義しただけです。これ、すごくないですか?

おー!揺れに強いですよね?

SAP CoPilotは、IntentがODataオペレーションという『決め』を作ったことで、人間が入力したUtteranceを人工知能が推察しやすくなっています。要するに、”Show me” でも “Let me see” でも “Can I see” でも、ユーザがやりたいことはQueryオペレーションということです。

それ以外にも、例えば、サプライヤー名をAVANTEL(=存在する)ではなくAVENTAL(=存在しない)と入力すると、「もしかしてAVANTELでしょうか? AVANTELの製品はこちらです」と、やんわりと訂正してくれたり、ちょっとしたスペルミス、冠詞抜け、接続詞揺れなどは、いい感じに吸収してくれます。AIテクノロジーさまさまですね!

 

さいごに

いかがだったでしょうか?

今回は、エンタープライズ向けのデジタルアシスタントとしてのSAP CoPilotをご紹介しました。一日も早くメジャーな存在になることを願ってやみません。大変残念ながら、投稿時点ではSAP CoPilotは日本語に対応していません。Amazon Lexも日本語に対応していないことを考えると、日本語の自然言語処理の難しさがうかがえますね。一刻も早い日本語対応を期待しています!

SAP CoPilotは、Digital Assistant(デジタルアシスタント)ではなくBot Integration Hub(ボット統合ハブ)という画期的な顔も持っているのですが、それはまた別の機会に書きたいと思っています。

Assigned Tags

      3 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Masayuki Sekihara
      Masayuki Sekihara

      素晴らしい内容と考察、ありがとうございます。どんどんブログ投稿お願いします。

      Author's profile photo Masayuki Sekihara
      Masayuki Sekihara

      I got several requests from SAP community members. They would like to read this contents in English. Can you post the blog in English as a separate blog?

       

      Author's profile photo Shunichiro Yamamoto
      Shunichiro Yamamoto
      Blog Post Author

      Thank you for your request, Masa-san. I'm preparing the English version. Please wait a few days for publishing.