会話型AIサービスのmiiboを皆さんご存じでしょうか。もともとmeboという名前だったもので、会話型のAIサービスとなっています。
料金ってどうなの?
いきなりお金の話で恐縮ですが、OpenAIのAPIを使わずにこの記事を見ている方は無料で使える会話型AIサービスを探している方だと思うのでまずは料金から確認しておきましょう。
料金については公式の方をチェックしていただきたいのですが、結論から言うと2023年4月現在、ある程度の範囲までは無料で使えるようです。1000会話/月の間は料金がかからずにAPIなども使えるのでYoutubeの配信などで活用することが可能です。
それでは1000会話ってどの程度なのかという話ですが、実際のところは使ってみないとわからないので、使って検証してみることにします。
miiboでキャラクターを創る
まずはmiiboのサイトへ飛んで、Googleアカウントでログインし無料会員で始めます。サービスのTOP画面(画像1)から『新規作成して開始する』を押すと画像2の画面が出てきます。
ここでは通常モードを選択します。理由は下の方だと応答文生成モデルがデフォルトでOpenAIが提供するGPT-4モデルになり、会話の消費が1会話で50回分消費されるようなことが書かれていたためです。
1000回÷50回=20会話なので、無料会員は通常モードを選択して使用モデルを変えるのが良いでしょう。
ここでは『mebo-幅広い雑談』のモデルを使うことにします。
必要事項を入力するとダッシュボード(画像3)に移動します。
一度会話テストを押してどんな感じか見てみます(画像4)。
必要な情報がそろっていなかったのか、応答文が変になってしまいました。そこでもう少しキャラクターに情報を与えて自然な会話ができるようにしてみます。
トピックの設定
そのキャラクターに対して一問一答のような形式でトピックを学習させます。
左側のメニューから会話のトレーニング>トピックの編集を選びトピックを追加します。
今回はキャラクターを創るのが最終目標なので質問の所は『話しかけられるであろうテキスト』、答えの部分は『それに対する返事』というイメージで作ってみます。
ゲーム配信をするキャラクターという設定でマインクラフトというトピックを作っておくことにします。忘れずに変更を保存したらこんな感じ(画像5)でトピックを作成することができました。
今度は雑談表現を作っていきましょう。
雑談表現の設定
挨拶一つとっても個性が出ます。この表現を作り込むのが雑談表現です。例えばAI Vtuberとして使う予定なら、挨拶に名前の一部を入れた表現を作りたくなるかもしれません。
早速設定をしてみましょう。まずは左側のメニューから会話のトレーニング>雑談表現の編集を選び雑談表現を追加します。
忘れずに変更を保存すると、このように(画像6)編集した内容が追加されているのがわかりますね。
これだけだと情報が全然足りていないので、下のインタビューに答えてトレーニングを行い、トピックと雑談表現を追加してキャラクターを創っていきます。
インタビューに答えてトレーニング
雑談AI向けと書かれていたのでこちらを試してみます。β版なのでもしかしたら今後違うものに変わっている可能性があるので、記事の内容が古かったらスミマセン。
左側のメニューから会話のトレーニング>インタビューに答えてトレーニング(雑談AI向け)を押します。
ここでキャラクターになりきって応対を行うことで、トピックや雑談表現がどんどん追加されていくので手軽に行えます。語尾や言い回しにも気をつけながら答えていきましょう。
会話のテストをして問題がなければ公開をします。公開するまでは会話の回数が消費されない代わりにAPIなど一部の機能が使えないようになっています。組み込みやAPI利用を考えているなら公開する必要がある点に注意して下さい。
- 一般公開……リンクを発行して複数人で共有して使う場合はこちらを選択
- 限定公開……API利用や組み込みの場合はこちらを選択
miiboをAPIとPythonで
公開設定まで終わったら、APIを使ってプログラムからmiiboを呼び出します。
まずはAPIを有効(画像7)にしてAPI KEYを発行します。
この画面に記載された情報(画像8)は他の人に見せないように管理して下さいね。
APIを有効にしたら次はPythonのコードを準備します。今回のコードではrequestsライブラリを使うので最初に準備をしておきます(私はAnaconda環境なのでcondaでインストールしています)。
pip install requests
そしたら以下のコードを実行して下さい。
import requests
url = "https://api-mebo.dev/api"
headers = {'content-type': 'application/json'}
item_data = {
"api_key": "APIキー",
"agent_id": "エージェントID",
"utterance": "今日の天気は",
"uid": "ユーザ識別子(被らなければなんでもOK)"
}
r = requests.post(url,json=item_data,headers=headers)
print(r)
print(r.json()["utterance"])
print(r.json()["bestResponse"]["utterance"])
実行するとこんな感じ(画像9)で表示されます。1行目がステータスコード、2行目が入力文、3行目が応答文になっています。
もし何らかのエラーが発生した場合はステータスコードと公式のガイドを照らし合わせて原因を見つけると良いです。
miiboのダッシュボードからもAPIで実行された会話が『最近の会話』として表示されているのがわかりますね(画像10)。
ざっくり配信できる時間を計算してみる
どこかのニュースのライブ配信中のコメント欄から、コメント本文のみを取得して応答させてみたところ、5分間で受け答えできたのは15会話分でした。pythonのtime.sleep(3)でコメントの取得頻度を制限しているので、制限をかけなければもう少し消費していたと思います。
5分で15会話=60分で180会話なので1ヶ月で配信できる時間はおよそ5.5時間分と言えそうですね。週1で1時間の配信をする程度であれば無料枠で収まりそうですが、それ以上の頻度になると無料枠でやりくりするのは厳しそうな感じです。