Gemini 2.0 Flash API の使用方法を、実装しながら解説
「Gemini 2.0 flash」のAPIでの使い方について、Google Colaboratory で実装しながら解説します。
以前の「Gemini 1.5」とは利用ライブラリなどが異なるため、その点も踏まえて解説します。
記事の最後では、実際にアプリケーション(AI-Agentもどき)に導入するアーキテクチャについても簡単に紹介いたします。
本記事では最初に「Gemini 2.0 Flash」で動作させるための「設定系」について解説します。
その後、会話を1回実行する場合、会話を往復させる場合、そして会話履歴の続きから会話させる場合について、それぞれ実装しながら解説します。
本記事で紹介する実装コード(Google ColaboratoryのNotebook)は以下のリポジトリに置いています。
link: Gemini_2_Yutaro_Ogawa_20250114.ipynb
本記事の目次です
-
Google Colaboratory上で動くものを作成
1.1 概要
1.2 ライブラリのインストール
1.3 GeminiのClientを作成
1.4 Gemini使用に際する各種設定を実施
1.4.1 model_idの指定
1.4.2 コンテンツセーフティの設定
1.4.3 システムプロンプトの設定
1.5 会話を1回実行する場合
1.6 会話を往復させる場合
1.7 会話履歴の続きから会話させる場合 -
「Gemini 2.0」をAI-Agent(もどき)に実装する
2.1 Chat部分のアーキテクチャ構成図
2.2 動作の様子・動画
2.3 実装技術の簡易解説
2.4 Python系のマネジメントツール周りについて -
さいごに
1. Google Colaboratory上で動くものを作成
1.1 概要
本記事の前半では、「Gemini 2.0 Flash」をAPI利用し、Google Colaboratory上で動作するように実装します。
なお本記事の執筆に際しては「npaka様」および「クラスメソッド石川様」のブログを参考にさせていただきました。
- 「Google Colab で Gemini 2.0 の Multimodal Live API を試す」 [link]
- 「Gemini 2.0 Flash Live API (試験運用版)を使ってAIと日本語で会話してみた」 [link]
1.2 ライブラリのインストール
最初にライブラリ(パッケージ)として、「Google Gen AI SDK」[pypi_link] をインストールします。
似た名前のパッケージが多いので注意です。「google-genai」 です。2024年12月18日にリリースされたばかりになります。
2025年1月21日現在のバージョンは「0.5.0」です。
以下のコマンドにて、ライブラリ(パッケージ)をインストールします。
!pip install google-genai==0.5.0
1.3 GeminiのClientを作成
「Gemini 2.0 Flash」を使用する方法は、以下に示すように、大きく4通りです。
本記事の前半では【2】を、後半では【4】を使用します。
【1】GUI画面で操作:ChatGPTのGUIアプリと似た感じです
link: https://gemini.google.com/
link: https://aistudio.google.com/
【2】API-Key を取得して使用:クラウド環境として「Google Cloud」を使用しないプロジェクトなど、単独でGeminiを使用する場合。「Google AI Studio」からAPIキーを取得します
link: https://aistudio.google.com/app/apikey
【3】「Google Cloud」の「Vertex AI」プロジェクトを認証させる方法:「Google Cloud」を使用しているプロジェクトで、ひとまず「Vertex AI」経由で認証させたい場合(手作業でのログイン操作になります)
【4】「Google Cloud」の「Vertex AI」のUser権限をサービスアカウントに権限を与える方法:「Google Cloud」の別サービス(本記事の後半ですと、「Cloud Run Function」)にサービスアカウントを作成して紐づけ、そのサービスアカウントに「Vertex AI」のユーザー権限を与える方法。本番環境ではこの手法が一番多いかと思います
今回は、上記のうち、【2】API-Key を取得して使用、を行いたいです。
そこで、「Google AI Studio」からAPIキーを取得し、それをNotebookに張り付けてください(※本記事は ”簡易実装版” なのでAPIキーを直書きしていますが、本来はSecretとして安全に利用してください)。
link: https://aistudio.google.com/app/apikey
実装
from google import genai
# [1] APIキーの設定
os.environ['GOOGLE_API_KEY'] = "hogehoge" # こちらに取得したAPIキーを入力してください
# [2] clientのインスタンス化
client = genai.Client(api_key=os.environ.get('GOOGLE_API_KEY'))
1.4 Gemini使用に際する各種設定を実施
1.4.1 model_idの指定
最初に使用するモデルを指定します。今回は「Gemini 2.0 Flash」の「実験バージョン」になります。
model_id = 'gemini-2.0-flash-exp'
1.4.2 コンテンツセーフティの設定
続いて、非常に重要な内容である 「コンテンツセーフティの設定」 を行います。
コンテンツセーフティ設定により、相応しくない生成をさせないように制御をかけます。
より詳細は、以下の画像とリンク先をご覧ください。
link: https://ai.google.dev/gemini-api/docs/safety-settings
今回は、「ほとんどをブロック」してくれる、一番制限が厳しいセーフティで実装します。
from google.genai import types
my_safety_settings = [types.SafetySetting(
category="HARM_CATEGORY_HATE_SPEECH",
threshold="BLOCK_LOW_AND_ABOVE"
), types.SafetySetting(
category="HARM_CATEGORY_DANGEROUS_CONTENT",
threshold="BLOCK_LOW_AND_ABOVE"
), types.SafetySetting(
category="HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold="BLOCK_LOW_AND_ABOVE"
), types.SafetySetting(
category="HARM_CATEGORY_HARASSMENT",
threshold="BLOCK_LOW_AND_ABOVE"
)]
1.4.3 システムプロンプトの設定
システムプロンプト(システムインストラクション)のプロンプトを記入します。
のちほど、この変数system_instruction
を使用します。
system_instruction = """
あなたはユーザーを助けるAgentです。
あなたの名前はHAROです。
"""
1.4.4 設定内容をGenerateContentConfigにまとめる
最後にここまでの設定内容と、その他の設定内容を「GenerateContentConfig」に設定します。
my_generate_content_config = types.GenerateContentConfig(
temperature=0.1,
top_p=0.95,
max_output_tokens=2048,
response_modalities=["TEXT"],
safety_settings=my_safety_settings, # [1-4-2] で設定
system_instruction=[types.Part.from_text(
system_instruction)], # [1-4-3] で設定
)
以上で Gemini 2.0 Flash の使用前の設定が完了です。
1.5 会話を1回実行する場合
最初にこちらから1回だけ会話を送り、回答を取得するケースを実装します。
はじめに会話内容を作成します。
from google.genai.types import (
Content,
Part,
)
input_text = "あなたのお名前は?"
my_contents = [Content(role="user", parts=[Part.from_text(input_text)])]
上記の内容を送って、回答を取得します。
response = client.models.generate_content(
model=model_id, # [1-4-1] で設定
contents=my_contents,
config=my_generate_content_config # [1-4-4]で設定をまとめた
)
print(response.text)
実行結果は以下のようになります。システムプロンプトで与えた自分の名前である、「HARO」ときちんと答えているのが確認できます。
1.6 会話を往復させる場合
続いて会話を何往復もさせるケースの実装を解説します。
この場合は、「client.chats
」を利用します。
最初の会話でこちらの名前を教えます。
そして次の会話で名前を憶えているか(会話履歴を保持しているか)を確認します。
実装
input_text = "私の名前は小川雄太郎です。"
chat = client.chats.create(
model=model_id, # [1-4-1] で設定
config=my_generate_content_config # [1-4-4]で設定をまとめた
)
response = chat.send_message(input_text)
print(response.text)
1回目の会話を往復した回答結果は以下のようになっています。
続いて、1回目の会話を覚えているか(きちんと何往復もできるか)を確認します。
# 会話の履歴が残っているかチェック
response = chat.send_message("あれ、私の名前はなんでしたっけ")
print(response.text)
実行結果は以下の通りです。最初の会話で送ったこちらの名前を保持しており、会話が往復できています。
【会話履歴を取得したい場合】
会話を往復させていたり、ステートレスでこれまでの会話の履歴を利用する場合などは、以前(Gemini 1.5)であれば、chat.history
で取得できた(ような気がするのですが)、通りません。
「Gemini 2.0」(google-genaiライブラリ)の場合は、chat._curated_history
で無理やり取りに行きます(内部変数にアクセスするのは美しくないのですが…)
以下、動作の様子です。
1.7 会話履歴の続きから会話させる場合
本章の最後です。
ステートレスにAPI利用使用する場合は会話履歴も送り、その続きの会話を取得する必要があります。
そこで会話履歴を作成し、その続きの返答を取得するケースを実装します。
# 履歴をhistoryとして作成
my_history = [
Content(role="user", parts=[Part.from_text("私の好きな食べ物はみかんです。")]),
Content(role="model", parts=[Part.from_text("そうなんですか。私はリンゴが好きです")]),
]
新しい「Chat」インスタンスを作成します。ここに上記のmy_history
を与えます。
chat2 = client.chats.create(
model=model_id, # [1-4-1] で設定
config=my_generate_content_config, # [1-4-4]で設定をまとめた
history=my_history # 上記の作成した会話履歴です
)
この履歴の続きで返答を取得します。なお上記の会話履歴は「私はみかん、Geminiはリンゴが好き」という設定でした。
# 会話の履歴が残っているかチェック
response = chat2.send_message("あれ、私の好きな食べ物はなんでしたっけ")
print(response.text)
response = chat2.send_message("あなたの好きな食べ物は?")
print(response.text)
実行結果は以下の通りです。きちんと history の続きから会話ができていることが確認できました。
以上、第1章では、Google Colaboratory上で「Gemini 2.0 Flash」をAPI利用で「単独」で動くように実装し、3種類のケースでの使用方法を確認しました。
なお「Gemini 2.0」はLLM(Large Language Model)でもありますが、マルチモーダルに画像や音声・動画などを扱えるLMM(Large Multimodal Model)です。
本記事ではテキスト以外の扱いは解説はいたしませんが、その他のモーダルの利用や、「thinking mode」 などの使用方法については、公式のDocsに加え、以下のGoogle公式の「サンプルNotebook」が分かりやすく、おすすめです。
- 公式Doc: https://ai.google.dev/gemini-api/docs/models/gemini-v2
- APIリファレンス: https://googleapis.github.io/python-genai/
- notebook_samples: https://github.com/GoogleCloudPlatform/generative-ai/tree/main/gemini/getting-started
notebook_samplesに置いてある、「intro_gemini_2_0_flash.ipynb」、「intro_gemini_2_0_flash_rest_api.ipynb」、「intro_gemini_2_0_flash_thinking_mode.ipynb」あたりがおすすめです
以上、本記事の第1章は終了です。
第1章で解説・実装したコード(Google ColaboratoryのNotebook)を以下のリポジトリに置いています。
link: Gemini_2_Yutaro_Ogawa_20250114.ipynb
2. 「Gemini 2.0」を AI-Agent(もどき)に実装する
執筆者が普段から使用している「AI-Agent(もどき)」の、 全体像・アーキテクチャ概要・技術概要 は、以下の記事の第4章で解説しています。
link: AI系の情報収集手法を紹介(ビジネス・開発・研究)【2025年版】
本記事では「Gemini 2.0 Flash」を使用した会話部分のみを紹介します。
2.1 Chat部分のアーキテクチャ構成図
本記事で対象としている、「Gemini 2.0」とのChat部分のおおまかな「アーキテクチャ構成図(的なもの)」は、以下となります。
最初に「Cloud Run Function」にアクセスし、「Cloud Run Function」が「Vertex AI」の「Gemini 2.0 Flash」とやりとりします。
Google Cloud内で完結するので「1.3節」で紹介しました、
【4】「Google Cloud」の「Vertex AI」のUser権限をサービスアカウントに権限を与える方法
を使用しています。
UI部分はReact.jsで作成し、APIアクセスでGeminiとの会話のやりとりを送信・取得して、画面更新しています。
2.2 動作の様子・動画
以下にAI-Agent(もどき)「Gemini 2.0 Flash」と会話している様子を画像と動画で紹介します。
【動画】(最高画質で視聴する場合は、再生時に画質:1080pに設定してください)
2.3 実装技術の簡易解説
Agentとの会話UIコンポーネントの実装には、「chat-ui-kit-react」を使用し、SCSSでChatGPTのような雰囲気の「UI・UX」になるようにデザインを調整しています。
Agentの発言がカタカタとストリーム処理で描画されている部分は、実際はストリーム処理ではなく、一括で取得した発言内容をReact.jsで少しずつ描画しています。
また、文字レベルではなく、HTMLレベルでストリーム処理のように表示させています。
そのための手順として、Gemini からの response の Markdown形式のテキストを、「markdown-it」ライブラリで「HTML形式」に変換し、そのHTML要素を少しずつ描画しています。
今回の実装では、「markdown-it」でDOM単位でコードブロックを検索・抽出し、「React Syntax Highlighter」ライブラリでコード部分にハイライトの配色を加え、そのうえで「dangerouslySetInnerHTML」で出力しています。
2.4 Python系のマネジメントツール周りについて
プロダクト開発においては、「フロントエンド」と「バックエンド」の両方のマネジメントは大変です(本記事のAI-Agentもどきは、個人開発であって商用プロダクトではないですが)。
フロントエンド側のNode.jsは 「npm」 で、React.jsやその他ライブラリのバージョンを管理しています。
問題はバックエンド(正確にはGoogle Cloud Run関数にdeployするPythonプログラムたち)のローカルでの開発方法と開発体制の管理です。
Pythonでの開発時には、依存関係やその他の管理のためのマネジメントツールが非常に多岐にわたり、かつ複数サービスを同時に使用する必要がありました。
例えば、pip(パッケージマネジャー)+ pip-tools(ロックファイル管理) + venv(仮想環境管理) + pyenv(Python自体のバージョン管理)、のような使用方法でした。
備考:Pythonでの開発時の管理ツールたち
- pip: パッケージ(ライブラリ) マネジャー
- requirements.txt: パッケージのロックファイル(ライブラリ固定)
- pip-tools: ロックファイルの管理
- venv:仮想環境を管理
- pyenv: Python自体のバージョン管理
- poetry:オールインワンツール。pyproject.tomlで管理
- uv: オールインワンツールかつ、Python自体のバージョンも管理
- Conda系:オールインワンツール。商用利用時に注意が必要
- その他(Pixi、Manba、mise、PDMなどもありますね)
ここ最近は 「uv」 が非常に安定し、日本語情報も増えてきたため、今回は「uv」のみで開発マネジメントを実施してみました。
Pythonでの開発時の管理ツール群の紹介と選定判断に関しては、以下の記事が詳しくおすすめです。
3. さいごに
以上、「Gemini 2.0 flash」のAPIでの使用方法について、Google Colaboratory で実装しながら解説いたしました。
また、記事の後半では、実際にアプリケーション(AI-Agentもどき)に導入する際の、アーキテクチャや技術概要について簡単に紹介しました。
読者のみなさまにとって、「Gemini 2.0」を利用したLLMプロダクト構築などの参考になる点がございましたら、欣幸の至りです。
長文を一読いただき、誠にありがとうございました。
小川 雄太郎
株式会社松尾研究所 シニア・リサーチャー。「知能を創る」PJTに従事
Discussion