Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Pandorabotsでルールベースのチャットボット作成

More than 3 years have passed since last update.

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/ にアクセスしてサインアップします。

signup.png

ボットの作成

サインアップが終わり、ログインすると、以下の画面が表示されます。

mybot_new.png

まだボットが作成されていないため、createというリンクをクリックして、最初のボットを作成します。

botcreation.png

ボットの名前と、言語を指定します。ただ、Japaneseを選択しても、分かち書きがされないようですので、あまり意味がないかもしれません。

ボットの設定(デフォルトAIMLファイルの編集)

new.png

作成直後は、このような画面になっています。FilesTrain の順番にタブを使っていきます。まず、Filesタブをクリックします。

editor.png

左側のツリー状メニューのudcというリンクをクリックします。

スクリーンショット 2017-11-12 22.36.01.png

エディタが開きます。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ファイルが既に手元にある場合は、アップロードアイコンをクリックすると、ファイルをアップロードできます。

editor.png

ボットの訓練

Trainタブをクリックします。

train.png

テキストボックスに何か入力して、横のAskボタンをクリックします。

Sarafiの場合、Askボタンをクリックしても反応がない場合があります。その場合は、Chromeなど別のブラウザを使いましょう。

train2.png

画面下部に、発言、マッチしたpattern、ボットの返答が表示されます。その表示の下のテキストボックスは、入力してSay Insteadボタンをクリックすると、ボットの返答が上書きされる、というものです。

uwagaki.png

pand_learnというAIMLファイルが自動で生成され、上書きされた挙動は、そこに記録されます。

AIMLファイルのエクスポート

エディタ画面に表示されているダウンロードアイコンをクリックすると、ZIPがダウンロードされます。

download.png

どのファイルをエディタで開いた状態でダウンロードしても、ZIPには、ボットで使用する全てのAIMLファイルや設定ファイルが含まれます。

AIaaSサービスを使ってみる

Developerプランにサインアップします。

signup.png

登録後にメールが届きます。クレジットカード情報を登録します。承認されたらまたメールが届きます。これで、晴れて利用可能となります。

アプリのプロパティの確認

アプリ一覧に、アプリが1個表示されているはずです。

apps.png

アプリ名のリンクをクリックすると、アプリのプロパティ画面が出てきます。

app.png

これ以上の詳細は画面では表示されませんし、操作もできません。アプリの中にボットを登録し、その中にAIMLファイルで定義したルールを登録するのですが、画面からはボット一覧すら参照できません。

User KeyApplication IDの内容は、どこかに控えておきます。あとで使います。

ボットの作成〜設定

REST APIで実行します。
https://developer.pandorabots.com/docs#activedocs

APP_IDにはApplication IDで控えた内容、USER_KEYUser 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での解釈優先順も記載されています。

makopo
StackOverflowや製品のフォーラム・Issueにはあるけど、日本語での情報が充実していないものを中心に載っけています。興味とお仕事の事情に応じて投稿技術の傾向が変わりますので、フォローされる方はご留意ください。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away