チャットGPTをLINEで使えるようにする
賢すぎるチャット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を使いこなす能力があれば、十分コードが書けてしまいますね。ググる感覚で気軽に使えるのも凄い良いです。