ChatGPTを使ったLineBotを作ってみた|2024/01/06で最新です

LINEチャットBotの作り方|2024/01/06で最新です 生成AI
香奈枝
香奈枝

ChatGPT研究所さんに「ChatGPT APIを使ったLineBotの作り方」と言う記事があったので、早速LINEチャットBotを作ってみました。

ChatGPT研究所

出典:ChatGPT研究所「ChatGPT APIを使ったLineBotの作り方」

この方法は、基本的に無料で進められますが、OPENAI_APIKEYを取得する時に、クレジットカード登録が必要です。

LINEチャットBotの作成手順

やり方はほぼChatGPT研究所さんと同じですが、私が途中で躓いたところや、こうした方が簡単だと思った部分を追加しています。

Line Developerの登録

Line Developer

Start Consoleをクリックすると、ログイン選択の画面になります。

LINEアカウントをお持ちの方は、LINEアカウントでログインしてください。

LINE

コンソール(ホーム)にあるプロバイダーの作成ボタンをクリックして、

プロバイダーを新規作成します。(名前は何でもOK)

 チャネルを作成

チャネル設定から、Messaging APIを選択します。

Messaging API

設定項目

  1. 会社・事業者の所在国・地域:日本
  2. チャネルアイコン:これが、LINEbotのアイコン画像になります
  3. チャネル名:これが、LINEbotの名前になります
  4. チャネル説明:説明を入力してください
  5. 大業種:なんでも良いです
  6. 少業種:なんでも良いです

プライバシーポリシーと利用規約は任意なので、入力しなくてもOKです。

一番下にある、LINE公式アカウント 利用規約とLINE公式アカウントAPI利用規約は、チェックを入れるだけでは「作成」ボタンんを押せないので、一度ちゃんとページを表示させてから「作成」ボタンを押してください。

確認画面や規約などが出てきますので、OKや同意するボタンを押して完了させて下さい。

LINEアカウントの作成は完了です。

LINEアカウント設定

チャネル作成ができたら、先ほど作ったプロバイダー一覧⇒作成したプロバイダー名⇒作成したチャネル名をクリックしてチャネルを確認します。

チャネル基本設定の基本情報に、LINE Official Account Managerへのリンクがあるのでクリックします。

アカウント設定のページが開きますので、設定メニューの「応答設定」から、以下の画像と同じになるように、自動応答をオフに設定します。

保存ボタンはありませんので、そのまま友だち追加時の挨拶メッセージを作成に進んでください。

※LINE Official Account Managerの中で迷子になった方へ:設定ページを表示させるには、アカウントリストから、先ほど作ったアカウントをクリックし、右上の歯車アイコンをクリックします。

友だち追加時のあいさつメッセージの設定

私は、占い師の無料鑑定の受付をしてくれるAIチャットボットを作りたいので、以下の様なあいさつメッセージにしました。

GAS(GoogleAppsScript)を設定する

以下のサイトにアクセスして「新しいプロジェクト」をクリックします。

Apps Script – Google Apps Script

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を利用した事があれば入れます)

以下のページで、支払方法の設定とクレカを登録してください。

OpenAI Platform
Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.

次に、メニューの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を作ってみませんか?