はじめに
七尾百合子さん、お誕生日 250日目 おめでとうございます! nikkieです。
素早く参照できるよう、知識を書き出しておきます。
ただし、便利な SDK を使えばそれで十分だと思います。
目次
結論:Vertex AI の Gemini を叩く curl
GOOGLE_CLOUD_PROJECTをexportしてから使ってください
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"\ "https://aiplatform.googleapis.com/v1/projects/${GOOGLE_CLOUD_PROJECT}/locations/global/publishers/google/models/gemini-2.5-flash:generateContent" \ --json '{"contents": [{"parts": [{"text": "The opposite of hot is"}], "role": "user"}]}'
gcloud auth application-default loginを実行して、ローカル認証情報を作成- location は global を指定
- asia-northeast1 などを指定する場合、URLのホスト名も
https://asia-northeast1-aiplatform.googleapis.comと変わります
- asia-northeast1 などを指定する場合、URLのホスト名も
- contents は単一の role と複数の part からなる
- role=userコンテンツ、role=modelコンテンツのように、複数並べることはできそう
google-genai のClient(vertexai=True)との対応
Gemini の SDK は、google-genai に移行された印象です(以下の記事を書いた1月時点と比べて)
google-genai の実装を見ていくと、上記のcurlコマンドと対応が取れるように思います
print-access-token相当なのはこちら(※ここは Codex CLI に調査協力してもらってます):
https://github.com/googleapis/python-genai/blob/v1.52.0/google/genai/_api_client.py#L648-L656
credentials, self.project = load_auth(project=None)
load_auth()の実装
https://github.com/googleapis/python-genai/blob/v1.52.0/google/genai/_api_client.py#L182-L196
def load_auth(*, project: Union[str, None]) -> Tuple[Credentials, str]: credentials, loaded_project_id = google.auth.default( scopes=['https://www.googleapis.com/auth/cloud-platform'], ) # 略 return credentials, project
google-auth はドキュメントに当たったことがあります。
別トピックとして、location に応じた URL
- global のときは
https://aiplatform.googleapis.com - それ以外は、location を URL に含める
(2025/11/23 追記)
google-genai SDKの「API Selection」について
- curl 同様に v1 を叩くには
http_options=types.HttpOptions(api_version='v1')と Client に指定して初期化 - 指定しない場合、Vertex AI では v1beta1 (プレビュー機能あり)指定
プレビュー機能ありの Gemini API を使う curl コマンド(バージョニングを v1beta1 に変更)
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"\ "https://aiplatform.googleapis.com/v1beta1/projects/${GOOGLE_CLOUD_PROJECT}/locations/global/publishers/google/models/gemini-2.5-flash:generateContent" \ --json '{"contents": [{"parts": [{"text": "The opposite of hot is"}], "role": "user"}]}'
(2025/11/23 追記 終わり)
終わりに
(google-genai SDK を使えば十分なのですが、)curl で Vertex AI の Gemini API を利用する方法を書きました。
DeepMind の方の無料で使える Gemini は Client(api_key=...) と指定するので、gcloud auth print-access-tokenをapi_key引数に渡したらといくつか試したのですが、これはうまくいきません。
google-genai の実装も見てみて、google-auth で ADC を確認している箇所がprint-access-tokenに相当しそうと理解しました
なお、私が使っていないのでスコープ外としましたが、Vertex AI でもClient(vertexai=True, api_key=...)と指定できるそうです。
エクスプレスモードや、サービスアカウントのキーを使う方法:
Vertex AI の Gemini API クイックスタート | Generative AI on Vertex AI | Google Cloud Documentation
変更履歴
- 2025/11/23 目次を追加(入れ忘れ)
- 2025/11/23 APIのバージョン指定について追加