本記事の主な内容は、API呼び出しのために使用するWeb資格証明の作成手順になります。
Gemini APIとしては同じみたいですが、2通りの呼び出し方法があるようです。Googleの以下のページに、Google AI Gemini APIとGoogle Cloud Vertex AI Gemini APIの違いが説明されています。
Google AI Gemini APIの認証はAPIキー、Vertex AI Gemini APIではGoogle Cloudサービスアカウントによる認証が必要になります。その他、無料枠の設定があるのはGoogle AI Gemini APIのみ、エンタープライズ・サポートがあるのはVertex AIのみとなっています。特に、データ プライバシーのコミットメントはVertex AIのみなので、Gemini APIを企業で利用する場合は、Vertex AIを呼び出すことになると思われます。
最初に、Google AI Gemini APIを呼び出すためのWeb資格証明を作成します。
Google側の準備から始めます。プロジェクトは作成済みとします。
APIとサービスの画面を開き、APIとサービスの有効化をクリックします。
Generative Language APIを有効にします。
Generative Language APIが有効になります。認証情報を作成します。
APIキーを取得する
「API を使用するには API キーが必要です。Google AI Studio でワンクリックで鍵を作成できます。」と記載されていて、実際にGoogle AI Studioからワンクリックで鍵を作成できます。
本記事の目的はAPEXからGemini APIを呼び出すことなのでGoogle AI Studioは使わず、Google CloudのコンソールからAPIキーを作成します。
APIとサービスの認証情報の画面を開き、認証情報の作成をクリックします。メニューが開くのでAPIキーを選択します。
APIキー1をクリックして、編集画面を開きます。
名前をGenerative Language API Keyに変更します。APIの制限としてキーを制限を選択し、制限するAPIとしてGenerative Language APIを選択します。
APIキーをコピーし、保存をクリックします。
APIキーの準備ができたので、APEXでWeb資格証明を作成します。
ワークスペース・ユーティリティからWeb資格証明を開きます。
作成済みのWeb資格証明の一覧より、作成をクリックします。
作成するWeb資格証明の名前はGoogle Gemini API Keyとします。静的IDはGOOGLE_GEMINI_API_KEY、認証タイプとしてHTTPヘッダーを選択します。
資格証明名としてx-goog-api-key、資格証明シークレットとして先ほどGoogle側で作成したAPIキーを設定します。認証タイプとしてURL問合せ文字列を選択し、資格証明名をkeyとしてAPIキーを渡すこともできます。呼び出し時のURLにkey=APIキーが付加されますが、APEX_WEBSERVICE_LOGにWeb資格証明が記載されることはありません。
Web資格証明としてGoogle Gemini API Keyが作成されます。
確認のためにSQLワークショップのSQLコマンドから、以下のコードを実行します。引数p_credential_static_idに先ほど作成したGOOGLE_GEMINI_API_KEYを渡します。
正常にレスポンスを受け取れるため、APIの認証は正しいことが確認できます。
次に、Vertex AI Gemini APIを呼び出すためのWeb資格証明を作成します。
以前の記事「GoogleのDocument AIのAPIを呼び出してOCRを実行する」と同じ手順で、認証情報のサービスアカウントを作成します。
サービスアカウント名はmygeminiとしました。P12形式の秘密鍵のダウンロードまでを実施します。
PKCS#12の秘密鍵をPEMフォーマットに変換します。
openssl pkcs12 -in ダウンロードされたファイル -nocerts -nodes -out 出力ファイル
Enter Import Password:には秘密鍵のパスワードを入力します。
以下の例では、秘密鍵をmy-gemini-api.keyというファイルに出力しています。
Enter Import Password:には秘密鍵のパスワードを入力します。
以下の例では、秘密鍵をmy-gemini-api.keyというファイルに出力しています。
% openssl pkcs12 -in my-gemini-project-8a3056725154.p12 -nocerts -nodes -out my-gemini-api.key
Enter Import Password: ********
MAC verified OK
%
以前の記事ではUTIL_GOOGLE_APIというパッケージを作成し、それを使ってWeb資格証明を作っていました。今回はこのパッケージを少し改変しUTL_CRED_GOOGLEというパッケージを作成しました。APEXのWeb資格証明の作成と更新を行うプロシージャCREATE_OR_UPDATE_APEX_CREDENTIALを追加しています。
記事の最後に添付しているパッケージUTL_CRED_GOOGLEのコードを実行し、パッケージUTL_CRED_GOOGLEを作成しておきます。
作成したサービスアカウントのメールをコピーしておきます。Web資格証明を作成するときに使用します。
以下のコードを実行し、Web資格証明GOOGLE_GEMINI_API_TOKENを作成します。C_RSA_APIの内容はPEM形式の秘密鍵に置き換えます。その他、サービスアカウントのメールも置き換えます。
プロシージャcreate_or_update_apex_credentialの引数p_credential_static_idとして、作成または更新するWeb資格証明の静的IDを指定します。指定した静的IDのWeb資格証明が無い場合は、Web資格証明が新規に作成されます。引数p_workspace_nameにWeb資格証明を作成するAPEXのワークスペース名を指定します。デフォルトで現在のワークスペースが選択されるため、APEXのアプリケーションやSQLコマンドから呼び出す場合は、p_workspace_nameを指定する必要はありません。
APEXの画面から、新規に作成されたWeb資格証明を確認できます。
APIリファレンスの以下のページに記載されているGemini APIのサンプルを実行し、Vertex AI Gemini APIを呼び出せることを確認します。
Gemini API
正常にレスポンスを受け取れるため、APIの認証は正しいことが確認できます。
以上でGoogle AI Gemini APIおよびVertex AI Gemini APIの両方ともに、Oracle APEXから呼び出せることが確認できました。
ちなみにVertex AIをAPIキーで呼び出すと、以下のようなレスポンスが返されます。
[{
"error": {
"code": 401,
"message": "API keys are not supported by this API. Expected OAuth2 access token or other authentication credentials that assert a principal. See https://cloud.google.com/docs/authentication",
"status": "UNAUTHENTICATED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "CREDENTIALS_MISSING",
"domain": "googleapis.com",
"metadata": {
"method": "google.cloud.aiplatform.v1beta1.PredictionService.StreamGenerateContent",
"service": "aiplatform.googleapis.com"
}
}
]
}
}
]
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完