Python

誰でも簡単に、無料で日本語対応のチャットボットをつくる方法【Python×TalkAPI】

みなさん、「Siri」ってご存じですか?
iPhoneに搭載された高度な対話型のAIです。

この数年は、コンピュータの性能の向上によって、AIブームが再燃していますね。
普段使っている様々なサービスやプログラムにも、AIを活用した機能を目にすることが増えました。

例えば、「Siri」のような対話型のAIもその一つです。
チャットボットと呼ばれたりもします。
実際には人間はいないのに、まるで人間と対話しているような体験ができるチャットボットは非常に興味深いです。

さて、最近流行しているチャットボットですが、実は個人でも簡単に作成することができるんです!
今回はリクルートの提供している「TalkAPI」というサービスを利用して、無料で簡単にチャットボットを作成する方法について紹介します。

もくじ

  1. 無料でチャットボットを作成できるサービス
  2. TalkAPIとは
  3. TalkAPIを登録する
  4. APIの機能を使ってみる
  5. まとめ

無料でチャットボットを作成できるサービス

チャットボットを作成する方法にはいくつか種類があります。

例えば、大きく以下の2種類の方法があります。

 ・OSSなどを利用しつつ、自分で機械学習モデルを作成して、対話が可能なAIを作る
 ・企業が公開しているAIサービスのAPIを使う

その中で最も簡単な方法は、「企業が公開しているAIサービスのAPIを使う」ことです。

いくつかの企業や団体が、自社の技術力のアピールやビジネスのために、対話可能なAIのサービスを提供しています。
それらのAPIを利用することで、自分のプログラムやアプリケーションにチャットボットを組み込むことが可能になるのです。

ただし、上記の手法には以下のデメリットがあります。

 ・海外の企業のサービスだと、日本語に対応していない場合がある
 ・ビジネスとして提供しているものが多く、無料で使えない場合が多い
 ・登録が面倒

なんだか大変そうですね。
でもご安心ください!
今回ご紹介する「TalkAPI」は、上のデメリットをすべてクリアしています!

TalkAPIとは

さて、「TalkAPI」とは何かについて簡単に紹介しておきます。

「TalkAPI」とは、リクルートが提供しているチャットボットを作成するためのAPIです。
Recurrent Neural Network(LSTM)を用いた、入力文からの応答文生成による日常会話応答機能を提供しているらしいです。

Recurrent Neural Networkが何かは正直まだよくわかっていませんが、再帰的構造を持つニューラルネットワークと呼ばれ、自然言語処理の分野で注目されているニューラルネットワークのモデルだそうです。
残念ながら今回は、僕の知識不足のために十分な説明ができないので割愛します。

とにかく、この「TalkAPI」を使うと、高度なAIを利用した日常会話のできるチャットボットを簡単に使用できるというわけなのです!

登録は非常に簡単で、しかも無料で利用できます。
また、開発元がリクルートなので、当然日本語にも完全対応しています。

そんなわけで、ここからは「TalkAPI」の使い方について紹介していきますね!

TalkAPIを登録する

まずはこちらから登録してAPIKeyを入手してください。

登録は非常に簡単で、必要なものはメールアドレスだけです。
登録フォームにメールアドレスを入力して送信すると、そのアドレスあてにAPIKeyが送られてきます。

最近はメールアドレスだけでなく、名前や住所、電話番号まで要求してくるサービスが多いので、メアド1つで簡単に登録できるのは嬉しいですね。

APIの機能を使ってみる

とりあえず先にコードを貼っておきます。

処理は非常に簡単なので、順を追って見ていきましょう。

import requests    #1

def talk_api(message):
    apikey = "<ここに入手したAPIKeyを入力>"
    talk_url = "https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk"    #4

    payload = {"apikey": apikey, "query": message}    #5
    response = requests.post(talk_url, data=payload)

    try:
        return response.json()["results"][0]["reply"]    #6
    except:
        return "ごめん!もう一回言って!"

 def main():
     while(True):
         print("あなた:", end="")    #2
         message = input()

         print("BOT:" + talk_api(message))    #3  #7

if __name__ == "__main__":
     main()

#1:
今回使用するモジュールをインポートしています。
今回は、POSTリクエストを送信するためにrequestsというモジュールを使用します。

以下のコマンドでパッケージをインストールしておいてください。

pip install requests

#2:
ユーザからの入力をinput関数で受け取ります。
ユーザからの標準入力があるまで待機しています。

#3:
ユーザの入力をmessageという変数に格納したので、それを引数にしてtalk_api関数を呼び出しています。
talk_api関数は、TalkAPIに任意の文字列を渡して、応答文を取得するための関数です。

#4:
apikeyには、登録時に取得した文字列を、talk_urlには、APIの受付URLを入力します。
Githubなどに上げる際には、ソースコードにAPIKeyをべた書きするのではなく、設定ファイルを分けたり、環境変数を利用したりするようにしましょう。

#5:
APIに送信するPOSTリクエストの中身を設定します。
TalkAPIはシンプルなので、必要な情報は、APIKeyと受け取ったテキストだけです。

今回は、inputで受け取ったテキストをqueryに格納しています。

#6:
APIのレスポンスはJSON形式で返ってきます。
今回欲しいのは、応答分のみなので、レスポンスのJSONの中から、message部分だけ取り出します。

なお、エラーなどで応答分が生成されなかった場合は、JSONの中にそもそも["reply"] の要素が存在しないので、例外処理を追加しています。

#7:
おめでとうございます!
無事にコンソールに応答文が表示されました!!

まとめ

今回は日本語対応で完全無料な対話AIであるTalkAPIを使ってみました。
あまり頭は良くない印象ですが、対話のできるAIが一般ユーザでも簡単に使える時代になったのは素直に驚きです。

そのうち本当に、人間と会話しているのと区別がつかないような高度なAIが登場しそうですね!

COMMENT

メールアドレスが公開されることはありません。