Gemini APIをGASで利用できるようにする
生成AIのメジャー度で言うとOpenAIが先行しておりますが、OpenAIがなんだか信用できない…という理由でGoogleの提供するGemini APIを使いたいというニーズがあることを知りました。
ということで、GeminiをGoogle Apps Script(以降GAS)で利用できるようにするための事前準備について解説します。
APIキーを取得する
まずはGoogle AI Studioのサイトに行きましょう。
Googleアカウントにログインした状態で、Google AI Studio にログインをクリックします。
法的通知がでますので内容を確認して、最低限利用規約に同意して続行をクリックします。
Google AI Studio を利用するか、自身の環境にGeminiを組み込むためのAPIキーを取得するかの選択肢がでます。
今回はGASでの利用を想定していますのでGet API keyをクリック。
ちなみにGoogle AI Studioは、Geminiの各モデルのレスポンスなどをChat GPTライクにお試しできる環境です。どちらかというとOpenAI Playground(コードを書く前にAPIの挙動を確認できるテスト環境)的な位置づけです。
APIキー作成画面になるので、そのまま作成へ
GeminiのAPIキーはGoogle Cloud プロジェクトと紐付きます。このプロジェクトが存在するGoogle Cloud Platform(GCP)は、Google の各種の技術を他のアプリケーションやサービスから利用できるプラットフォームですね。
Gemini APIを無料枠を超えて利用したい場合は、課金情報を登録したプロジェクトに紐付けする必要があるようです(まだやってません)。
ということで一旦新しいプロジェクトでAPIキーを作成します。
APIキーが表示されるので、控えておきましょう。
Gemini APIにテストリクエストを送ってみる
APIキーが取得できたので、テストリクエストを送ります。
APIキー生成後にテストリクエストのためのcURLコマンドが表示されます。
このcURLコマンドをGASに読み替えます。
/**
* Gemini APIをテストする関数
* @return {void}
*/
function testGeminiAPI() {
// APIキーを設定
const apiKey = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
// リクエストURLを設定
const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=' + apiKey;
// リクエストヘッダーを設定
const objHeaders = {
'Content-Type': 'application/json'
};
// リクエストボディを設定
const objPayload = {
contents: [
{
parts: [
{
text: 'AIがどのように機能するかを説明して'
}
]
}
]
};
// リクエストオプションを設定
const objOptions = {
method: 'post',
headers: objHeaders,
payload: JSON.stringify(objPayload)
};
// HTTPリクエストを送信
const response = UrlFetchApp.fetch(url, objOptions);
// レスポンスをJSON形式に変換してログに出力
const json = JSON.parse(response.getContentText());
console.log(json);
console.log(json.candidates[0].content.parts[0].text);
}
テストコードは、APIキーのプロパティストアへの格納、プロンプトの日本語化、応答のレスポンスオブジェクトだけでなく、その中に格納されているAIからの返答テキストをログ出力するように手を加えています。
json.candidates[0].content.parts[0].text
Gemini APIからの返答は、かなり深いところにあるようで、実務での実装がちょっと面倒そうだな…という予感。
最後に、テストリクエストを送信し、無事レスポンスが得ることが確認できました。
Gemini APIは画像や動画などを読み込んだ上でプロンプト(指示)に応えることができるようなので、色々な使い方ができそうですね。
この記事が気に入ったらチップで応援してみませんか?