CotoGotoが開発した人工知能、NOBYとNOBY APIを経由して会話してみました。
https://www.cotogoto.ai/webapi.do
ソースコードはこんな感じです。
githubはこちら
import urllib.request,urllib.parse import json import os params = { "appkey": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "text": "IPアドレスを調べてみたんだけど、本当はMACアドレスを知りたいんだよねー。", "persona": "0", "study": "1", } p = urllib.parse.urlencode(params) url = "https://www.cotogoto.ai/webapi/noby.json?" + p # print(url) with urllib.request.urlopen(url) as res: html = res.read().decode("utf-8") # print(html) data = json.loads(html) print(data["text"]) print(data["commandId"]) if data["commandId"] == "ipconfig_exe": cmd = "ipconfig /all> C:/Users/hogehoge/Desktop\ipconfig.txt" os.system(cmd)
返ってくるのが↓です。
IPアドレスですか! ipconfig_exe
「IPアドレスですか!」というのが、AIが返してきた言葉です。
「ipconfig_exe」がコマンドIDです。
このようにNOBY APIでは、登録したテキストに応じて、コマンドIDを返してくれます。
これを利用して、何かしらのアクションをプログラム上で起こせるのは魅力的ですね。
ちなみに、登録してあるコマンドは以下の通りです。
コマンドID | コマンド名 | 単語 | 優先度 | 関連番号 |
ipconfig_exe | ipconfig実行 | IPアドレス | 90 | 1 |
ipconfig_exe | ipconfig実行 | 知りたい | 90 | 2 |
コマンドIDとコマンド名を共通にして、関連番号をユニークにすると、AND条件での判定になるようですね。
ただ残念なのが、投げている言葉が「IPアドレスをね。調べてみたんだけど、本当はMACアドレスを知りたいのよ。」なので、IPアドレスを調べるためのコマンドを実行する必要がないにも関わらず、それを判断出来ていない事。
形態素解析と言語認識が搭載されているっぽいので、文脈からの判断までできるのかと期待していたのですが、そう甘くは無さそうですね。
とは言え、インターフェースとしての役割を担う事はできそうなので、割と個人的には期待できるのかなーとも思っています。
ちなみに、実際に実行した画面は↓です。
もう一段階かしこいチャットボットが欲しい!