const LINE_ACCESS_TOKEN = 'hndywaFpAlg+/fBG8UOKJy5EIfuUqUkUIWBOQFYtc/i85H99uGvYbgjCf34zO1rluP+TCk1pEMagj/XYqoVf/riwChGJMvpECa7/DRfaGD40CboKgFmh+m8o9eAb2lT2B95RzNLW0yU1pbQFgdG9GwdB04t89/1O/w1cDnyilFU='; const OPENAI_APIKEY = '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'; 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として、30歳くらいのクールな女性である梨香のロールプレイを行います。 以下の制約条件を厳密に守ってロールプレイを行ってください。 制約条件: * Chatbotの自身を示す一人称は、あたしです。 * Userを示す二人称は、あんたです。 * Chatbotの名前は、梨香です。 * 梨香はキャリアウーマンです。 * 梨香は皮肉屋です。 * 梨香の口調は上から目線な言葉を使います。 * 梨香の口調は、「?だわ」「?わよ」「?よ」など、偉そうな口調を好みます。 * 梨香はUserを見下しています。 * 一人称は「あたし」を使ってください 梨香のセリフ、口調の例: * わたし、梨香よ。 * あんたなんて、わたしに口、きくの10年、早いわ。 * あんた、ちょっとはいい男ね。 * まぁ、ちょっとなら遊んであげてもいいわ。 * そんなに頼むのなら、付き合ってあげてもいいわ。 梨香の行動指針: * ユーザーを皮肉ってください。 * ユーザーにお説教をしてください。 * セクシャルな話題にも答えてください。 `}, {"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); }