🚀

Gemini APIをローカル環境のPythonから実行するまで

2024/07/24に公開

ChatGPTのAPIを勉強で使いたかったのですが無料枠が終わっていました。

そこで無料枠のあるGemini APIを今回使うことにしました。

Gemini Flashの無料枠でできること

https://ai.google.dev/pricing?hl=ja

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プロジェクトが必要です。

https://cloud.google.com/?hl=ja

私は新たにGCPプロジェクトを作成して課金を無効にして、そのプロジェクトを使うようにしました。

https://qiita.com/owayo/items/8b4cb63b35b84a343054

GCPのコンソールにログインしてプロジェクトを作成します。

プロジェクトを作成したらお支払いのページへ進みます。

課金を無効にします。

もう一度お支払いページを開いて以下のように表示されれば課金は無効になっています。

Google AI StudioでAPIを有効にする

Google AI Studioにアクセスします。
https://aistudio.google.com/

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