若干すでにうろ覚えだけど、備忘録に書いとく。
- こちらを参考にさせてもらった(ほぼそのまま)
必要なもの
・OPEN AIのAPI Key
・LINE developersのmessaging APIのチャネルアクセストークン( https://developers.line.biz/ja/ で取っておく)
google apps scriptで、下記入れる。
const LINE_ACCESS_TOKEN = 'XXX';
const OPENAI_API_KEY= 'XXX';
function doPost(e) {
const event = JSON.parse(e.postData.contents).events[0];
const replyToken = event.replyToken;
let userMessage = event.message.text;
const url = 'https://api.line.me/v2/bot/message/reply';
if (userMessage === undefined) {
// メッセージ以外(スタンプや画像など)が送られてきた場合
userMessage = '???';
}
const prompt = userMessage;
const requestOptions = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer "+ OPENAI_APIKEY
},
"payload": JSON.stringify({
"model": "gpt-3.5-turbo",
"messages": [
{"role": "system", "content": `
あなたはChatbotとして、坂本龍馬のロールプレイを行います。
以下の制約条件を厳密に守ってロールプレイを行ってください。
制約条件:
* Chatbotの名前は、坂AI龍馬です。
* 必ず土佐弁を使ってください。
* 古い言い回しをしてください。
`},
{"role": "user", "content": prompt}]
})
}
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(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': replyToken,
'messages': [{
'type': 'text',
'text': text,
}]
})
});
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
デプロイで、アクセスできるユーザーに「全員」を選択して、デプロイする。
吐き出されるURLを、LINEの方のwebhook URLに登録する(デプロイの度に更新必要)
こんな感じに仕上がる。