Skip to content

Instantly share code, notes, and snippets.

@kmizu
Created March 3, 2023 09:25
Show Gist options
  • Save kmizu/1933dc17c66d9d41f8f1ef3984da0d3e to your computer and use it in GitHub Desktop.
Save kmizu/1933dc17c66d9d41f8f1ef3984da0d3e to your computer and use it in GitHub Desktop.
Google Apps Script to use ChatGPT API
function doPost(e) {
// slack appsのEvent Subscriptionsのchallenge。同期する時に利用。
var params = JSON.parse(e.postData.getDataAsString());
if('challenge' in params)
{
return ContentService.createTextOutput(params.challenge);
}
// ユーザ名とtextを取得
var userName = params.event.user;
var textSlack = params.event.text.substr(0, params.event.text.length);
// chatGPTに問い合わせ
var resultStr = getChatGptMessage(textSlack);
 var contents = `<@${userName}> ${resultStr}`;
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : JSON.stringify(
{
"text" : contents,
link_names: 1
}
)
};
// slack連携
UrlFetchApp.fetch(YOUR_SLACK_WEBHOOK_URL, options);
}
// ChatGPTのAPIを呼び出し応答を取得する
function getChatGptMessage(message) {
var uri = 'https://api.openai.com/v1/chat/completions';
var headers = {
'Authorization': `Bearer ${ScriptProperties.getProperty("OPENAI_API_KEY")}`,
'Content-type': 'application/json',
'X-Slack-No-Retry': 1
};
var options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
model: "gpt-3.5-turbo",
messages: [
{role: "user", content: message}
]
})
};
console.log(options)
try {
const response = UrlFetchApp.fetch(uri, options);
var json = JSON.parse(response.getContentText());
let generatedText = json["choices"][0]['message']['content'];
console.log(generatedText);
return generatedText;
} catch(e) {
console.log('error');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment