見出し画像

ChatGPTをLINEで使えるようにしてみた。

はじめに

こんな感じでLINEを使ってChatGPTと会話できるようにしてみました。

ChatGPT LINE アカウント

上記のURLから友だち追加して利用可能です。

注意点

ChatGPTと連続して会話をできるようにするために、ChatGPTとのやり取りの履歴を保持しております。利用する際は個人情報などを送信しないようにお気をつけください。

ChatGPTとは何か

ChatGPTとは、OpenAIという会社が作成した、まるで人間とやりとりしているかのような会話を実現する人工知能です。

ChatGPTのAPIが公開

3月2日にChatGPTのAPIが公開されました。これにより、ChatGPTを使ったアプリやサービスを作りやすくなりました。
例えば、LINEやTwitterでChatGPTを使った対話システムを作成可能になるということです。

ChatGPTをLINEで使えるようにする方法

上記を参考に、ChatGPTとLINEで会話できるようにしました。
3月5日現在、上記の記事の有料部分で文脈理解のソースコードが公開されているようなのですが、3月4日の時点では連続した会話まではできなかったため、その部分を自分で実装してみました。

文脈理解の実装

スプレッドシートに現在の会話を出力し、chatGPTのAPIを叩く際に最新の会話の履歴を渡すようにするという、簡易的な実装をしました。

スプレッドシートに現在の会話を出力するコード

function saveConversation(userId, userMessage, chatGptMessage) {
  const lastRow = historySheet.getLastRow();
  // 現在日時を取得
  const now = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss");

  // スプレッドシートに最新の会話を出力
  historySheet.getRange(lastRow + 1, 1).setValue(userId);
  historySheet.getRange(lastRow + 1, 2).setValue(userMessage);
  historySheet.getRange(lastRow + 1, 3).setValue(chatGptMessage);
  historySheet.getRange(lastRow + 1, 4).setValue(now);
}

スプレッドシートから最新の会話の履歴を取得するコード

function createChatGPTRequestMessage(userId, userMessage) {
  // スプレッドシートから会話の履歴を全件取得
  const data = historySheet.getDataRange().getValues();
  // userIdでフィルタリング
  const userRows = data.filter(row => row[0] === userId);
  // 最新の会話を取得
  const latestRows = userRows.slice(-HISTORY_NUM);

  let messages = [];

  // AIの性格を指定する文を入れる
  messages.unshift({ "role": "system", "content": SYSTEM_TEXT });

  // 最新の会話を入れる
  latestRows.forEach(function (row) {
    messages.push({ "role": "user", "content": row[1] });
    messages.push({ "role": "assistant", "content": row[2] });
  });

  // 現在のメッセージを入れる
  messages.push({ "role": "user", "content": userMessage });

  return messages;
}

スプレッドシートには以下のように会話の履歴が追記されます。

ソースコード

後日追加で実装したソースコードを、以下のGithubで公開しております。


DALL·E 2

LINE botのアイコンを作るために、これまたOpenAIが作った画像生成AIツールの『DALL·E 2』を初めて使ってみましたが、すごすぎますね…。


今後の展望

ChatGPTをLINEで使えるようにすることで、ナチュラルなコミュニケーションやコスト削減などの効果があり、迅速な問い合わせ対応、顧客関係の改善にもつながるでしょう。

最後に

この記事の構成、内容の大半はChatGPTによって作成されました。


この記事が気に入ったらサポートをしてみませんか?