📗
【GAS】スプレッドシート上で「GPT」を使ってみる。
この記事では、スプレッドシート上でGPT(OpenAI)を使ってテキスト生成をする「カスタム関数」 を作ります。
今回作るもの
こんな感じで使えるカスタム関数を作ります。
準備:用意するもの
- Open AIのアカウント
- Open AIのAPIキー(APIキーを発行する)
手順
- Google App Scriptを作成する
- APIキーを設定する
-
コード.gs
にコードを記載する - スプレッドシートから関数を使う
1)Google App Scriptを作成する
まず「拡張機能」にある「App Script」をクリックして、App Scriptを作成します。
2)APIキーを設定する
左のメニューバーから「プロジェクトの設定」を選択します。下の方にある「スクリプト プロパティ」にAPIキーを設定します。
コード.gs
にコードを記載する
3)コード.gs
に下記コードを貼り付けて保存します。
/**
* OpenAI APIを使用してチャット応答を生成します。
*
* @param {string} userPrompt ユーザーからの入力テキスト
* @param {string} systemPrompt システムプロンプト(省略可)
* @param {"gpt-4o"|"gpt-4o-mini"|"gpt-4"|"gpt-4-turbo"|"gpt-3.5-turbo"} model 使用するモデル
* @param {number=} temperature 応答のランダム性(0-1の範囲、省略可)
* @param {number=} maxToken 最大トークン数(省略可)
* @return {string} AIからの応答テキスト
* @customfunction
*/
function ChatAIOpenAI(userPrompt="", systemPrompt="", model="gpt-3.5-turbo", temperature, maxToken) {
// 対応モデル
const validModels = [
"gpt-4o",
"gpt-4o-mini",
"gpt-4",
"gpt-4-turbo",
"gpt-3.5-turbo"
];
// バリデーション
if (userPrompt === "" || !userPrompt) throw new Error("プロンプトを入力してください");
if (model === "" || !model) throw new Error("モデルを指定してください");
if (!validModels.includes(model)) throw new Error(`無効なモデルです。以下から選択してください: ${validModels.join(", ")}`);
// APIのセットアップ
const apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
const apiUrl = 'https://api.openai.com/v1/chat/completions';
// メッセージの作成
const messages = [];
if (systemPrompt !== "") messages.push({'role': 'system', 'content': systemPrompt});
messages.push({'role': 'user', 'content': userPrompt});
// リクエストボディの作成
const requestBody = {
'model': model,
'messages': messages
};
// オプショナルパラメータが指定されている場合のみ追加
if (temperature !== "") requestBody.temperature = temperature;
if (maxToken !== "") requestBody.max_tokens = maxToken;
// リクエストの作成
const headers = {
'Authorization':'Bearer '+ apiKey,
'Content-type': 'application/json',
};
// リクエストの実行
const response = UrlFetchApp.fetch(apiUrl, {
'method': 'POST',
'headers': headers,
'payload': JSON.stringify(requestBody)
});
// レスポンスの解析
const json = JSON.parse(response.getContentText());
return json.choices[0].message.content;
}
4)スプレッドシートから関数を使う
=ChatAIOpenAI(B2,C2,"gpt-4o-mini")
参考ページ
- OpenAI Models
- OpenAI APIキー発行
- OpenAI APIリファレンス
Discussion