Gemini APIをローカル環境のPythonから実行するまで
ChatGPTのAPIを勉強で使いたかったのですが無料枠が終わっていました。
そこで無料枠のあるGemini APIを今回使うことにしました。
Gemini Flashの無料枠でできること
15RPM(Request Per Minute)(1分あたりのリクエスト数)
1分間に15回までのリクエスト。
100万TPM(Token Per Minute)(1分あたりのトークン数)
こちらどのくらいのことができるのかイメージがつかなかったのでgeminiに聞いてみました。
100万トークンは、約750,000文字に相当
「ハリー・ポッターと賢者の石」約10冊分
1分間で「ハリー・ポッターと賢者の石」約10冊分のトークンのやり取りができるのはすごい。
1,500(Request Per Day)(1日あたりのリクエスト数)
1日で1500回までのリクエスト。
GCPでプロジェクトを作成する
GeminiのAPIを無料枠で利用するには課金が無効になっているGCPプロジェクトが必要です。
私は新たにGCPプロジェクトを作成して課金を無効にして、そのプロジェクトを使うようにしました。
GCPのコンソールにログインしてプロジェクトを作成します。
プロジェクトを作成したらお支払いのページへ進みます。
課金を無効にします。
もう一度お支払いページを開いて以下のように表示されれば課金は無効になっています。
Google AI StudioでAPIを有効にする
Google AI Studioにアクセスします。
Get API Keyをクリックしたら「APIキーを作成」をクリックします。
先ほど作った課金を無効にしたプロジェクトを選択してAPIキーを作成しましょう。
作成したAPIキーは後から確認することができます。
pythonでAPIをコールする
ここではvenvでローカルにpythonの開発環境を作って実行しています。
まずライブラリをインストールします。
pip install -q -U google-generativeai
APIキーを取得し以下のコードでAPIリクエストをしてみます。
ファイル名は「gemini_text1.py」としました。
import google.generativeai as genai
# APIKEY
key = ""
genai.configure(api_key=key)
model = genai.GenerativeModel('gemini-1.5-flash')
res = model.generate_content("こんにちは")
print(res)
以下のコマンドで実行することができます。
python gemini_text1.py
以下のリクエストが返ってきました。
GenerateContentResponse(
done=True,
iterator=None,
result=protos.GenerateContentResponse({
"candidates": [
{
"content": {
"parts": [
{
"text": "\u3053\u3093\u306b\u3061\u306f\uff01 \n\n\u4eca\u65e5\u306f\u4f55\u304b\u697d\u3057\u3044\u4e88\u5b9a\u306f\u3042\u308a\u307e\u3059\u304b\uff1f \n"
}
],
"role": "model"
},
"finish_reason": "STOP",
"index": 0,
"safety_ratings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"probability": "NEGLIGIBLE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"probability": "NEGLIGIBLE"
}
]
}
],
"usage_metadata": {
"prompt_token_count": 2,
"candidates_token_count": 10,
"total_token_count": 12
}
}),
)
先ほどのAPIを実行したprintの部部を以下のように修正して返ってきたテキストを表示してみます。
print(res.text)
再度実行するとテキストが表示されます。
こんにちは! 何かお手伝いできることはありますか?
おつかれさまでした!
Discussion