ローカルPCからGemini APIを利用する際の呼び出し方と認証方式
はじめに
こんにちは。
クラウド事業本部コンサルティング部の渡邉です。
今回は、ローカルPCからGemini APIを利用する際の呼び出し方と認証方式について調べましたので、本ブログでまとめたいと思います。
Gemini APIを呼び出す2つの方式
Google CloudでGemini APIを利用する場合、2つの呼び出し方があります。
1. Vertex AI API
1つ目は、Vertex AI APIを経由してGemini APIを利用する方法です。
Vertex AI経由でGemini APIを利用するため、以下のメリットがあります。
- エンタープライズ向けの機能が利用できる
- IAMによるきめ細かい権限管理ができる
- VPC、プライベートエンドポイントに対応
- Cloud Logging、Cloud Monitoringと統合
やってみた
Vertex AI APIの有効化
まずは、Gemini APIを利用する対象のプロジェクトでVertex AI API (aiplatform.googleapis.com
) を有効化します。
gcloud services enable aiplatform.googleapis.com
認証方法として3通りあるので、それぞれ紹介していきます。
- APIキーでの認証
まずはサービスアカウントを作成します。
- [IAM と管理] > [サービス アカウント] を開きます。
- [サービス アカウントを作成] をクリックします。
- サービス アカウント名: vertex-ai-runner
- サービス アカウント ID: vertex-ai-runner
- [作成して続行] をクリックします。
- [権限] で、[ロールを選択] をクリックし、メニューから [Vertex AI ユーザー] を選択します。
- [続行] をクリックします。
- [完了] をクリックします。
サービスアカウントの作成が完了したら、APIキーの作成を行っていきます。
- [API とサービス] > [認証情報] を開きます。
- [認証情報を作成] > [API キー] をクリックします。
- API キーを次のように構成します。
- 名前: vertex-ai-runner
- サービス アカウントを介して API 呼び出しを認証する: 選択します。
- [サービス アカウントを選択] をクリックします。
- 前の手順で作成したサービス アカウントを選択し、[選択] をクリックします。
- [作成] をクリックします。
APIキーは外部へ漏洩しないように厳重に管理する必要があります。
APIキーの管理に関するベストプラクティスに記載があるように、定期的なローテーションや、トラッキングなど対策をしていきましょう。
APIキーがサービスアカウントにバインドされていることが確認できます。
node.js Gen AI SDKでGemini APIにリクエストを送信したいので、ローカルPCにGen AI SDK for Node.js をインストールします。
npm install @google/genai
環境変数に作成したAPIキーとVertex AIを明示的に利用する設定をエクスポートします。
export API_KEY=xxxxxxxxxxxxxxxxxxxx
export GOOGLE_GENAI_USE_VERTEXAI=True
APIキー経由でGemini APIを呼び出すgemini-sample.js
を実行します。
const {GoogleGenAI} = require('@google/genai');
const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';
const API_KEY = process.env.API_KEY;
async function generateContent(
apiKey = API_KEY
) {
const client = new GoogleGenAI({
vertexai: true,
apiKey: apiKey
});
const response = await client.models.generateContent({
model: 'gemini-2.5-flash',
contents: 'こんにちは。GeminiをAPIキー経由で呼び出しています。',
});
console.log(response.text);
return response.text;
}
generateContent().catch(console.error);
実行すると、Gemini APIから回答が返却されました。
$ node gemini-sample.js
こんにちは!Gemini APIをご利用いただきありがとうございます。
何かお手伝いできることはありますか?例えば、以下のようなことでしたらお答えできます。
* APIの利用方法について質問
* 特定の機能に関する情報
* 困っていることやエラーについて
* コードの例について
お気軽にお申し付けください。
APIキーでの認証でGemini APIを実行することができました。
- アプリケーションのデフォルト認証情報 (ADC)
アプリケーションのデフォルト認証情報は、ユーザの権限を利用し、Google Cloudの認証ライブラリが実行環境に応じて自動的に認証情報を見つける仕組みです。
Vertex AI API (Gemini API)へアクセスする際には、アプリケーションのデフォルト認証情報を利用することがGoogle Cloudで推奨されています。
アプリケーションのデフォルト認証情報を利用すると以下のメリットがあります。
- 環境の違いを吸収:開発環境と本番環境でコードを変更せずに認証可能
- シンプルな実装:明示的に認証情報を指定する必要がない
- セキュリティ:認証情報をコードにハードコードする必要がない
アプリケーションのデフォルト認証情報については、弊社Google Cloudカスタマーエンジニアの村田さんがわかりやすい認証フロー図をブログに記載いただいているので、こちらを参照ください。
ローカル開発環境における Terraform の Google Cloud 認証方法の推奨と仕組み #cm_google_cloud_adcal_2024 | DevelopersIO
Vertex AI経由でGemini APIを使用するために必要な権限を取得するには、プロジェクトに対するVertex AIユーザー:roles/aiplatform.userのIAM ロールを自身に付与する必要があります。
ロールの付与後、ローカルPCにて、以下のコマンド実行して、プロジェクト情報とローカル認証情報を作成してください。
gcloud init
gcloud auth application-default login
node.js Gen AI SDKでGemini APIにリクエストを送信したいので、Gen AI SDK for Node.js をインストールします。
※既にインストール済みであれば不要です。
npm install @google/genai
プロジェクトIDとロケーション情報を環境変数にエクスポートします。
export GOOGLE_CLOUD_PROJECT=xxxxxxxx
export GOOGLE_CLOUD_LOCATION=asia-northeast1
アプリケーションのデフォルト認証情報経由でgemini-sample.js
を実行します。
const {GoogleGenAI} = require('@google/genai');
const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';
async function generateContent(
projectId = GOOGLE_CLOUD_PROJECT,
location = GOOGLE_CLOUD_LOCATION
) {
const client = new GoogleGenAI({
vertexai: true,
project: projectId,
location: location,
});
const response = await client.models.generateContent({
model: 'gemini-2.5-flash',
contents: 'こんにちは。Geminiをアプリケーションのデフォルト認証情報経由で呼び出しています。',
});
console.log(response.text);
return response.text;
}
generateContent().catch(console.error);
実行すると、geminiから回答が得られました。
$ node gemini-sample.js
こんにちは!
Geminiをアプリケーションのデフォルト認証情報 (Application Default Credentials, ADC) 経由で呼び出しているとのこと、承知いたしました。
それはGoogle Cloudのサービスにアクセスする際の**推奨される認証方法**の一つで、開発環境、本番環境、CI/CD環境など、様々な場所でコードを変更することなく認証を自動的に解決してくれるため、非常に便利で安全なアプローチです。
何か特定の目的で呼び出しているのでしょうか?それとも、何かご質問や困っていることがあれば、お手伝いできますか?
アプリケーションのデフォルト認証情報を利用して、Vertex AI (gemini api)にアクセスできました。
- サービスアカウントキー
まずはプロジェクトにサービスアカウントキーを作成していきます。
ローカルPCにサービスアカウントキーのjsonファイルがダウンロードされたので、本jsonファイルを所定のフォルダに配置してください。
node.js Gen AI SDKでGemini APIにリクエストを送信したいので、Gen AI SDK for Node.js をインストールします。
※既にインストール済みであれば不要です。
npm install @google/genai
サービスアカウントキーでgemini-sample.js
を実行します。
const serviceAccount = require('./service-account-key.json');
const {GoogleGenAI} = require('@google/genai');
const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';
async function generateContent(
projectId = GOOGLE_CLOUD_PROJECT,
location = GOOGLE_CLOUD_LOCATION
) {
const client = new GoogleGenAI({
vertexai: true,
project: projectId,
location: location,
googleAuthOptions: {
credentials: serviceAccount
},
});
const response = await client.models.generateContent({
model: 'gemini-2.5-flash',
contents: 'こんにちは。Geminiをサービスアカウントキー経由で呼び出しています。',
});
console.log(response.text);
return response.text;
}
generateContent().catch(console.error);
実行すると、geminiから回答が得られました。
$ node gemini-sample.js
こんにちは!
はい、Google Cloudのサービスアカウントキーを使ってGemini API(または他のGCP API)を呼び出すのは、一般的な認証方法ですね。
何かお手伝いできることはありますか? 例えば、以下のようなことでしたらサポートできます。
* **APIの利用方法について** (例: 特定のリクエストの組み方、モデルの選び方)
* **認証設定について** (例: 環境変数、コードでの認証情報の扱い方)
* **エラーのデバッグ** (例: `PERMISSION_DENIED`、`UNAUTHENTICATED` など)
* **特定のプログラミング言語でのサンプルコード**
何か困っていること、または知りたいことがあれば、お気軽にお尋ねください。
サービスアカウントキーを利用して、Vertex AI (gemini api)にアクセスできました。
以下に、認証方式の比較表を記載します。
認証方式 | 推奨度 | セキュリティ | 本番環境 | 組織ポリシー制約 |
---|---|---|---|---|
APIキー | 非推奨 | キー漏洩リスクあり (低い) | 非推奨 | 無効化が必要 |
アプリケーションのデフォルト認証情報 | 推奨 | ハードコード不要/一時クレデンシャル (高い) | 推奨 | なし |
サービスアカウントキー | 非推奨 | キー漏洩リスクあり (低い) | 非推奨 | 無効化が必要 |
以上、Vertex AI経由でGemini APIを呼び出す際の認証方式を3つ紹介いたしました。
2. Generative Language API
2つ目は、Generative Language APIを利用してGemini APIを利用する方法です。
- Generative Language APIを有効化
gcloud services enable generativelanguage.googleapis.com
- APIキーを作成
- Google Cloud Console → 「APIとサービス」→「認証情報」
- 「認証情報を作成」→「APIキー」
- 生成されたキーをコピー
- APIキーに制限を設定
- APIキーを編集
- 「APIの制限」→「キーを制限」
- "Generative Language API"を選択
node.js Gen AI SDKでGemini APIにリクエストを送信したいので、Gen AI SDK for Node.js をインストールします。
※既にインストール済みであれば不要です。
npm install @google/genai
環境変数にAPIキーをエクスポートします。
export GEMINI_API_KEY=xxxxxxxxxxxxxxxxxxxxxx
APIキー経由でgemini-sample.js
を実行します。
const {GoogleGenAI} = require('@google/genai');
const GEMINI_API_KEY = process.env.GEMINI_API_KEY;
async function generateContent(
apiKey = GEMINI_API_KEY
) {
const client = new GoogleGenAI({
apiKey: apiKey
});
const response = await client.models.generateContent({
model: 'gemini-2.5-flash',
contents: 'こんにちは。GeminiをGenerative Language APIのAPIキー経由で呼び出しています。',
});
console.log(response.text);
return response.text;
}
generateContent().catch(console.error);
実行すると、geminiから回答が得られました。
$ node gemini-sample.js
こんにちは!
Generative Language API の API キー経由で Gemini を呼び出されているのですね。
何かご不明な点や、困っていることはありますか?
例えば、**コードの記述方法、認証に関する質問、特定の機能の利用方法、エラーのトラブルシューティング**など、どんなことでもお気軽にご相談ください。お手伝いできることがあれば幸いです!
Generative Language APIのAPIキー経由で、gemini apiにアクセスできました。
最後に
本記事では、ローカルPCからGemini APIを利用する際の呼び出し方と認証方式について解説しました。
Gemini APIには2つの呼び出し方式があり、それぞれ異なる特徴と適用シーンがあります。
Vertex AI APIは、エンタープライズ向けに設計された本格的なプロダクション利用を想定した方式です。IAMによるきめ細かい権限管理、VPCやプライベートエンドポイント対応、Cloud LoggingやCloud Monitoringとの統合といった、本番環境で求められる機能が充実しています。
一方、Generative Language APIは、個人開発者や学生、研究者向けに最適化されたシンプルな方式です。APIキーのみで認証でき、プロトタイピングや学習目的には最適ですが、企業で使用する場合にはセキュリティ面で不安があるので、できるだけ早めにVertex AIへ移行するか、初めからVertex AIを利用することをお勧めします。
Vertex AI経由でGemini APIを呼び出す際の認証方式ですが、セキュリティ/運用性の観点から、アプリケーションのデフォルト認証情報を使用するようにしましょう。
参考資料
Google Cloud API キーを取得する | Generative AI on Vertex AI
アプリケーションのデフォルト認証情報を構成する | Generative AI on Vertex AI | Google Cloud
Vertex AI の Gemini API クイックスタート | Generative AI on Vertex AI | Google Cloud
Gemini API キーを使用する | Google AI for Developers