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モデルをローカルにダウンロード・シンボリックリンクを無効にする