🫠
Gemini 2.0 Flash APIをRESTで叩いてみる
背景
たまたま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}
あとは1.5 flashのREST APIのサンプルに書いてあるリンクのモデルを識別しているところを書き換えればok
サンプルコード
いろいろあって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