ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

リクルートのTalk APIをubuntuとpythonで使ってみた

リクルートAPIを公開したので使ってみる

今日、こんなハッカソンに参加してきました。(会社以外のエンジニアと交流するのは久々で楽しかったです)

www.xn--78j2ayab5gxloexbxg1q.com

機械学習 × ハッカソンで、機械学習を使ったWebアプリをチームで作るのですが、機械学習を一から構築するのも大変なのでAPI使ったらいいですよーってな感じでリクルートAPIGoogleAPIのURLがサイトに貼っつけてありました。

私のチームではAPIは使用しなかったのですが、せっかくなのでハッカソンが終わった後に使ってみることにしました。

ちょっとだけチャットボットに興味があったので、選んだのはリクルートTalk API

リクルートのサイト。

a3rt.recruit-tech.co.jp

Github

github.com

使い方がなんせ簡単

APIkeyというのをサイトで取得する必要がありますが、それを含めてもとっても簡単でした。

使い方は、Talk APIのあるサーバにPOSTでメッセージ付きのリクエストを送ると、レスポンスにメッセージの返信付きで返ってきます。

curlコマンドで、メソッドはPOST形式、そして、POSTの中身にapikeyと、queryというパラメーター名で送りたいメッセージを送信します。

#リクエスト
curl -X POST https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk -F "apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAA" -F "query=おはよう"

#レスポンス
{"status": 0, "message": "ok", "results": [{"perplexity": 0.07743213382788067, "reply": "\u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059"}]}

!!??。

レスポンスのメッセージの返信はreplyに格納されているはずですが、そこがなぜか文字コード。笑

見た感じASCIIコードですが、いちおうチェック。

#text.txtにレスポンスを出力。
curl -X POST https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk -F "apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAA" -F "query=おはよう" > text.txt

#何のエンコード方式かチェック
file text.txt

チェックした結果、やっぱりASCII。

エラーの9割は文字コードとはよく言ったものです。

replyをUTF-8に変換するのが手っ取り早そう。

レスポンスはjson形式なので、pythonで開いてUTF-8に変換するかってな感じでコードを書きました。

#text.jsonにレスポンスを出力。(json形式)
curl -X POST https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk -F "apikey=AAAAAAAAAAAAAAAAAAAAAAAAAAAA" -F "query=おはよう" > text.json

#text.jsonを開く
import json
f = open("text.json")
data = json.load(f)
f.close()
print(data)

#この時点でprintしてみると...
{'message': 'ok', 'results': [{'reply': 'おはようございます', 'perplexity': 0.07743213382788067}], 'status': 0}

??。

あれ?まだASCIIからUTF-8に変換してないのに、replyが見れる...

きっと、python自体がUTF-8で動くからかな。


ここまでやって、なんかlinuxのコマンドでリクエスト送って、pythonで開くの面倒だなぁ、pythonで全部書いちゃうかとか思っていたら、なんとpythonライブラリで提供されていることが判明したので、そちらも掲載します。

pythontalk APIを使ってみる

pipで入ります。

pip install pya3rt

さっそくコードを書きます。

import pya3rt
apikey = "AAAAAAAAAAAAAAAAAAAAAA"
client = pya3rt.TalkClient(apikey)
print(client.talk("おはよう"))

#{'message': 'ok', 'results': [{'reply': 'おはようございます', 'perplexity': 0.07743213382788067}], 'status': 0}

print(client.talk("ギャンブル大好き"))
#{'message': 'ok', 'results': [{'reply': '良さそうですね', 'perplexity': 2.592985171811111}], 'status': 0}
>>> 

おはようにはおはようございますを。

ギャンブル大好きには良さそうですねを。

ハッカソンで使えばよかったなと思えるほど、使い方は簡単でした。

まとめ

チャット形式ってすごく良いUIだと個人的に思っているので、いずれ自分が作っているwebアプリにもチャット機能を追加したいなぁなんて思っていますが、きっとまだまだ先のことでしょう。

以上終わり!