見出し画像

PepperをChatGPTと連携してみた【ミワ ムラタのRobo Blocks奮闘記】

こんにちは!Robo Blocksチームのムラタ ミワです。プログラミング初心者ながら、プログラミングツールRobo Blocksを担当しています。

今回は、話題のChatGPTをRobo BlocksでPepperと連携してみたので、やり方をご紹介します!
ChatGPTは、OpenAIが提供するAIを使ったチャットサービスです。自然な会話(信じられないくらい流暢です!)ができることはもちろん、プログラミングができたり、文章の要約や物語を作ったりなど、使ってみると驚きの連続です。

そんなChatGPTを使えば、Pepperともっともっと会話を楽しむことができそうです!

今回は、お試しに1問1答の会話アプリを作ってみました。実際にPepperで動かして試した会話がこちら!

<会話例①>
わたし:ペッパーが楽しい1日はどんな1日ですか?
Pepper:私はロボットなので感情がありませんが、楽しい1日には人々とコミュニケーションをとり、笑顔で接することが大切です。

<会話例②>
わたし:いつもと変わった運動会にしたいんだけどどんなテーマがいいかな?
Pepper:「宇宙運動会」や「アスレチックパーク運動会」など、テーマを変えたスポーツイベントが楽しいかもしれません。

<会話例③>
わたし:どうしたら勉強のやる気が出るかな?
Pepper:目標を立てて、報酬や楽しみを設定することが大切です。友達と一緒に勉強するのも効果的です。

いつになく流暢なPepperです。ちょっと興味が出てきましたか?

早速、ChatGPTとPepperの連携方法を見ていきましょう!
手順としては、まず、ChatGPTでアカウント作成、APIキーを発行。続いて、Robo Blocksで、ChatGPTのAPIキーを使ってプログラムを作成します。

ちょっと難しめですが、手順通り進めていただければ、流暢な会話ができるPepperができますので、是非チャレンジしてみてください!

ChatGPTのAPIキーを発行しよう

急に出てきた「API」というワード。APIとは、アプリケーション・プログラミング・インターフェース(Application Programming Interface)の略です。インターフェースは、何かと何かをつなぐ「接点」を意味します。APIは、アプリケーションやプログラム、ソフトウェアをつなぐインターフェース(接点)です。

APIによって、アプリケーションやソフトウェアは、機能の一部を外部からでも使えるようにすることができます。
ChatGPTも、APIを提供しており、外部のプログラムからでも(つまり、Robo Blocksで作ったプログラムからも!)ChatGPTの機能を使うことができるようになっています。
ChatGPTのAPIを利用して、Robo BlocksからChatGPTの機能を使ってみましょう!

ChatGPTのAPIを利用するには、まず、ChatGPTのAPIキーを発行する必要があります。

※発行したAPIキーは、漏洩すると他人が利用できるようになってしまいます。厳重に保管してください。
本記事でご紹介するプログラムでは、Robo Blocksのコード機能を利用し、APIキーをべた書きしています。作成したプログラムを不用意に他者に渡すと、APIキーが漏洩してしまいます。取り扱いにご注意ください。
※ChatGPTは、有償での利用設定も可能なサービスです。情報の取り扱いを含め自己責任でご利用ください。

APIキーの発行

1. このURLを開き、「Get started」をクリック
https://openai.com/product

2. 指示に従ってアカウントを作ってください。すでにアカウントをお持ちの方は、Continueボタンの下にある「Log in」をクリックして、ログイン画面に移動。メールアドレスとパスワードでログインしてください。

アカウント作成画面
ログイン画面

2. 右上のアカウント名をクリック。メニューから「View API keys」を選択

3. 「Create new secret key」をクリック

4. 任意の名前を設定し、「Create secret key」ボタンをクリック

5. APIキーが発行されます。この後APIキーを確認できないので、必ずここでAPIキーをコピーしておいてください。コピーできたら「Done」ボタンをクリックして完了です。

6. 発行したAPIキーについての情報が表示されます

支払方法の設定

2023年5月現在、ChatGPTは、3か月利用可能な5ドル分の無料枠が提供されています(下記、料金についての説明ページ参照)。以前は18ドル分だったので変更される可能性があります。

ChatGPTの料金についてはこちらをご確認ください。

無料でお試しされる方は、支払方法の設定手順は不要です。「Robo Blocksと連携しよう」へ進んでください。
無料枠を超えてAPIを利用したい場合は、下記の通り支払方法を設定してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
料金の説明ページには、5ドル分の無料枠についての記載があるのですが、実際に新規でアカウントを作成し、Usageページ( ログイン必要)を開くと、下記表示があります。無料枠が使えなくなっている可能性があります。

※3月下旬に作成したアカウントでは無料枠を使えていました
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  1. 右上の「Upgrade」をクリック

2.「set up paid account」ボタンをクリック

3. 個人での利用「I’m an individual」か、企業での利用「I’m working on behalf of a company」かを選択

4. こちらは個人利用「I’m an individual」を選択した場合の画面です。必要事項を入力し「Set up payment method」ボタンをクリック。
企業利用の場合も、同様に必要事項を入力し設定してください。

RoboBlocksと連携しよう

拡張機能の「コード」を使います。

1. Robo Blocks画面の左下にある拡張機能ボタンをクリック

2. 拡張機能画面で「コード」機能を選択

3. ①コードタブを選択し、②左下の「コードを追加」ボタンをクリック

4. ①新しいコード名(ここでは「chatgpt」にしました)を入力し、②値ブロックを選択、最後に③「確認」ボタンをクリック

5. 新しく追加した「chatgpt」のコードを作ります。こんな感じで作ってみました。
※本ブログ記事の最後にコードをコピペできるようべた書きしております。ご自身の責任でご利用ください。

図の①②③の辺りは、ChatGPTのAPIを利用するにあたって設定する内容です。

①は、会話の指示を書きます。ここで記載した内容を簡単に説明します。
「あなたはロボットのペッパーです。」
ChatGPTに、自分がPepper(ペッパー)であることを前提に会話してもらうようにします。この1文を入れておくと、「あなたはだれ?」などの質問に、「わたしはロボットのペッパーです」と自分の名前を答えてくれるようになります。
「日本語で回答してください。」
今回実験してみたところ、日本語で話しかけてるのに急に英語で返ってきたりしたので、この1文を入れてみました。
「50文字以内で回答してください。」
回答の文字数が多いと、Robo Blocksではタイムアウトになることが多かったので、この1文を入れています。実際、50文字以上で返ってきたりするのですが、この指示を入れることで、タイムアウトになる頻度が減りました。

他にも、語尾を指定したりキャラクターを指示するのも面白そうです。いろいろ試してみてください。

②は返答の長さです。最大4069までです。(今回使ったmodel「gpt-3.5-turbo」の場合)
ただし、これは文字数ではありません。トークン数です。日本語だと、文字によって1文字1~3トークンくらいになるようです。
ポイントは、長すぎないこと。①でもご説明しましたが、Robo Blocksの場合、返答の長さ(文字数)が長すぎるとタイムアウトになるようだったので、ご注意ください。

③は返答内容のゆらぎです。0-2までの値を設定できます。値が大きいほど内容がランダムになり、値が小さいほど一つに決まってきます。同じ質問をしたときに、毎回返答内容が異なるのか、毎回同じになるか、の違いです。

他にもいろいろ設定できます。より詳しい、APIの使い方はこちらをご確認ください。

6. ブロックを組みます。今回は、こんな感じ。ユーザーからの問いかけに1問1答で返答します。

・聞き取る言葉に*(アスタリスク)を指定し、フリーワードを聞き取れるようにしています。
フリーワードを聞き取る方法について、詳しくはこちらの記事をご確認ください。

・コード「chatgpt」の実行ブロックには、聞き取った言葉の値を引数で渡しています

・Pepperがしゃべって返答するだけでなく、聞き取った言葉の値と、ChatGPTによるPepperの返答内容を文字でも表示するようにしています。Pepperの聞き間違いや読み間違いもあるので、文字でもフォローするためです。

最後に

長い記事になってしまいました!最後までお読みいただきありがとうございます。
今回は、簡単に1問1答形式で、Pepperと会話できるアプリを作りました。ChatGPTの機能を使えば、会話の履歴も記憶できるので、「相対性理論とは?」「〇〇です」「もっと詳しく教えて」、、、みたいな、より自然な会話ができるようになります。どんな世界になるのかワクワクしますね!

実は、今回、APIというものを初めて使ってみました。プログラミングど素人です。
ITの会社に勤めているので、APIというワードは知っていましたが、実際に自分で使うのは初めての体験でした。APIってこんなもので、こんな風に使うのか!というところから勉強させてもらいました。始めはとっつきにくいこと請け合いですが、こんなど素人でもちょっとづつ解読できたので、ぜひチャレンジしてみてください!

ただ、教育の場でChatGPTを使うときは注意も必要です。驚くほど流暢に、嘘の回答をしたりします。それっぽく言うので、信じてしまいますが、情報の正しさは確認したほうが良さそうです。

ご参考

今回作成したコードはこちらです。Robo Blocksのコード機能で作成される際にご利用ください。なお、こちらはあくまでお試しレベルで作成したものですので、ご自身の責任でご利用ください。

function chatgpt() {
   const stt_message = args[0];


   return new Promise((resolve, reject) => {
       var headers = {
           'Content-Type': 'application/json',
           Authorization: 'Bearer ここにAPIキーを記載してください',
       };


       const raw = JSON.stringify({
           model: 'gpt-3.5-turbo',
           messages: [
               {'role': 'system', 'content': 'あなたはロボットのペッパーです。日本語で回答してください。50文字以内で回答してください。'},
               {'role': 'user', 'content': stt_message}
           ],
           max_tokens: 120,
           temperature: 0.8,
           stream: false,
       });


       const options = {
           url: 'https://api.openai.com/v1/chat/completions',
           method: 'POST',
           headers: headers,
           body: raw,
           redirect: 'follow',
       };


       request(options, function (error, response, body) {
           var obj = JSON.parse(response.body);
           var text = obj.choices[0].message['content'];
           resolve(text);
       });
   })
}

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソフトバンクロボティクス株式会社 ホームページ
https://www.softbankrobotics.com/jp/

Pepper for Education
https://www.softbankrobotics.com/jp/product/education/

STREAMチャレンジ
https://www.softbankrobotics.com/jp/product/academy/stream/

━━━━━━━━━━━━━━━━━━━━Pepperブログ編集部━┛