0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Gen AI SDK(Python版)を試す: Gemini 2.0 Flash + JSON出力(structured output)

Posted at

はじめに

先月、以下の記事を書く際などに試した「Gemini 2.0 Flash」の話です。

概要

以下にあるような新機能ではなく、旧来の API でも使えていた「JSON出力(structured output)」を試しました。

●The next chapter of the Gemini era for developers - Google Developers Blog
 https://developers.googleblog.com/en/the-next-chapter-of-the-gemini-era-for-developers/

実装に用いたもの

実装には、Python版の Google Gen AI SDK を使ってみることにします。

今回の記事を書いたきっかけ

今回の記事を書いたきっかけは、はてブ経由で見かけた以下の記事で「Google Gen AI SDK」の話題を見かけたことです。

●Gemini2.0とStreamlitでお手軽なグラウンディング搭載の生成アプリ作成|masa_kazama
 https://note.com/masa_kazama/n/n8eff1a4be1da

2025-01-06_00-26-04.jpg

上記の内容を見かけ、記事で書かれた内容も試してみたいと思ったところですが、それ以外にも今回の「Google Gen AI SDK」のお試しもシンプルにやってみたくなりました。

●Google Gen AI SDKs  |  Generative AI on Vertex AI  |  Google Cloud
 https://cloud.google.com/vertex-ai/generative-ai/docs/sdks/overview

実際に試していく

ここから実際に試していきます。

元にする情報

その際に元にする情報は、主に以下の公式ドキュメントです。

●Google Gen AI SDK documentation
 https://googleapis.github.io/python-genai/

2025-01-06_00-29-17.jpg

仮想環境を用意して準備

今回、venv を使った仮想環境の中でやっていきます。

まずは、仮想環境の作成です(※ アクティベートの部分に関わるところで、今回の環境は Mac を使っています)。

python -m venv myenv
source myenv/bin/activate

さらに以下のコマンドで、Python版 の Google Gen AI SDK を使えるようにします。

pip install google-genai

環境変数を使う

今回、APIキーは環境変数として設定します。
以下、公式の参考情報です。

●Get a Gemini API key  |  Google AI for Developers
 https://ai.google.dev/gemini-api/docs/api-key#macos---zsh

とりあえず今回は一時的に使えれば良いので、永続化する形にはせず以下のコマンドで利用時のみ使えるようにしました。

export GEMINI_API_KEY=【自分の Gemini のAPIキー】

実装: 簡単なお試し

次は実装関連の話で、まずは簡単なお試しを行います。

Google AI API

今回、Vertex AI API ではなく Google AI API のほうを使っています。

ちなみに上で掲載した記事でも書かれていたように、「Google Gen AI SDK」を使う場合は「Vertex AI API」「Google AI API」のどちらを使う場合でも、以下の部分以外は共通化できるようです。

# Only run this block for Google AI API
client = genai.Client(api_key='YOUR_API_KEY')
# Only run this block for Vertex AI API
client = genai.Client(
    vertexai=True, project='your-project-id', location='us-central1'
)

簡単なお試しのためのコード

公式ドキュメントを見つつ、お試し用のコードは以下としました。

from google import genai
import os

client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))

response = client.models.generate_content(
    model='gemini-2.0-flash-exp', contents='あなたは誰?'
)
print(response.text)

それを試した結果は下記で、レスポンスを得られたことが確認できました。

2025-01-06_02-40-00.jpg

ここから、JSON での出力を試していきます。

実装: JSON出力(structured output)

JSON での出力を行うコードは、以下の公式情報を参考に作っていきます。

具体的には、以下の内容としました。
出力してもらう内容は、適当に決めたものですが「四国4県の県名と県庁所在地のセット」を返してもらうようにしてみました。

from google import genai
import os

client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))

response = client.models.generate_content(
    model='gemini-2.0-flash-exp',
    contents='日本の都道府県の情報をください。四国4県分を対象に。',
    config={
        'response_mime_type': 'application/json',
        'response_schema': {
            'type': 'ARRAY',
            "items": {
                'required': [
                    '名前',
                    '県庁所在地',
                ],
                'properties': {
                    '名前': {'type': 'STRING'},
                    '県庁所在地': {'type': 'STRING'},
                },
                'type': 'OBJECT',
            }
        },
    },
)

print(response.text)

上記を実行した結果は以下のとおりです。

image.png

無事、想定通りの結果を得ることができました。

余談

以下は、Gemini関連で自分が気になったものの雑多なメモです。

「2D spatial understanding」「Pointing and 3D Spatial Understanding」は、Web の GUI では試したのですが、API経由で使うパターンも試せればと思っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?