GASでOpenAIのAPIを利用してChatGPTライクな文章生成する方法を解説
ChatGPTには現在APIが提供されていませんが、同じGPT3.5モデルを使ったOpenAIの文章生成AIがAPIで利用できます。
そこで、Google Apps Script(GAS)でOpen AIの文章生成AIをAPIで利用する方法を解説します。
(2023年3月3日追記)ChatGPTのAPIがついに公開されたため、ChatGPTのAPIのリクエスト方法(解説記事)も追記しました。
ChatGPTで文章生成AIにブームに
2022年11月にOpenAIが発表したChatGPTは、文章生成AIとして大きな話題を集めました。
ChatGPTのサービス画面で、質問や問い合わせをすると、非常に自然な回答結果を得ることができます。
しかし、詳しい部分を確認していくと、誤った内容が含まれていたり、デタラメな回答の場合もあります。
ただ、うまく入力テキスト(プロンプト)を設定し、やりとりを繰り返すことで、調べたい内容を回答してくれます。
それゆえにGoogle検索が入らなくなるのではという意見も出ており、世界一のテック企業とも言えるGoogleも危機感を抱くほどです。
GASでChatGPTを活用したプログラム作成
ChatGPTという文章生成AIが登場したことで、ChatGPTを活用したサービスが模索されています。
ChatGPTを使ったAIによる記事作成などもサービスが発表されており、SEO対策の記事をChatGPTが生成してくれるかもしれません。
Google Apps Script(GAS)であれば、スプレッドシートを使ったアプリやWebアプリを簡単に作成できます。
そのため、ChatGPTの文章生成技術を活用したMVP(必要最小のサービス)を開発したい場合にGASがオススメです。
ChatGPTにはAPIがない
残念ながらChatGPTにはプログラミングで利用するためのAPIサービスは提供されていません。
そのため、ChatGPTをAPIで利用するというのは現時点では不可能です。
しかし、ChatGPTの開発元であるOpenAIは色々なAIサービスをAPIで提供しています。
OpenAIのAPI利用できるサービスの1つが文章生成AIです。
この文章生成AIは、ChatGPTと○○と呼ばれるGPT3.5系の自然言語処理のモデルを利用しています。
そのため、OpenAIのAPIにリクエストすれば、ChatGPTライクな文章生成AIがプログラミングで利用可能です。
Open AIの利用登録とAPIキー発行手順
Open AIの文章生成AIをAPIから利用するには、Open AIの利用登録とAPIキーを発行する必要があります。
AutoWorkerの以下の記事でOpen AIの利用登録からAPIキーを発行するまでの手順を解説しています。
OpenAIにAPIリクエストする際に必要なAPIキーが取得できるので、記事に記載の手順に従ってAPIキーを発行してください。
OpenAIのAPIキーはこのあとGoogle Apps Script(GAS)のコードを準備する際にスクリプトプロパティに設定します。
※Open AIの利用登録には、メールアドレスに加え、SMS認証可能な携帯番号が必要です。
GASでOpenAIにAPIリクエストするサンプルコード
実際にGoogle Apps Script(GAS)を使ってOpenAIにAPIリクエストして、文章生成AIを利用してみます。
GASでOpenAIの文章生成AIにテキスト(プロンプト)をAPI経由で送り、応答結果をログ出力するサンプルコードです。
function requestCompletion() {
//スクリプトプロパティに設定したOpenAIのAPIキーを取得
const apiKey = ScriptProperties.getProperty('APIKEY');
//文章生成AIのAPIのエンドポイントを設定
const apiUrl = 'https://api.openai.com/v1/completions';
//文章生成AIに投げるテキスト(プロンプト)を定義
const prompt = 'Google Apps Scriptの活用事例を教えてください';
//OpenAIのAPIリクエストに必要なヘッダー情報を設定
let headers = {
'Authorization':'Bearer '+ apiKey,
'Content-type': 'application/json',
'X-Slack-No-Retry': 1
};
//文章生成で利用するモデルやトークン上限、プロンプトをオプションに設定
let options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
'model': 'text-davinci-003',
'max_tokens' : 1024,
'temperature' : 0.9,
'prompt': prompt})
};
//OpenAIの文章生成(Completion)にAPIリクエストを送り、結果を変数に格納
const response = JSON.parse(UrlFetchApp.fetch(apiUrl, options).getContentText());
//OpenAIのAPIレスポンスをログ出力
console.log(response);
}
まず、OpenAIのAPIキーをスクリプトプロパティから読み込みます。
GASスクリプトエディタの左メニューにある歯車アイコン「プロジェクトの設定」から、スクリプトプロパティにAPIキーをセットします。
- プロパティ:APIKEY
- 値:OpenAIのAPIキー
続いてOpenAIの文章生成AI(Completion)のエンドポイントURLと、入力プロンプトを定義します。
OpenAIのAPIにHTTPのPOSTリクエストする際に必要な要素はheaderとoptionsの変数に記載しています。
最後にUrlfetchApp.fetchメソッドでAPIリクエストし、実行結果がJSON形式で返却されるので、オブジェクトに変換した内容をログ出力します。
GASサンプルコードを実行すると、実行ログに出力結果が表示され、赤枠部分が応答結果です。
OpenAIからのレスポンスには、応答結果以外にもプロンプト(入力文)と生成文のトークン量が表示されています。
ログ出力する際のconsole.logの引数を下記に変更すれば、応答文のみ出力可能です。
response.choices[0].text
OpenAI(Completion)のAPIパラメータ解説
先程のGoogle Apps Script(GAS)のサンプルコードで、OpenAIのAPIにHTTP POSTで送ったパラメータについて解説します。
//文章生成で利用するモデルやトークン上限、プロンプトをオプションに設定
let options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
'model': 'text-davinci-003',
'max_tokens' : 1024,
'temperature' : 0.9,
'prompt': prompt})
};
payloadの中身がOpenAIの文章生成AIで設定するパラメータで、入力プロンプトのprompt以外を説明します。
modelは使用する自然言語処理のGPTモデルを指定するパラメータで、今回は最も高性能な「text-davinci-003」を設定しています。
ただ、「text-davinci-003」は最も費用と処理時間がかかるGPTモデルなので、OpenAIの費用を抑えて応答時間を早めたい場合は「text-ada-001」を設定しましょう。
次にmax_tokensパラメータで応答結果もトークンの最大値を設定しています。
最新モデルの場合は上限が2048までですが、それよりも数値を小さくすることで、応答文を少なくし、使用トークンも節約可能です。
tempertureパラメータは0-1の値で、1に近づくほどより創造的な回答結果が返ってくる(その分誤りを含む可能性も高まる)そうです。
今回は興味深い回答を返してもらえるよう0.9を設定していますが、明確な答えがある質問を投げかける場合は0にします。
他にもありますが、チューニング頻度の高いパラメータがmodel,max_tokens,tempertureの3つです。
自然言語処理のモデルや応答文量、応答内容を変更したい場合は上記3つを調整しましょう。
(追記)ChatGPTのAPIが3/2に公開
ChatGPTのAPIは未公開とお伝えしていましたが、日本時間の2023年3月2日についに公開されました。
それを受けて、ChatGPTのAPIにGoogle Apps Script(GAS)でリクエストする方法をまとめています。
基本的にはOpenAIのAPIを利用するGASサンプルコードと流用する形で、リクエスト可能です。
ChatGPTのAPIのエンドポイントや過去のやり取りを含めた形にメッセージ設定を行います。
まとめ・終わりに
今回、Google Apps Script(GAS)による、OpenAIのAPIをリクエストしてChatGPTライクな文章生成AIを利用する方法を紹介しました。
現時点ではChatGPTにはAPIがありませんが、開発元のOpenAIが提供するChatGPTと同じGPT3.5系のモデルの文章生成AIでAPI利用できます。
GASを使ってOpenAIのAPIをリクエストすることで、ChatGPTライクな文章生成が実現可能です。
色々なテキスト(プロンプト)をOpenAIの文章生成AIにAPIで送ると、ChatGPTと同じような応答結果が得られました。
紹介したGASのサンプルコードを使えば、APIキーを用意するだけでChatGPTと同様の文章生成がGASで利用できます。
チャットボットや応答サービスなどがGASで簡単に作成できるので、ぜひ試してみてください。
ディスカッション
コメント一覧
はじめまして。
この記事と以下の記事を組み合わせて、LINE上でChatGPTのbotを作ることができました。
LINE Messaging APIをGASで実行するLINEボット開発方法(サンプル+設定手順付)
https://auto-worker.com/blog/?p=5141
結構需要がある気がしています。貴重な記事をありがとうございました。