チャットGPTをLINEで使えるようにする

2022年12月19日

賢すぎるチャットbotとして、チャットGPTが話題になっています。気軽に触れるようにLINEで実装する方法をご紹介します。
LINEで相談できればいつでも何でもチャットbotに相談できますね。自身はLINEに実装してググる感覚で気軽に使っています。
久々にLINEのアクセストークンを取得しようとしたら、ページ遷移が変わっていましたので、最新のLINEのページでのアクセストークン取得方法もご紹介します。

内容

・LINE Bussinessのアクセストークン、シークレットトークンの取得方法
・OpenAIのAPIキーの取得方法
・Google Apps Script(GAS)のスクリプト

LINE Bussinessのアクセストークン、シークレットトークンの取得方法

LIne Bussinessに登録してログインします。

作成をクリックして、新しいBOTを作成します。
同意して、アカウントを作成し、プロバイダを作成します。

チャットをクリックします。Webhookの設定を行います。

チャットタブをクリックして、「Messaging APIの設定画面を開く」をクリックします。

Webhook URLには、後でGASでスクリプトを作成してDeployしたサーバのURLを記載します。
このLINEアカウントがメッセージを受信したときに、このサーバのURLに受信したメッセージをdoPost関数に送ることできます。

Line Developpersのリンクをクリックします。

コンソールをクリックして、作成したプロバイダを選択し、Messaging API設定タブをクリックします。

チャンネルアクセストークンを発行します。
このアクセストークンはスクリプトで使いますので控えておきましょう。
これは、サーバ側からLINEにメッセージをreply(返信)するときに使います。
また、応答設定ではチャットをオフにし、Webhookをオンにしておきましょう。

OpenAIのAPIキーの取得方法

OpenAIのAPIキーを取得して、サーバ側のスクリプト作成の準備をしましょう。

以下でSign upしてログインします。Google Accountでも登録できます。

ログインして、Create New Seacret Keyをクリックし、API用のキーを取得します。
これでスクリプト作成の準備完了です。

Google Apps Script(GAS)のスクリプト

Google Apps Scriptで、サーバレス環境にてサーバを準備します。
以下のURLにてプロジェクトを作成してスクリプトを作成します。

スクリプトの中の[自身のOpenAIのAPIキー]と[自身のLineチャネルアクセストークン]には、ここまでで控えた文字列を記載しましょう。

// ChatGPTのAPIを呼び出し応答をリターン
function getChatGptMessage(message) {
  var uri = 'https://api.openai.com/v1/completions';

  var headers = {
    'Authorization': 'Bearer [自身のOpenAIのAPIキー]',
    'Content-type': 'application/json'
  };

  var options = {
    'muteHttpExceptions' : true,
    'headers': headers, 
    'method': 'POST',
    'payload': JSON.stringify({
      "model": "text-davinci-003",
      "max_tokens" : 2048,
      "prompt": message})
  };
  try {
      const response = UrlFetchApp.fetch(uri, options);
      var json=JSON.parse(response.getContentText());
      return json["choices"][0]["text"];
  } catch(e) {
    console.log('error');
  }
}
//メッセージを受け取ったときにeオブジェクトを取得
function doPost(e) {
  let token = "[自身のLineチャネルアクセストークン]";
  // JSONデータとして取得
  let eventData = JSON.parse(e.postData.contents).events[0];
  // JSONデータからreply用のトークンを取得
  let replyToken = eventData.replyToken;
  // JSONデータからメッセージを取得
  let userMessage = eventData.message.text;
  // 応答メッセージ用のAPI URLを定義
  let url = 'https://api.line.me/v2/bot/message/reply';
  // JSONメッセージからreplyメッセージを準備
  let replyMessage = userMessage;

  //定義したチャットGPTが返答したメッセージをtextをもつペイロード値を設定
  let payload = {
    'replyToken': replyToken,
    'messages': [{
        'type': 'text',
        'text': getChatGptMessage(replyMessage)
      }]
  };
  //HTTPSのPOSTパラメータを設定
  let options = {
    'payload' : JSON.stringify(payload),
    'myamethod'  : 'POST',
    'headers' : {"Authorization" : "Bearer " + token},
    'contentType' : 'application/json'
  };
  //LINE Messaging APIにリクエストして返答
  UrlFetchApp.fetch(url, options);
}

スクリプトを作成しましたら、New Deployをクリックして、歯車をクリックしてWeb appを選択しましょう。Who hasではanyoneを選択して、Deployをクリックします。Authorized accessでログインして承認します。

DeployをクリックするとWeb URLができますのでコピーします。

LINEのWebhook URLに貼り付けて、保存して完了です。

これで自由にLINEで、チャットGPTを使うことができます。

終わりに

チャットGPTを気軽にLINEで触れるようにする方法をご紹介しました。
これでいつでもchatBotに相談できますね。スマフォでもAIを使いこなす能力があれば、十分コードが書けてしまいますね。ググる感覚で気軽に使えるのも凄い良いです。

AI