お米炊くくらい!?
簡単にAIを使ってチャットボットを作ってみよう
Panovatty #2
Yuji Fujikawa
1
日本IBM ソリューションサービス
藤川 雄司
所属:
・Ins&FM事業部
専門:
・Webアプリケーション開発
座右の銘:
・人は生卵、人生は卵料理
Fujikawa Yuji
2
IBM Developer Advocacy 2019
webhook
Watson Assistant
1. Botにメッセージ送信
2. メッセージがNode-REDへ 3. Assistantへ問い合わせ
4. Assistantからの結果
IBM Cloud
Linebotの動き
3
IBM Developer Advocacy 2019
下ごしらえをしておきましょう
 IBM Cloudカタログのソフトウェアから、Node-RED Starterサービスを作成
 料金プランは SDK for Node.js 無料を選択し、任意のアプリ名を入力後、作成
(開始中が、稼働中に変わるのを待ちます。)
4
IBM Developer Advocacy 2019
webhook
Watson Assistant
1. Botにメッセージ送信
2. メッセージがNode-REDへ 3. Assistantへ問い合わせ
4. Assistantからの結果
IBM Cloud
Linebotの動き
5
6
IBM Watsonサービス一覧
Watson Assistant
アプリケーションに自然言語インターフェースを追加して
エンドユーザとのやり取りを自動化
Text to Speech
テキスト文章を音声に変換する
Speech to Text
音声をテキスト文章に変換する
Visual Recognition
画像コンテンツに含まれる意味を検出する
Discovery
先進的な洞察エンジンを利用して、デー
タの隠れた価値を解明し、回答やトレン
ドを発見する
Discovery News
Discovery上に実装され、エンリッチ情報
も付加されたニュースに関する公開デー
タセット
Personality Insights
テキストから筆者の性格を推定する
Language Translator
テキストを他言語へ翻訳を行う
Natural Language Understanding
自然言語処理を通じてキーワード抽出、エン
ティティー抽出、概念タグ付け、関係抽出な
どを行う
Natural Language Classifier
テキスト文章の分類を行う(質問の意図推定など)
Tone Analyzer(日本語未対応)
テキストから筆者の感情、社交性、文体を解析
Knowledge Studio
コーディングなしに、業務知識から生成した
機械学習モデルで、非構造テキストデータか
ら洞察を取得(学習支援ツール)
心理系
言語系
照会応答系
知識探索系
音声系
画像系
7
顧客 チャネル 解決
ダイアログ 検索 エージェント
スキルアシスタント
[ありきたりなチャットボットではありません]
Watson Assistant
7
8
データ・プライバシーを保証すると同時にプロアクティブで
パーソナライズされたサービスを提供することで、企業の
ブランド・ロイヤルティーの向上や顧客体験の変革を支援する
企業向け人工知能 (AI) エージェント
以下の特⾧を持つ AI
エージェントです。
 少ないデータで学習する
 不確かな場合にはあいまいさを除去する
 トピックを変えられる
 代替手段として検索 (Watson Discovery)
または人間のエージェントを利用する
 システムを改善する方法を提案する
 オムニチャネル
 パブリック・クラウドとオンプレミスのいかなるイ
ンフラストラクチャーにもデプロイ
できる
8
コール・センターの運用コストを削減すると同時に顧客体験を
改善し、新たな収益源を開拓
カスタマー・ケア
企業のさまざまなチャネルを通じた共通の質問やタスク (主に
人事関係) へのアクセスを簡素化
従業員の生産性
潜在的な顧客に、商品やサービスを好きなモバイルまたは
メッセージング・チャネルで購入できるガイド付きの買い物
体験を提供
会話型コマース
9
10
• Assistant ツール は仮想エージェントの機能を提供するスキル(Skill)と、スキルをエンドユーザーに公開
するアシスタント(Assistant)を管理するためのGUIツールです。
• ダイアログ・スキルでは「インテント」「エンティティ」「ダイアログ・ノード」を構成します。
• すべての Assistant サービスのユーザーはこの Toolkit を使用することができ、詳細な Assistant API の
呼び出しやコンテンツの構造にとらわれることなく、簡単に会話シナリオの作成をすることができます。
10
© 2018 International Business Machines Corporation
11
Assistantを構成する3つの要素
• インテント(Intents)~ 「動詞」に該当
– Assistant インスタンスが処理すべき、ユーザーが入力したテキストに含まれる「目的」
が Intents(意図)です。Assistant サービスは、意図分類器により入力テキストを分類し、
ユーザーが求めている意図を理解します。
• エンティティ(Entities)~「目的語」に該当
– Assistantインスタンスがユーザーの入力テキストから抽出すべきキーワードのリストが
Entities(エンティティ)です。入力テキストから抽出されたエンティティは、ユーザーの
「目的」の対象物を示したりします。このエンティティ情報を合わせることで、
Assistantサービスはユーザーの要求を完全に理解します。
• ダイアログ・ノード(Dialog)~「処理フロー」に該当
– Dialog(ダイアログ)はユーザー要求(意図とエンティティ)とそれに対する回答の組み合
わせです。1回のやり取りのためのひとつのダイアログ・ノードのであることも、複数の
会話のやり取りのための木構造となったダイアログ・ノードもあります。
– 曖昧なリクエストで不明な情報を補完するために複数の会話のやり取りを使用すること
があります。
11
12
さっそくWatson Assistantを作成しましょう!
① カタログを選択
② AIを選択
③ Watson Assistantを選択
②
①
③
Intents → Entities → Dialog
12
13
① ダラスを選択
② ライトを選択
③ 作成を選択
①
②
③
さっそくWatson Assistantを作成しましょう! Intents → Entities → Dialog
13
14
Watson Assistantの起動ですぐに使えます Intents → Entities → Dialog
14
15
Skill を作ってみましょう
①
① サイトメニューからSkillsを選択
② Create skillを選択
③ Dialog skillを選択してNext
④ Nameを入力
⑤ Languageを”Japanese”に設定
Intents → Entities → Dialog
15
16
Skill を作ってみましょう
②
① サイトメニューからSkillsを選択
② Create skillを選択
③ Dialog skillを選択してNext
④ Nameを入力
⑤ Languageを”Japanese”に設定
Intents → Entities → Dialog
16
17
Skill を作ってみましょう
②
③
① サイトメニューからSkillsを選択
② Create skillを選択
③ Dialog skillを選択してNext
④ Nameを入力
⑤ Languageを”Japanese”に設定
Intents → Entities → Dialog
17
18
Skill を作ってみましょう
① サイトメニューからSkillsを選択
② Create skillを選択
③ Dialog skillを選択してNext
④ Nameを入力
⑤ Languageを”Japanese”に設定④
⑤
Intents → Entities → Dialog
18
19
Skill を作ってみましょう
①
②
Intents → Entities → Dialog
19
My first skill
① サイドメニューからAssistantsを
選択し、My first assistantを選択
② Dialogのオプション選択して
Swap Skill を選択
③ 先ほど作成したSkillを選択
20
Skill を作ってみましょう
① サイドメニューからAssistantsを
選択し、My first assistantを選択
② Dialogのオプション選択して
Swap Skill を選択
③ 先ほど作成したSkillを選択
③
Intents → Entities → Dialog
20
21
Intent (動詞) から作りましょう。
① intentsを選択
② Create intentsを選択①
②
Intents → Entities → Dialog
21
22
*もしこのような画面が出てきたら設定が必要です。
22
23
① ユーザーを選択
② Instance Nameの矢印を選択
③ Revert to standardを選択
①
②
③
*もしこのような画面が出てきたら設定が必要です。
23
24
“食べたい“と言うインテント作ってみましょう
①
②
① intent nameを入力
② Create intentsを選択
③ User experienceに類義語を入力
④ Add exampleを選択
Intents → Entities → Dialog
24
25
“食べたい“と言うインテント作ってみましょう
“食べたい“時のユーザーの質問例を
いくつか登録してください。
③
④
① intent nameを入力
② Create intentsを選択
③ User experienceに類義語を入力
④ Add exampleを選択
Intents → Entities → Dialog
25
26
次に、Entities (目的) を作りましょう。
① Entities の My entitiesを選択
② Create entityを選択
①
②
Intents → Entities → Dialog
26
27
入力例
① Entity nameを入力
② Valueと同意語を入力しAddValue
①
② 米 = ライス、お米、白米
Intents → Entities → Dialog
27
28
最後にDaialog(処理フロー)を作りましょう
① Nodeのメニューから
Add node belowを選択
② Dialog nameを入力
③ If assistant recognizesに
作成した intens を設定
④ responds を Text に設定し、
応答させたい文章を入力
①
Intents → Entities → Dialog
28
29
最後にDaialog(処理フロー)を作りましょう
① Nodeのメニューから
Add node belowを選択
② Dialog nameを入力
③ If assistant recognizesに
作成した intens を設定
④ responds を Text に設定し、
応答させたい文章を入力
②
③
④
Intents → Entities → Dialog
29
30
最後にDaialog(処理フロー)を作りましょう
① Nodeのメニューから
Add node belowを選択
② Dialog nameを入力
③ If assistant recognizesに
作成した intens を設定
④ responds を Text に設定し、
応答させたい文章を入力
Intents → Entities → Dialog
30
31
さあ、今度は大丈夫。 Intents → Entities → Dialog
31
32
認証情報を取りましょう
①
※Lineとの連携でAssistant ID, Api Key
を使います。
① サイドバーからAssistantsを選択
② オプションからSettingを選択
③ Assistant IDと Api Keyをメモする
Intents → Entities → Dialog
32
②
33
認証情報を取りましょう
③
Intents → Entities → Dialog
33
※Lineとの連携でAssistant ID, Api Key
を使います。
① サイドバーからAssistantsを選択
② オプションからSettingを選択
③ Assistant IDと Api Keyをメモする
IBM Developer Advocacy 2019
webhook
Watson Assistant
1. Botにメッセージ送信
2. メッセージがNode-REDへ 3. Assistantへ問い合わせ
4. Assistantからの結果
IBM Cloud
Linebotの動き
34
IBM Developer Advocacy 2019
webhook
Watson Assistant
1. Botにメッセージ送信
2. メッセージがNode-REDへ 3. Assistantへ問い合わせ
4. Assistantからの結果
IBM Cloud
Linebotの動き
35
IBM Developer Advocacy 2019
とは
 個別の処理ごとの箱(Node)を線でつないで組み立てるプログラミングツール
 ブラウザベース UI
 Node.js で動作・軽量
 機能をカプセル化してNodeとして利用 (独自Nodeを作成・追加可能)
 IBM Cloudのサービスが簡単に利用可能
- あらかじめ用意されたNodeを使用することで各種サービスと簡単に連携可能
 IBM Cloud上で簡単に使用可能
36
IBM Developer Advocacy 2019
 簡便化
 効率化
 共通化
LowCode/NoCode
37
IBM Developer Advocacy 2019
フローの作成
API連携
LowCode/NoCode
38
IBM Developer Advocacy 2019
のフロー作成画面
基本的な機能を持った様々なNodeが用意しているため、
ドラッグ&ドロップで簡単に実装可能
39
IBM Developer Advocacy 2019
 アプリが稼働していることを確認後、アプリURLにアクセスを選択
の作成 フローの作成 → API連携
40
IBM Developer Advocacy 2019
でフロー画面を作成する
 最初の画面: Nextを選択
 2ページ目:任意のユーザー名/Passwordを決めて入力し、Nextを選択
 3ページ目:何も選ばずにNextを選択
 4ページ目:Finishを選択
 Node-REDのセットアップが完了した後、Go to your Node-RED flow editor を選択
フローの作成 → API連携
41
IBM Developer Advocacy 2019
のフローを作成する
 一部コーディングが発生するため、以下のリンクからフローのサンプルをダウンロードします。
( https://github.com/junkisagawa/node-red-linebot )
 Jsonファイルの内容をコピー
フローの作成 → API連携
42
IBM Developer Advocacy 2019
のフローを作成する
 ハンバーガーメニュー > 読み込みを選択。
フローの作成 → API連携
43
IBM Developer Advocacy 2019
読み込み後の画面 フローの作成 → API連携
44
IBM Developer Advocacy 2019
Wason Assistant IDの入力
 assistant V2ノードを選択(ダブルクリック)
 プロパティが開くので、UsernameとPasswordにNode-REDのものを
APIKeyとAssistant IDに先程のコピーしたものを入力
フローの作成 → API連携
45
Node-REDのアカウント情報
Assistant情報
IBM Developer Advocacy 2019
Lineからwebhookで送られるURLの確認
 URLのパスは、getMessageノードに指定(今回は「/line_bot」を指定する)
 https://panovatty2.us-south.cf.appdomain.cloud/red/#flow/1cf014f5.352bfb
現在開いているページの、/red/~より前のURL + /line_botがリクエストを受け付けるURLになります。
※上記の例だと、https://panovatty2.us-south.cf.appdomain.cloud/line_bot
フローの作成 → API連携
46
IBM Developer Advocacy 2019
webhook
Watson Assistant
1. Botにメッセージ送信
2. メッセージがNode-REDへ 3. Assistantへ問い合わせ
4. Assistantからの結果
IBM Cloud
Linebotの動き
47
IBM Developer Advocacy 2019
webhook
Watson Assistant
1. Botにメッセージ送信
2. メッセージがNode-REDへ 3. Assistantへ問い合わせ
4. Assistantからの結果
IBM Cloud
Linebotの動き
48
IBM Developer Advocacy 2019
Line Developers への登録
 https://developers.line.biz/ja/ にアクセス
 ご自身のLine アカウントでログイン(QRでログインが早くておススメ)
 Providerの「Create」ボタンをクリックし、任意のProvider名を入力後「Create」
アカウント作成 → API作成
49
IBM Developer Advocacy 2019
Line Developers Messaging APIの作成
 Provider内に、Botとして使用するChannelを作成。Lineでは以下3種類のチャンネルが用意されていますが、
今回は「Create a Messaging API channel」を選択。
 Create Channelページに遷移するので、必須項目を入力
 同意項目にチェックをいれ、Createを選択
1. Line login channel:
ログイン認証を自分のアプリに組み込む
2. Messaging API channel:
チャットBot用のAPIを作成
3. Clova Skill channel:
Clovaのスキルを作成
アカウント作成 → API作成
50
IBM Developer Advocacy 2019
Line Developers Messaging APIの作成
 メニュータブから、Messaging APIを選択
 スクロールしていき、Webhook settingの項目にあるEditを選択
 先程コピーした、 の /line_bot URLを入力し、Update を選択
アカウント作成 → API作成
51
IBM Developer Advocacy 2019
Line Developers Messaging APIの作成
 LINE Official Account features(画面下部)内にある、Auto-Reply messagesのEditを選択
 遷移ページ(別タブで開く)の詳細設定内で、応答メッセージを“オフ”、webhookを”オン”に変更
 channelページに戻り、一番下のChannel access token内にあるIssueを選択
 アクセスキーが表示されるので、コピーします(Node-REDに追加します)
アカウント作成 → API作成
52
IBM Developer Advocacy 2019
画面に戻ります。
 get-assistant-msgノードを選択(ダブルクリック)
 プロパティが表示されるので、1行目の”Lineのキー”をコピーしたアクセスキーに変更
 完了を選択
アカウント作成 → API作成
53
IBM Developer Advocacy 2019
Flowのデプロイ(公開)
 以上で、 / Watson Assistant / Line Messaging APIの準備は完了です。
 のエディター内で、Deployボタンをクリックします。
 Line Developerに戻り、QRコードを読み取り作成したBotを友だち登録しましょう!
アカウント作成 → API作成
54
IBM Developer Advocacy 2019
webhook
Watson Assistant
1. Botにメッセージ送信
2. メッセージがNode-REDへ 3. Assistantへ問い合わせ
4. Assistantからの結果
IBM Cloud
Linebotの動き
55

Panovatty2