Google Apps Script 內部檔案分布

  • 我將只會附上 主程式碼(doPost)chatGPT_api() 的部分

主程式原始碼(doPost)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
ChatGPT_ACCESS_TOKEN = // OpenAI 的 API token keys
CHANNEL_ACCESS_TOKEN = // 你的 line bot token

function doPost(e) {
//從接收到的訊息中取出 replyToken 和發送的訊息文字資訊
var msg = JSON.parse(e.postData.contents);
var replyToken = msg.events[0].replyToken;
var type = msg.events[0].type;
var userid = msg.events[0].source.userId;
var groupid = msg.events[0].source.groupId;

// 只接收純文字的訊息
if (type == 'message' && msg.events[0].message.text != null) {
var userMessage = msg.events[0].message.text;
}
else { return 0 }

// 幫使用者輸入的文字後面加入結束字元
send_msg = userMessage + "###"

// 雖然這樣會消耗很多的 token 數,但經過我測試,這樣比起調高 max_tokens 還可以更快的得到 API 的回覆答案
// 重複的向 GPT API 傳送訊息,直到沒有接收到任何東西(這樣即可突破 4000 token 的限制)
do {
response = chatGPT_api(send_msg)
receive_msg = JSON.parse(response.getContentText())["choices"][0]["text"]
send_msg = send_msg + receive_msg
check_end = receive_msg.length == 0
console.log(send_msg)
} while (!check_end)

// 把訊息過篩不需要的換行字元後用LINE傳回給使用者
reply = send_msg.replace(userMessage, "").replace("###", "")
console.log(reply)
while (reply[0] == "\n") { reply = reply.replace("\n", "") }
reply_message(replyToken, [{ 'type': 'text', 'text': reply }])
// reply_message(replyToken, reply_flex(reply)) // 預留使用flex傳送訊息的程式碼
}

chatGPT_api()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 可以自行改動各項參數
function chatGPT_api(message) {
return UrlFetchApp.fetch('https://api.openai.com/v1/engines/text-davinci-003/completions', {
'method': 'post',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + ChatGPT_ACCESS_TOKEN,
},
'payload': JSON.stringify({
temperature: 0.9,
max_tokens: 256,
top_p: 1,
frequency_penalty: 2,
presence_penalty: 0.6,
prompt: message,
stop: ["###"],
}),
})
}

程式碼(網址)


參考資料

全部都是這光頭歪國人他教我的
How to create GPT-3 apps in Google Sheets – Free Tutorial

另外當初在做的時候也有看到其他有趣的創作者,給大家參考


最後

  • 由於 OpenAI 所開放的 API 在三個月內只有100K的令牌(token)可以使用,又加上我自己玩一玩就已經用掉三分之一了,所以我可能會在要到期前再公開 LINE BOT 給大家來玩,或是在程式中設定每個人的使用上限,總之若大家有想要玩的,可以自己 copy 我的 code 來創作喔!~~ (抱歉 我就是窮逼免費仔
  • 另外提醒一下,很多的創作大部分都是要用自己的 API KEY ,所以只能使用三個月,無痛使用的方式才是能終生免費的使用 ChatGPT 喔~

1
2
若以上有任何的錯誤都歡迎留言跟我說
我會非常感謝你的(ノ>ω<)ノ