nikkie-ftnextの日記

イベントレポートや読書メモを発信

Vertex AI の Gemini API を curl で叩く

はじめに

七尾百合子さん、お誕生日 250日目 おめでとうございます! nikkieです。

素早く参照できるよう、知識を書き出しておきます。
ただし、便利な SDK を使えばそれで十分だと思います。

目次

結論:Vertex AI の Gemini を叩く curl

GOOGLE_CLOUD_PROJECTexportしてから使ってください

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と変わります
  • 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

(2025/11/23 追記)

google-genai SDKの「API Selection」について

プレビュー機能ありの 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-tokenapi_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のバージョン指定について追加