🫠

Gemini 2.0 Flash APIをRESTで叩いてみる

2025/01/31に公開

背景

https://ai.google.dev/gemini-api/docs/models/gemini-v2?hl=ja
Gemini 2.0 Flashが試験運用版として公開されたとのこと。
たまたまRustで1.5FlashをREST APIで呼び出して使っていたので、そのまま2.0に置き換えて使ってみようと思った。

簡単に

ドキュメントを読むと、新しいSDKが提供されて、PythonとGoで使えるようになっているらしい。
今回はSDKを使うのではなくREST APIで叩きたかったが、ぱっとドキュメントを呼んだだけだと書いてない。少し調べて動いたので以下にメモ。

APIの有効化

Google CloudのコンソールでGeminiって検索して以下を有効化

※ちなみにこれはもともと1.5のAPIを叩くために使っていたもの。

APIキー発行

Google Cloudのコンソールで APIとサービス/認証情報 にアクセスしてAPIキー発行

APIのリンクを探す

結論、以下。

gemini 2.0 flash

https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key={API_KEY}

gemini 1.5 flash

https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={API_KEY}

https://ai.google.dev/gemini-api/docs/models/gemini?hl=ja#model-variations
上記をよく見ると、モデルバリエーションってところに書いてある。

あとは1.5 flashのREST APIのサンプルに書いてあるリンクのモデルを識別しているところを書き換えればok
https://ai.google.dev/gemini-api/docs/quickstart?hl=ja&lang=rest#make-first-request

サンプルコード

いろいろあってPythonでSDK使わずにREST叩いて動確した。

import requests
import json

# APIのエンドポイント
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key={API_KEY}"
# url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={API_KEY}"


txt = f"""
プロンプトをここに書く
"""

# リクエストボディ
data = {
    "contents": [
        {
            "parts": [{"text": txt}]
        }
    ]
}

# HTTPリクエストのヘッダー
headers = {
    "Content-Type": "application/json"
}

# POSTリクエストを送信
response = requests.post(url, headers=headers, data=json.dumps(data))

# 結果を取得して出力
if response.status_code == 200:
    print(response.json())
else:
    print(f"Error: {response.status_code}, {response.text}")

Discussion