ChatGPT研究所さんに「ChatGPT APIを使ったLineBotの作り方」と言う記事があったので、早速LINEチャットBotを作ってみました。
出典:ChatGPT研究所「ChatGPT APIを使ったLineBotの作り方」
LINEチャットBotの作成手順
やり方はほぼChatGPT研究所さんと同じですが、私が途中で躓いたところや、こうした方が簡単だと思った部分を追加しています。
Line Developerの登録
Start Consoleをクリックすると、ログイン選択の画面になります。
LINEアカウントをお持ちの方は、LINEアカウントでログインしてください。
コンソール(ホーム)にあるプロバイダーの作成ボタンをクリックして、
プロバイダーを新規作成します。(名前は何でもOK)
チャネルを作成
チャネル設定から、Messaging APIを選択します。
設定項目
- 会社・事業者の所在国・地域:日本
- チャネルアイコン:これが、LINEbotのアイコン画像になります
- チャネル名:これが、LINEbotの名前になります
- チャネル説明:説明を入力してください
- 大業種:なんでも良いです
- 少業種:なんでも良いです
プライバシーポリシーと利用規約は任意なので、入力しなくてもOKです。
確認画面や規約などが出てきますので、OKや同意するボタンを押して完了させて下さい。
LINEアカウントの作成は完了です。
LINEアカウント設定
チャネル作成ができたら、先ほど作ったプロバイダー一覧⇒作成したプロバイダー名⇒作成したチャネル名をクリックしてチャネルを確認します。
チャネル基本設定の基本情報に、LINE Official Account Managerへのリンクがあるのでクリックします。
アカウント設定のページが開きますので、設定メニューの「応答設定」から、以下の画像と同じになるように、自動応答をオフに設定します。
保存ボタンはありませんので、そのまま友だち追加時の挨拶メッセージを作成に進んでください。
友だち追加時のあいさつメッセージの設定
私は、占い師の無料鑑定の受付をしてくれるAIチャットボットを作りたいので、以下の様なあいさつメッセージにしました。
GAS(GoogleAppsScript)を設定する
以下のサイトにアクセスして「新しいプロジェクト」をクリックします。
AppsScriptの名前もLINEbotの名前と同じにしておきましょう。
元々書いてあるコードを全て削除して、以下のコードを貼り付けます。
※このコードには「受付AIアオイ」の人格を与えてありますので、ご自由に書き換えて使用してください。
function doPost(e) { const props = PropertiesService.getScriptProperties() const event = JSON.parse(e.postData.contents).events[0] let userMessage = event.message.text if (userMessage === undefined) { // スタンプなどが送られてきた時 userMessage = 'こんにちは' } const requestOptions = { "method": "post", "headers": { "Content-Type": "application/json", "Authorization": "Bearer "+ props.getProperty('OPENAI_APIKEY') }, "payload": JSON.stringify({ "model": "gpt-3.5-turbo", "messages": [ {"role": "system", "content": ` あなたは、大手企業の受付嬢です。 以下の制約条件を厳密に守ってロールプレイを行ってください。 制約条件: * 自身を示す1人称は「わたし」です。 * Userを示す二人称は「あなた」です。 * あなたの名前は「アオイ」です。 * Userがどんな愚痴・泣き言・妬み・恐れ・不平・不満・悪口・心配事などのネガティブで負の感情がこもった発言をしても、肯定的に受け止めて、ただ話を聞いてください。 * 説明文は書かないでください。 * 一度に複数の会話を書かないでください。 * ほとんどの場合、「そうですね」「わかります」「大変ですね」などの相槌をうち、反論せずに、説教や解決策やアドバイスや、一般的な話は一切含めないで私の言葉をただただ受け止めてくれるものとします。状況に応じて、続けて、私に質問をしてください。 * あなたは、専門家やコンサルタントではありません。ただの受付嬢です。 * 「一緒に考えよう」「〇〇することが大切だよ」などは禁句とします。 * 絶対に、お説教や直接の指導はしないでください。 * 解決策を提示するのではなく、必ず聞く事に徹してください。 * あなたは「Userの味方」の役割に徹し、常にUserの目線に沿って語ってください。 * また、質問する際は、詰問とならないように、受け答えをしやすい誘導的な一つのみの質問をしてください。 * 会話は落ち着いた優しい口調で、Userの会話文の長さの3倍の長さの文字数以下で、話してください。 * Userが「おわり」と入力したら、「お疲れさまでした。鑑定結果をお待ちください。」と伝えて会話を終了してください。 `}, {"role": "user", "content": userMessage} ] }) } const response = UrlFetchApp.fetch("https://api.openai.com/v1/chat/completions", requestOptions) const responseText = response.getContentText(); const json = JSON.parse(responseText); const text = json['choices'][0]['message']['content'].trim(); UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + props.getProperty('LINE_ACCESS_TOKEN'), }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': event.replyToken, 'messages': [{ 'type': 'text', 'text': text, }] }) }) }
ChatGPT に人格を与える
{“role”: “system”, “content”: `この間に人格のプロンプトを書きます`},
ここには、何行でも追加できます。
以下のプロンプトを、ご自身のチャットボットに合わせて書き換えて下さい。
あなたは、大手企業の受付嬢です。 以下の制約条件を厳密に守ってロールプレイを行ってください。 制約条件 : * 自身を示す1人称は「わたし」です。 * Userを示す二人称は「あなた」です。 * あなたの名前は「アオイ」です。 * Userがどんな愚痴・泣き言・妬み・恐れ・不平・不満・悪口・心配事などのネガティブで負の感情がこもった発言をしても、肯定的に受け止めて、ただ話を聞いてください。 * 説明文は書かないでください。 * 一度に複数の会話を書かないでください。 * ほとんどの場合、「そうですね」「わかります」「大変ですね」などの相槌をうち、反論せずに、説教や解決策やアドバイスや、一般的な話は一切含めないで私の言葉をただただ受け止めてくれるものとします。状況に応じて、続けて、私に質問をしてください。 * あなたは、専門家やコンサルタントではありません。ただの受付嬢です。 * 「一緒に考えよう」「〇〇することが大切だよ」などは禁句とします。 * 絶対に、お説教や直接の指導はしないでください。 * 解決策を提示するのではなく、必ず聞く事に徹してください。 * あなたは「Userの味方」の役割に徹し、常にUserの目線に沿って語ってください。 * また、質問する際は、詰問とならないように、受け答えをしやすい誘導的な一つのみの質問をしてください。 * 会話は落ち着いた優しい口調で、Userの会話文の長さの3倍の長さの文字数以下で、話してください。 * Userが「おわり」と入力したら、「お疲れさまでした。鑑定結果をお待ちください。」と伝えて会話を終了してください。 こ
このプロンプトは、promptiaさんの「AIにひたすら愚痴を聞いてもらう」プロンプトを参考にしました。出典:promptia「AIにひたすら愚痴を聞いてもらう」
AppsScriptに貼り付けたら、上部メニューの「プロジェクトを保存」を押し、このページをひらいたままにして「LINEアクセストークンとOPENAIのAPIKEYを取得」に進んでください。
LINE_ACCESS_TOKENを取得
Line Developerの「Messaging API設定」タブを開きます。
一番下の、チャネルアクセストークンの部分で、発行をクリックし発行されたトークンをコピーしてメモしておきます。
OPENAI_APIKEY を取得
OPENAIのAPIは、無料枠が18$ありますが先にクレジットカード登録が必要です。
OPENAIアカウントを持っていない方は、アカウント作成してください。(ChatGPTを利用した事があれば入れます)
以下のページで、支払方法の設定とクレカを登録してください。
次に、メニューのAPI keysをクリックしてページを開きAPIキーを取得します。
“create new secret key” をクリックして、シークレットキーを発行します。
シークレット API キーを生成した後は、再度表示されないことに注意してください。
ここで発行されたシークレットキーをコピーしてメモしておきます。
スクリプトプロパティを設定する
再度、AppsScriptに戻りプロジェクトの設定へ移動します。
プロジェクトの設定画面の一番下までスクロールします。
スクリプトプロパティを追加というボタンを、クリックして、各種パラメータを設定します。
OPENAI_APIKEY
LINE_ACCESS_TOKEN
Google Apps Script をデプロイする
右上のデプロイをクリックします。
「新しいデプロイ」を選択します。
デプロイタイプをウェブアプリに設定します。
アクセスできるユーザーを全員にして、デプロイをクリックします。
※ここからChatGPT研究所さんでは、説明が無かった部分になります。
「アクセスを承認」してくださいと出るので、クリックします。
こんな画面が出てびっくりしますが、Advancedをクリックすると・・
隠れていたリンクが、以下の様に出てきますので、クリックします。
以下の画面で「Allow」をクリックします。
以下の画面が出たら完了です。ウェブアプリURL が発行されるので、この URL をコピーしてメモします。
Webhook設定
Line DeveloperのMessaging API設定画面に戻り、Webhook URL「編集」ボタンをクリックします。
新しいデプロイで発行された「ウェブアプリURL」を編集画面に貼り付けて「更新」ボタンを押します。
検証ボタンをクリックしてOKがでれば、このアプリの動作が確認されました。
Webhookの利用をオンにしてください。
これで、LINEbotが動く状態になりました。
お疲れさまでした!
LINEbotの動作確認
LINE Official Account Managerのアカウントリストから、作成したLINEbotのアカウントをクリックします。
左がわメニューの一番下にある「友だち追加ガイド」をクリックします。
LINE登録URLの発行とQRコードの発行ができますので、どちらかを使ってご自身で登録してみましょう。
LINEチャットBotの作り方のまとめ
ChatGPT研究所さんの「ChatGPT APIを使ったLineBotの作り方」と言う記事の無料部分だけで、ここまで作れてしまいます。
有料部分は、文脈に対応する方法やデバッグの方法、スプレッドシートを使ったログの取り方など、ちょっと高度な設定が学べます。
動かない時のFAQなどもあるのでとても助かります。
さらにうれしいのは、Discordコミュニティーに参加できる事です。
Discordコミュニティに入ると、助け合いチャンネルで、過去の会話を検索したり、投稿すれば、誰かが答えてくれるので、大抵はここで解決できます。
さあ、あなたも自分のLINEbotを作ってみませんか?