o1に頼り切って、Googleスプレッド関数を考えてもらう。
はじめに
OpenAIのo1というモデルが使えるようになりました。どのような特徴があるのかよくわからないのですが、コードの作成が得意なようですので、試してみました。
題材としては、Googleスプレッドシート上で、GPTのAPIを使用できるスクリプトを作成してもらいます。
プロンプト
googleスプレッドシートで、=GPT("任意のプロンプト")というgpt関数を使用できる、スクリプトを書いてください。
o1の思考
思考時間20秒
OK, let's break this down: we need a Google Sheets script using Google Apps Script to integrate OpenAI's GPT API, handle authentication, and make API calls.
関数の定義
Google SheetsのGpt関数を構築して、OpenAI APIの応答を返す処理を記述する。APIキーは安全に扱う。
Google Apps Scriptの制約
Custom functionsの制約を理解する
カスタム関数が外部リクエストを送信できないので、Google Sheetsでの使用は制限的です。カスタムメニューを作成し、UrlFetchAppを利用する関数を呼び出す方法がある。
探し続ける
カスタム関数からURLfetchAppを呼び出す方法がないか検討している。ドキュメントを見ていて気づく。認証を必要とするサービスには送信できないと。
検討中の方向性
アプリスクリプトサービスやURL取得メソッドの承認が必要ないオープンAIAPIの利用を考えている。
統合APIの設定
OpenAIのAPIキーをスクリプトプロパティに格納し、例外処理とレート制限対策を施す方法を示している。
APIキーの設定を話し合う
ユーザーにAPIキーを入力してもらう方法を考えているけれど、カスタム関数では難しい。スクリプトを初めて実行するときにAPIキーを保存する方法もあるが、現時点では上記の方法を使ってFunctionを記述することに決めている。
APIキーの注入
Google Sheetsでこのスクリプトを使う場合、ユーザーは'YOUR_OPENAI_API_KEY'を実際のOpenAI APIキーで置き換える必要がある。APIキーはスクリプトプロパティに保存することで、より安全に扱える。
「スクリプトを更新中...」
OpenAIのAPIキーをスクリプトプロパティに追加し、JavaScriptでアクセスしてGPT関数を実装している。
以上、o1の思考部分でした。微妙に口語体が混じるのが面白いです。
o1の回答
Googleスプレッドシートで=GPT("任意のプロンプト")という関数を使用するためには、Apps Scriptを使用してOpenAIのAPIと連携する必要があります。以下の手順でスクリプトを設定してください。
手順1: Apps Scriptエディタを開く
スプレッドシートのメニューから拡張機能 > Apps Scriptをクリックします。
手順2: スクリプトを貼り付ける
以下のスクリプトをコピーして、エディタに貼り付けます。
function GPT(prompt) {
var apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
if (!apiKey) {
return "エラー: スクリプトプロパティにOpenAIのAPIキーが設定されていません。";
}
var url = 'https://api.openai.com/v1/chat/completions';
var data = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.7
};
var options = {
'method' : 'post',
'contentType': 'application/json',
'headers': {
'Authorization': 'Bearer ' + apiKey
},
'payload' : JSON.stringify(data)
};
try {
var response = UrlFetchApp.fetch(url, options);
var json = JSON.parse(response.getContentText());
var reply = json.choices[0].message.content.trim();
return reply;
} catch (e) {
return "エラー: " + e.toString();
}
}
注)使用する際にはモデル名をgpt-4o-miniに変更してください。
手順3: OpenAIのAPIキーを設定する
Apps Scriptエディタで、ファイル > プロジェクトのプロパティをクリックします。
スクリプトのプロパティタブを選択します。
新しいプロパティをクリックし、以下のように入力します。
名前: OPENAI_API_KEY
値: あなたのOpenAI APIキー
保存をクリックします。
手順4: スクリプトの権限を承認する
スクリプトエディタで、保存アイコンをクリックしてスクリプトを保存します。
実行ボタン(▶️アイコン)をクリックし、GPT関数を選択します。
認証が求められたら、指示に従って権限を許可します。
手順5: スプレッドシートで関数を使用する
スプレッドシートに戻り、セルに=GPT("あなたのプロンプト")と入力します。
エンターキーを押すと、GPTからの応答がセルに表示されます。
注意点:
API使用料: OpenAIのAPIを使用するため、使用量に応じて料金が発生します。APIキーの管理と使用量には注意してください。
制限事項: カスタム関数は実行時間に制限があり、長い応答や複雑なプロンプトの場合、タイムアウトする可能性があります。
これで、Googleスプレッドシートで=GPT("任意のプロンプト")を使用できるようになります。
動作確認
実際にGoogleスプレッドシートで使用したところうまく動きました(1回しか試していませんが・・)。
感想
私が普段使用しているGPT関数より出来が良い気がします・・・。特にAPIキーの取り扱いがよいと思います。
o1の思考でもAPIキーの設定に大きく思考を割いていることから、このプログラムの課題をいち早く認識していることがわかります。
また、スクリプトの設定手順も教えてくれるので、非常に親切です。
性能が良いのかどうかは、まだよくわかりませんが、これからも試してゆきたいと思います。
この記事が気に入ったらサポートをしてみませんか?