AI ChatGPT(3)、APIを使って見る(GDP関数)

AI ChatGPT(3)、APIを使って見る(GDP関数)

プロローグ

○プロローグ
今話題の「ChatGPT」はOpenAI社の製品です。
OpenAI社では、AI用の各種APIを提供しています。

※私は、ChatGPTのAPIのWaitingListに登録して、3/02日使用できるようになりました(^_^)]。
※ここではChatGPTでも使用している大規模言語学習モデルであるGPT3.5のAPIを使用してみます。
※念のためですが、ChatGPT APIそのものではありません。
以下の内容で紹介します:
・「ChatGPT in Google Sheets and Docs」を導入する
・OpenAIのAPI関数について
・OpenAIのAPI関数の料金について
・GPT-3を使用して、GDP()関数を実装する

「ChatGPT in Google Sheets and Docs」を導入する


※注意:「ChatGPT in Google Sheets and Docs」は無料で使用できますが、
※内部で使用しているOpenAI APIは有料です。
※実は著者の私に料金が請求されますので、使用に関してご考慮下さい。

ここでは、Googleスプレッドを使用して、拡張機能にて、「ChatGPT in Google Sheets and Docs」を導入します。
この方法が、1番の近道です。
※なお、このページの後半で、GAS(GoogleAppsScript)でAPIを直接呼び出す方法についても紹介いたします。

○「ChatGPT in Google Sheets and Docs」の設定
GoogleスプレットシートでChatGPTのEnable及びAPIキーの設定を行います。

○「ChatGPT in Google Sheets and Docs」使用可能な関数一覧

開発者ページ:ChatGPT in Google Sheets and Docs
https://gptforwork.com/


実際に使用した例は、以下を参照して下さい。

関数名 機能 パラメータ 備考
GPT スプレッドシートで GPT の使用を開始するための最も簡単な関数。結果を 1 つのセルに出力します。 prompt, [value], [temperature], [max_tokens], [model] value:プロンプトを適用するテキスト、セル、または範囲
GPT_LIST GPT と同様ですが、結果を列に出力します。出力がリストの場合、非常に実用的です。 prompt, [value], [temperature], [max_tokens], [model]
GPT_FILL いくつかの例から範囲を魔法のように塗りつぶしたりきれいにしたりします。 examples, [partial], [temperature], [max_tokens], [model])
GPT_TABLE GPT と同様ですが、結果をテーブルに出力します。出力がテーブルの場合は非常に実用的です。 prompt, [headers], [temperature], [max_tokens], [model]
GPT_EDIT 指定されたタスクを指定されたテキストに適用します。デフォルトの質問は、文法とスペルを修正することです。 text, [task], [temperature], [max_tokens], [model]
GPT_TAG ユーザー定義のタグを特定のテキストに適用します。 text, tags, [temperature], [max_tokens], [model]
GPT_CLASSIFY 指定されたテキストを 1 つのカテゴリに分類します。 text, categories, [temperature], [max_tokens], [model]
GPT_EXTRACT テキストからデータ (電子メール アドレスや会社名など) を抽出します。コンマ区切り値として出力します。 text, to_extract, [temperature], [max_tokens], [model]
GPT_SUMMARIZE 指定された形式 (既定では 3 つの文) に従ってテキストを要約します。 text, [format], [temperature], [max_tokens], [model]
GPT_TRANSLATE テキストをある言語から別の言語に翻訳します。ソース言語を指定するとより効果的です。 text, target_language, [source_language], [temperature], [maxTokens], [model]
GPT_CODE 指定されたタスクを実行するためのコードを生成します。出力は関数です。 task, [language], [temperature], [max_tokens], [model]
GPT_CONVERT ある形式から別の形式に変換します。たとえば、json からテーブル、または xml から json です。 input, target_format, [source_format], [temperature], [max_tokens], [model]
GPT_CREATE_PROMT CONCATENATEと同様ですが、スペースと改行を自動的に挿入します。ばらばらでばらばらのセルと範囲からプロンプトを作成するのに役立ちます。その後、そのプロンプトを GPT 関数で使用できます。この関数は GPT を呼び出さないため、コストは発生しません。 arg1, [arg2], [arg3], […argn])

○共通パラメータの説明

パラメータ名 定義 備考
temperature GPT の創造性を制御する 0 から 1 までの数値:
• 0は GPT をプロンプトに厳密に従います (デフォルト)
• 0.5 はGPT を少し創造的にします
• 1は GPT を一部のロケールで非常に創造的にします。代わりに「0,5」を使用する必要がある場合があります。
max_tokens トークンの最大応答サイズ。0 より大きいラウンド数である必要があります。デフォルトは 250 です。GPT 関数で 500 以下の値を使用することをお勧めします。そうしないと、タイムアウトのリスクがあります。長い形式のコンテンツを生成する場合は、Google ドキュメントの統合を使用することをお勧めします。
model すべての OpenAI および微調整されたモデルは、その名前で利用できます。最も人気のあるモデルは次のとおりです。
• text-davinci-003 : (デフォルト) 最も有能な GPT-3 モデル。多くの場合、より高い品質、より長い出力、およびより優れた指示に従うことで、他のモデルが実行できるタスクを実行できます。テキスト内への補完の挿入もサポートしています。
• text-curie-001 : Davinci よりも機能は劣りますが、高速で低コストです。
• text-babbage-001 : 機能は劣りますが、Curie よりも高速で低コストです。
• text-ada-001 : 機能は最も劣りますが、最も高速で低コストです。
• text-davinci-edit-001 : 新しいスタイルでテキストを書き直します (ベータ版)

リファレンスマニュアル:https://gptforwork.com/gpt-for-sheets/reference

★これらの関数の具体的な使用方法は、以下のYouTube動画を参照してください。
https://www.youtube.com/playlist?list=PLI1hJP_Ps2kPXEyL-8U3TuZuaTaP28d4B

なお、下記に一番シンプルなGPT()関数の使い方を記します。

GPT()関数の使い方

○GPT()関数の呼び出し方法
=GPT(prompt, value, temperature, model, maxTokens)
prompt:質問文
value:質問文を適用させるスプレッドシートのセル
temperature:忠実度(0-1)
0は、AIがプロンプトに忠実に従うようにする(既定値)
1は、AIを非常に創造的にする
model:
text-davinci-003: (既定値) GPT-3の中で最も高性能なモデル。
text-curie-001: Davinciよりも高速で低価格
text-davinci-edit-001: テキストを新しいスタイルで書き直す
maxTokens:補完の際に生成するトークンの最大値。デフォルトは16

○使用例

=GPT(C1,C2)

C1セルに「何の日か」、D1セルに「2023/02/16日」⇒2023/02/11日は何の日か?

OpenAIのAPI関数について

ChatGPTの開発元のOpenAI社では、AI用の各種APIを提供しています。
このAPIを利用するには、アカウント登録して、APIキーを事前に取得する必要があります。
APIは18$の無料チケットがありますが、以降は有料となります。
ここでは、以下について、説明いたします。
○アカウント登録方法
TBD.
○APIキー取得方法

OpenAIのAPI関数の料金について

○APIの使用、テキストの場合(GPT3.5)の場合は、使用するモデルによって料金が異なります。

○使用するモデル毎の料金について
※1$=130円換算
※参考URLの:https://1-notes.com/openai-api-usage-fee/

言語モデル 1,000トークンあたり(ドル) 1,000トークンあたり(円)
Davinci(ChatGPTと同等) $0.02 2.6円
Curie $0.002 0.26円
Babbage $0.0005 0.065円
Ada $0.0004 0.052円

○APIの使用状況(料金)
    現在、0.77$(約100円)使用済です。
    なお、無料の18$は、3ヶ月間有効なようです。
    それ以降は、有料となります。

○Billing情報
リミット設定にはソフト/ハード制限を指定できます。
    ソフト:制限オーバーをメールで知らせてくれる。
    ハード:使用を停止させる。

GPT-3を使用して、GDP()関数を実装する

GAS(GoogleAppsScript)の拡張機能を使用せずに、直接提供されるAPIをGASでコード記述します。

GASに追加したコードは以下です:

/**
* GPT-3 and Google Sheets
*
* @param {string} prompt Prompt.
* @param {number} temperature (Optional) Temperature.
* @param {string} model (Optional) GPT-3 Model.
* @return Response returned by GPT-3.
* @customfunction
*/

const SECRET_KEY = "★★★取得したAPIキーを指定します★★★";
//const MAX_TOKENS = 10;
const MODEL_NAME = "text-davinci-003"; // more structured and deterministic: for data
//const MODEL_NAME = "davinci"; // more flexible and creative: for stories, chatbots
const MODEL_TEMP = 0.3;

function GPT2(prompt,max_tokens=30) {
const url = "https://api.openai.com/v1/completions";
const payload = {
model: MODEL_NAME,
prompt: prompt,
temperature: MODEL_TEMP,
//max_tokens: MAX_TOKENS,
max_tokens: max_tokens
};

const options = {
contentType: "application/json",
headers: { Authorization: "Bearer " + SECRET_KEY },
payload: JSON.stringify(payload),
};

const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
return res.choices[0].text.trim();
}

作成したアプリケーションです、テニスに関する質問です。


GASからの呼び出しコードは以下の1行です。
※B5セルの内容をChatGPT(GPT3.5)に質問しています。
※回答は1000文字以内という条件を付けています。

=GPT2(B5, 1000)

エピローグ

GoogleスプレッドとChatGPTの組み合わせは、本当に相性がいい、実務的ですね。
次回は、「AI ChatGPT(4)、VisualStudioCode(VSCode)と使う」と題して、VSCodeでChatGPT 拡張を導入した例を紹介します。
これは、少々凄すぎます、最初の印象は、本当ですか!?という感じです。

著者:志村佳昭(株式会社トリニタス 技術顧問)