JP / EN

広告
2024/08/01

PythonからGemini APIを叩く:requestsを使うのが簡単

タグ:python

ChatGPTシリーズを皮切りに大流行中の対話AIがで大流行中である。 Web UIから触ってみるだけでも十分楽しいのだが、プログラマとしては OpenAI APIは今のことろ有料版しか用意されていないが、なんと Google製のGeminiには無料利用枠が存在する(2024/08/01現在)。 タダなら使わない手はない、ということでありがたくこれを使わせていただいた。

まずはコマンドラインベースでGeminiの動作確認をする。 Google AIスタジオ でUIをぽちぽちしてAPIキーを取得したあとシェルで
  $ curl -H 'Content-Type: application/json' \
  -d '{"contents":[{"parts":[{"text":"こんにちは、あなたはAIですか"}]}]}' \
  -X POST 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=[YOUR_API_KEY]'

  {
    "candidates": [
      {
        "content": {
          "parts": [
            {
              "text": "私はGoogleによってトレーニングされた、大規模言語モデルです。"
            }
          ],
          "role": "model"
        },
        "finishReason": "STOP",
        "index": 0,
        "safetyRatings": [
          {
            "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"
          }
        ]
      }
    ],
    "usageMetadata": {
      "promptTokenCount": 5,
      "candidatesTokenCount": 12,
      "totalTokenCount": 17
    }
  }
  
のようにすると確かに応答が返ってくるではないか。


既存システムとのインテグレートのためにPythonから使う方法を調べたところ、 なぜか公式には Google Cloud CLIをインストールしたうえでVertex AI SDK for Pythonを セットアップする というややこしい方法が案内されている。 これ上のcurlベースの簡単な方法を見た後では、大げさすぎるように感じてしまう。 無料枠なのでこれでGCPを使うほうにユーザを誘導しようという思惑なのかもしれないが(笑)そうはいかない。 CurlでAPIキーさえあれば応答をとれることがこっちはわかっているので、 Pythonからでもcurlと同様にrequestsパッケージを使ってクエリをPOSTしてしまうこととした。

なおこのスクリプトを実行するにはrequestsのpip installがあらかじめ必要である。
import json
import requests

api_key = "ここにkeyを書いてね"
api_url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key={api_key}"


data = {
    "contents": [
        {"parts": [
            {"text": "こんにちは、日本語テスト"}
        ]}
    ]
}
json_data = json.dumps(data).encode("utf-8")
response = requests.post(
    api_url,
    data=json_data,
    headers={"Content-Type": "application/json"}
)
print(response)
print(response.text)

resdata = json.loads(response.text)
print(resdata["candidates"][0])
  
のようにすると無事Google関係の面倒なパッケージをインストールせずに(今のところ)無料で Gemini APIをpythonから叩ける。 本当にAIに有料APIを使うほどの価値があるのか半信半疑である人は、これでまずは無料で遊んでみるのもよいだろう。

おすすめ記事

Flaskサーバを外部公開~外から接続できないときのチェックポイント

NumPy np.clip: arrayの値の範囲を指定した最大値・最小値に合わせて丸める

HuggingFaceモデルをローカルにダウンロード・シンボリックリンクを無効にする



このエントリーをはてなブックマークに追加

https://wonderhorn.net/