Slide 38
Slide 38 text
YOSHIDUMI Information, Inc.
コピペ用
const OPEN_AI_KEY = 'ここにキーをいれてねー';
function testGetChatGPTAnswer(){
const prompt = 'プログラムの楽しさを約50文字程度で教えてください';
const answer = getChatGPTAnswer(prompt);
Logger.log(answer);
}
function getChatGPTAnswer(prompt) {
Logger.log(prompt);
prompt = prompt.substring(0, 1000); // 不測の事態に備えて、1000文字以降は切り捨てる。また、繰り返し呼びされた場合のケアは別途必要。
// OpenAI APIキーを設定。https://platform.openai.com/account/api-keys にて取得。
// アカウント登録後、約3ヶ月間5ドル分の無料枠有り。大体250万トークン程度まで利用可能。(2023年06月10日現在) (デモなので別定数を代入)
const API_KEY = OPEN_AI_KEY;
// リクエスト内容
const request = {
method: "POST",
muteHttpExceptions : true,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + API_KEY,
},
payload: JSON.stringify({
'model': 'gpt-3.5-turbo', // モデルの指定。GPT-4などは全然コストが違うので要注意。
'temperature': 1.0, // ざっくり独自性みたいなもので、0~2の範囲で指定可能。2とかになると独自すぎて文章が壊れる。1.0が無難。
'max_tokens': 1000, // 出力されるトークン上限。料金の対象は入力メッセージも対象なので注意。
'messages': [{'role':'user', 'content': prompt}] // 入力情報。複数の値を入れるとChatGPTみたいに文脈として参考にされるが、その分のコストも当然かかる。
}),
};
// OpenAI API にリクエストを送信し、返答を得る。(サンプルなので、例外等は非考慮)
const response = UrlFetchApp.fetch('https://api.openai.com/v1/chat/completions', request);
const jsonObject = JSON.parse(response.getContentText());
const resultContent = jsonObject.choices[0].message.content;
Logger.log(resultContent);
return resultContent;
}