Pandorabots の概要
Pandorabotsとは、A.L.I.C.E.という一時期最強を誇ったチャットボットの作者であるRichard Wallace氏が設立に関わった、元祖?チャットボットのホスティングサービスです。
基本的に、RESTコマンドで、ボットの作成から対話までほぼ全て行います。ただ、Playgroundという、無料でAIMLファイルをアップロードして、対話をテストできるWeb環境が用意されています。Playgroundには、REST APIは一切用意されていませんし、ボットサービスへ設定を連携する手段はありません。本格的に運用する際には、PlaygroundからAIMLファイルをダウンロードしてから、有料サービスのAIaaS(chatbot.io)にて、REST経由でボット作成、設定、AIMLファイル等のアップロード、対話という一連の操作を行います。本番運用ではPandorabotsのAIaaSを使わず、AIMLファイル単体での動作を確認するためにPlaygroundだけ使うという手もあります。
AIaaS(chatbot.io)は、2017年末時点で、Developerプラン(ボット10個、10,000コール、ボットの規模に制限は無し)で月額9ドルです。10日間無料で利用できますが、無料期間であっても、クレジットカードを登録(して中の人が承認)しないとボットを作成できません。
本記事では、前半でPlaygroundを使って簡単なAIMLファイルの対話を確認し、後半でAIaaSサービスに登録してREST経由でボットを作成し、対話してみます。
Playground を使ってみる
https://playground.pandorabots.com/ にアクセスしてサインアップします。
ボットの作成
サインアップが終わり、ログインすると、以下の画面が表示されます。
まだボットが作成されていないため、create
というリンクをクリックして、最初のボットを作成します。
ボットの名前と、言語を指定します。ただ、Japaneseを選択しても、分かち書きがされないようですので、あまり意味がないかもしれません。
ボットの設定(デフォルトAIMLファイルの編集)
作成直後は、このような画面になっています。Files 、Train の順番にタブを使っていきます。まず、Files
タブをクリックします。
左側のツリー状メニューのudc
というリンクをクリックします。
エディタが開きます。AIML入門記事を参考に、AIMLを記述します。
よくわからなければ、とりあえずこんな感じで編集して、保存アイコンをクリックします。
<?xml version="1.0" encoding="UTF-8"?>
<aiml>
<category>
<pattern>こんにちは</pattern>
<template>ども</template>
</category>
<category>
<pattern>*</pattern>
<template>よくわかりません</template>
</category>
</aiml>
Your changes have successfully been saved to udc.aiml
という緑のメッセージが画面上部に出てこれば、保存に成功しています。
ボットの設定(AIMLファイルのアップロード)
AIMLファイルが既に手元にある場合は、アップロードアイコンをクリックすると、ファイルをアップロードできます。
ボットの訓練
Train
タブをクリックします。
テキストボックスに何か入力して、横のAsk
ボタンをクリックします。
Sarafiの場合、
Ask
ボタンをクリックしても反応がない場合があります。その場合は、Chromeなど別のブラウザを使いましょう。
画面下部に、発言、マッチしたpattern、ボットの返答が表示されます。その表示の下のテキストボックスは、入力してSay Instead
ボタンをクリックすると、ボットの返答が上書きされる、というものです。
pand_learn
というAIMLファイルが自動で生成され、上書きされた挙動は、そこに記録されます。
AIMLファイルのエクスポート
エディタ画面に表示されているダウンロードアイコンをクリックすると、ZIPがダウンロードされます。
どのファイルをエディタで開いた状態でダウンロードしても、ZIPには、ボットで使用する全てのAIMLファイルや設定ファイルが含まれます。
AIaaSサービスを使ってみる
Developerプランにサインアップします。
登録後にメールが届きます。クレジットカード情報を登録します。承認されたらまたメールが届きます。これで、晴れて利用可能となります。
アプリのプロパティの確認
アプリ一覧に、アプリが1個表示されているはずです。
アプリ名のリンクをクリックすると、アプリのプロパティ画面が出てきます。
これ以上の詳細は画面では表示されませんし、操作もできません。アプリの中にボットを登録し、その中にAIMLファイルで定義したルールを登録するのですが、画面からはボット一覧すら参照できません。
User Key
とApplication ID
の内容は、どこかに控えておきます。あとで使います。
ボットの作成〜設定
REST APIで実行します。
https://developer.pandorabots.com/docs#activedocs
APP_ID
にはApplication ID
で控えた内容、USER_KEY
はUser Key
で控えた内容、BOTNAME
には、ボットの名前としたい任意の文字列、INPUT
はボットに話しかける内容に置き換えてください。
- ボットの作成
curl -v -X PUT 'https://aiaas.pandorabots.com/bot/APP_ID/BOTNAME?user_key=USER_KEY'
- AIMLファイルのアップロード
curl -v -X PUT 'https://aiaas.pandorabots.com/bot/APP_ID/BOTNAME/file/udc.aiml?user_key=USER_KEY' --data-binary @/ダウンロードしたZIPを展開した場所/udc.aiml
- コンパイル
curl -v -X GET 'https://aiaas.pandorabots.com/bot/APP_ID/BOTNAME/verify?user_key=USER_KEY'
- 対話
curl -v -X POST 'https://aiaas.pandorabots.com/talk/APP_ID/BOTNAME?user_key=USER_KEY&input=INPUT'
うまくいけば、このようにボットから返事が返ってきます。
{ "status": "ok", "responses": ["Hi there!"], "sessionid": 23253265 }
A.L.I.C.E. AIML Set の全てのAIMLを含んだalice
というボットを作成するサンプルシェルを作成しましたので、RESTリクエストの書き方のご参考になれば。
AIaaSサービスから退会する場合は、「Messages」のところから運営宛にメッセージを書いて送ります。タイトルに「Subscription Cancellation Request」、本文に「I want to finish my subscription. Thank you.」とでも書いておけば良いでしょう。運営が確認次第、即日登録解除されるようです。
参考サイト
公式チュートリアル
https://playground.pandorabots.com/en/tutorial/
AIML2.0の仕様や、Pandorabotでの解釈優先順も記載されています。