Google Gemini 1.5 API の機能、特徴、価格と使い方

Google Gemini 1.5 API の機能、特徴、価格と使い方

こんにちは!(株)Qualiteg テックブログです!

【2024年7月2日更新版】

本日は Google Gemini 1.5 Pro/ Gemini 1.5 Flash モデルの特徴、価格、Pythonをつかったテキスト生成について解説いたします。

Google Gemini とは

Google Geminiは、Googleが提供する生成AIプラットフォームです。高品質なテキスト生成を行うためのAPIを提供し、さまざまなアプリケーションで自然な言語生成を利用できます。Geminiは多くの業界で使用されており、コンテンツ作成、カスタマーサポート、チャットボット、マーケティング、教育など、幅広い用途に対応しています。

APIキーの取得方法

Google Geminiを利用するためには、APIキーが必要です。以下の手順でAPIキーを取得できます。

Google AI Studio にアクセスして、手順にしたがい、Get API key でAPIキーを作成します。

https://aistudio.google.com/


生成されたAPIキーをコピーして、安全な場所に保存します。

パッケージのインストール

Google Gemini 用のPython用パッケージが PyPIに準備されていますので、以下でインストールしましょう。

pip install google-generativeai

モデルの種類と特徴

最新(2024/7時点)の言語モデルは Gemini 1.5 となっており、Gemini 1.5 Pro と Gemini 1.5 Flash の2つのモデルが利用可能です。

Gemini 1.5 Flash は Gemini 1.5 Pro よりも小型軽量のモデルで、1.5 Pro を蒸留して作られました。FlashはProに近づく性能を持ちつつ、価格は 1/10 である点が注目点ですね。高精度が要求されるタスクには Proを。コスパ重視なら、Flashという選択肢になるでしょう。

Gemini 1.5 Flash Gemini 1.5 Pro
処理速度 非常に高速(サブセカンドの応答) Flashより遅い
コスト効率 高コスパ Gemini 1.5 Flashより10倍高額
コンテキストウィンドウ 最大100万トークン 最大200万トークン
マルチモーダル能力 テキスト、画像、音声、動画を処理可能 テキスト、画像、音声、動画を処理可能
主な用途 高速を要求されるタスク一般 高精度を要求されるタスク一般
性能 Proより劣るものの、Gemini 1.0 Ultraと同等の性能がある。 Flashより若干高い
入力処理能力 1時間のビデオ、11時間のオーディオ 1時間のビデオ、11時間のオーディオ
アーキテクチャ Proからの上流により軽量化 より大規模なモデル

https://ai.google.dev/gemini-api/docs/models/gemini?hl=ja

価格

価格を以下にまとめました。

項目 入力価格 出力価格
Gemini 1.5 Flash
gemini-1.5-flash-001
$0.35
(128,000トークンまで)
$0.70
(128,000以降)
$1.05
(128,000トークンまで)
$2.10
(128,000以降)
Gemini 1.5 Pro
gemini-1.5-pro-001
$3.50
(128,000トークンまで)
$7.00
(128,000以降)
$10.50
(128,000トークンまで)
$21.00
(128,000以降)

価格の特徴は以下のようになります

  1. Gemini 1.5 FlashはGemini 1.5 Proと比較して、大幅に低価格です。
  2. 両モデルとも、128,000トークンを超えると価格が2倍になります。
  3. 出力価格は入力価格の3倍に設定されています。
  4. Gemini 1.5 Proは、Gemini 1.5 Flashの10倍の価格設定になっています。

これらの価格設定は、Gemini 1.5 Proがより高度な機能や性能を持つ一方で、Gemini 1.5 Flashが効率的で経済的な選択肢として位置付けられていることを示しています。ユーザーは、必要な機能と予算に応じて適切なモデルを選択できます。

Gemini-1.5 pro について
https://ai.google.dev/gemini-api/docs/models/gemini?hl=ja#gemini-1.5-pro

Gemini 1.5 Flash について
https://ai.google.dev/gemini-api/docs/models/gemini?hl=ja#gemini-1.5-flash-expandable

バージョン名と安定板

Geminiは以下のようなモデル名形式となります。

種類 説明 モデル名形式
最新 指定された世代とバリエーションの最新バージョン。基盤モデルは定期的に更新され、プレビュー版の場合もある。探索的テストやプロトタイプ用。 <model>-<generation>-<variation>-latest gemini-1.0-pro-latest
最新の安定版 指定された世代とバリエーションの最新の安定版。 <model>-<generation>-<variation> gemini-1.0-pro
安定版 特定の安定版モデル。変更されない。ほとんどの本番環境アプリで使用。 <model>-<generation>-<variation>-<version> gemini-1.0-pro-001

生成パラメータ一覧

以下のコードのように指定することのできる生成パラメータ一覧

# 生成AIのパラメータ設定
generation_config = {
    "max_output_tokens": 8192,  # 生成される最大トークン数を設定
    "temperature": 1,  # 生成の多様性を制御する温度パラメータを設定
    "top_p": 0.98,  # トークンの選択に使用する確率の閾値を設定
}
パラメータ名 説明
temperature 予測のランダム性を制御する 省略可: float
top_p 指定した場合、Nucleusサンプリングを使用する 省略可: float
top_k 指定した場合、トップKサンプリングを使用する 省略可: float
candidate_count 生成する候補の数 省略可: int
max_output_tokens メッセージごとに生成する出力トークンの最大数 省略可: int
stop_sequences 停止シーケンス 省略可: List[string]
presence_penalty 正のペナルティ 省略可: float
frequency_penalty 頻度のペナルティ 省略可: float

ソースコード

Pythonを用いて Google Gemini を呼び出してみましょう。

とくにGemini では、 SafetySettings を詳細に設定ができるため、その部分を手厚くソースコードに盛り込みました。

import google.generativeai as genai
from google.generativeai.types import HarmCategory, HarmBlockThreshold

API_KEY = "取得したキー"
genai.configure(api_key=API_KEY)

model_id = "gemini-1.5-flash-001"  # input 0.35/MTokens - output 1.05/MTokens

# モデル情報の初期化
model = genai.GenerativeModel(
    model_id,
)

# 生成AIのパラメータ設定
generation_config = {
    "max_output_tokens": 8192,
    "temperature": 1,
}
safety_settings = {
    HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # ハラスメントを含むコンテンツ
    HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # 悪意のある表現やコンテンツ
    HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # 性的描写が露骨なコンテンツ
    HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # 危険なコンテンツ
}

response = model.generate_content(
    ["""浅草のオススメスポットは?"""],
    generation_config=generation_config,
    safety_settings=safety_settings,
    stream=False,
)

print(response.text)

コード実行結果 例

浅草は、東京で最も古いエリアの一つで、歴史的な建造物、伝統的な文化、活気に満ちた雰囲気を楽しむことができます。おすすめのスポットはたくさんありますが、いくつか例を挙げますね!

定番スポット:

  • 浅草寺: 東京最古の寺院で、雷門、五重塔など見どころ満載です。境内でのおみくじやお守りの購入もおすすめです。
  • 仲見世通り: 浅草寺へ向かう参道にある、伝統的なお土産屋さんや食べ歩きのお店が立ち並ぶ賑やかな通りです。
  • 東京スカイツリー: 浅草から少し離れますが、展望台から浅草の街並みを一望できます。

ちょっとディープな浅草:

  • 浅草演芸ホール: 昔懐かしい寄席を楽しむことができます。
  • 浅草花やしき: レトロな遊園地で、大人も子供も楽しめます。
  • 隅田川: 舟遊びや屋形船で、風情ある景色を満喫できます。
  • 浅草文化観光センター: 浅草の歴史や文化について学べます。

美味しいもの:

  • 人形焼き: 浅草寺周辺には、様々な種類の人形焼きのお店があります。
  • 天ぷら: 揚げたての天ぷらは格別です。
  • 蕎麦: 老舗の蕎麦屋で、伝統的な蕎麦の味を堪能できます。
  • もんじゃ焼き: 熱々の鉄板で自分で焼きながら食べる、浅草名物です。

その他:

  • 浅草ROX: 映画館やレストランなどが入った複合施設です。
  • 浅草ビューホテル: 浅草寺やスカイツリーを一望できるホテルです。

時期によっておすすめも変わります:

  • 春: 桜の季節には、隅田川沿いが美しく、お花見を楽しむことができます。
  • 夏: 隅田川花火大会は、夏の風物詩です。
  • 秋: 紅葉シーズンには、浅草寺周辺が美しく色づきます。
  • 冬: 浅草寺では、年末年始のイベントが開催されます。

さらに、あなたの興味に合わせておすすめを提案できます。

  • 歴史に興味があるなら: 浅草寺、浅草文化観光センター、隅田川
  • 伝統芸能に興味があるなら: 浅草演芸ホール
  • ショッピングに興味があるなら: 仲見世通り、浅草ROX
  • グルメに興味があるなら: 人形焼き、天ぷら、蕎麦、もんじゃ焼き

ぜひ、あなたの興味に合わせて浅草を満喫してください!

SafetySettings の定義

Google Gemini APIのSafety Settingsは、AIモデルの出力を制御し、不適切なコンテンツを制限するための機能です。

本機能は安全で適切なAIコンテンツを生成する上で重要で、他のLLM APIにはまだ本格的に実装されていない機能です。

Safety Settingsでは、以下のカテゴリーに対して設定が可能です

指定できるカテゴリー一覧

列挙型
HARM_CATEGORY_UNSPECIFIED カテゴリが指定されていない
HARM_CATEGORY_HARASSMENT ハラスメントコンテンツ
HARM_CATEGORY_HATE_SPEECH 悪意のある表現やコンテンツ
HARM_CATEGORY_SEXUALLY_EXPLICIT 性的描写が露骨なコンテンツ
HARM_CATEGORY_DANGEROUS_CONTENT 危険なコンテンツ

指定できるフィルタリングレベル一覧

各カテゴリーに対して、以下の4段階のフィルタリングレベルを設定できます

  • HIGH(高)
  • MEDIUM(中)
  • LOW(低)
  • NEGLIGIBLE(無視できる程度)

APIは、コンテンツの危険性の確率に基づいてブロックを行います。

実際の値は以下のとおりです。

しきい値 概要 詳細
BLOCK_NONE ブロックなし 安全でないコンテンツが表示される可能性にかかわらず常に表示
BLOCK_ONLY_HIGH 少量をブロック 安全でないコンテンツである可能性が高い場合にブロック
BLOCK_MEDIUM_AND_ABOVE 一部をブロック 安全でないコンテンツが発生する可能性が中程度または高い場合にブロック
BLOCK_LOW_AND_ABOVE ほとんどをブロック 安全でないコンテンツが発生する可能性が低い、中程度、高い場合はブロック
HARM_BLOCK_THRESHOLD_UNSPECIFIED なし しきい値が指定されていない。デフォルトのしきい値を使用してブロック

当然ですが、一部の重大な危害(児童の安全を脅かすコンテンツなど)は常にブロックされ、調整はできません。SafetySettingをゆるくしても最低限の保護はかかるということですね。

ストリーミングで受信する方法

さきほどは、1回で結果を取得する方法をみましたが、今後はストリーミングで受信する方法をみてみましょう。

以下のように stream=True にするだけでストリーミング受信が可能です。


response = model.generate_content(
    ["""こんにちは"""],
    generation_config=generation_config,
    safety_settings=safety_settings,
    stream=True,
)
for chunk in response:
    print(chunk)

逐次ジェネレーター経由で受け取ったchunk は以下のような構造をしています

GenerateContentResponse(
    done=True,
    iterator=None,
    result=protos.GenerateContentResponse({
      "candidates": [
        {
          "content": {
            "parts": [
              {
                "text": "\u3053\u3093\u306b\u3061\u306f"
              }
            ],
            "role": "model"
          },
          "finish_reason": "STOP",
          "index": 0
        }
      ],
      "usage_metadata": {
        "prompt_token_count": 2,
        "candidates_token_count": 1,
        "total_token_count": 3
      }
    }),
)

この構造を踏まえて、chunkにある各種プロパティを取得してみましょう。

import google.generativeai as genai
from google.generativeai.types import HarmCategory, HarmBlockThreshold

API_KEY = "取得したAPIキー"
genai.configure(api_key=API_KEY)

model_id = "gemini-1.5-flash-001"  # input 0.35/MTokens - output 1.05/MTokens

# モデル情報の初期化
model = genai.GenerativeModel(
    model_id,
)

# 生成AIのパラメータ設定
generation_config = {
    "max_output_tokens": 8192,
    "temperature": 1,
}
safety_settings = {
    HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # ハラスメントを含むコンテンツ
    HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # 悪意のある表現やコンテンツ
    HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # 性的描写が露骨なコンテンツ
    HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,  # 危険なコンテンツ
}

response = model.generate_content(
    ["""こんにちは"""],
    generation_config=generation_config,
    safety_settings=safety_settings,
    stream=True,
)
for chunk in response:

    candidates = chunk.candidates
    usage_metadata = chunk.usage_metadata

    for candidate in candidates:
        content = candidate.content
        content_parts = content.parts
        role = content.role
        finish_reason = candidate.finish_reason
        index = candidate.index
        safety_ratings = candidate.safety_ratings

        for part in content_parts:
            text = part.text

            # 各プロパティを変数に格納
            candidate_content_text = text
            candidate_content_role = role
            candidate_finish_reason = finish_reason
            candidate_index = index
            candidate_safety_ratings = safety_ratings
            usage_prompt_token_count = usage_metadata.prompt_token_count
            usage_candidates_token_count = usage_metadata.candidates_token_count
            usage_total_token_count = usage_metadata.total_token_count

            # 変数の出力
            print(f"Text: {candidate_content_text}")
            print(f"Role: {candidate_content_role}")
            print(f"Finish Reason: {candidate_finish_reason}")
            print(f"Index: {candidate_index}")
            print(f"Safety Ratings: {candidate_safety_ratings}")
            print(f"Prompt Token Count: {usage_prompt_token_count}")
            print(f"Candidates Token Count: {usage_candidates_token_count}")
            print(f"Total Token Count: {usage_total_token_count}")
            print("----------")

上記コードを実行すると、以下のような出力結果が得られます。

Text: こんにちは
Role: model
Finish Reason: 1
Index: 0
Safety Ratings: []
Prompt Token Count: 2
Candidates Token Count: 1
Total Token Count: 3
----------
Text: ! 何かお手伝いできますか? 

Role: model
Finish Reason: 1
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
]
Prompt Token Count: 2
Candidates Token Count: 10
Total Token Count: 12
----------

その他の特徴

JSON形式レスポンスに対応

https://ai.google.dev/gemini-api/docs/api-overview?hl=ja#json

ファインチューニング

https://ai.google.dev/gemini-api/docs/model-tuning?hl=ja

コンテキストキャッシュ

https://ai.google.dev/gemini-api/docs/caching?hl=ja&lang=python

まとめ

いかがでしたでしょうか。Google の最新 LLM API である Gemini 1.5 についてその概要やソースコード実装方法についてみてきました。

(株)Qualiteg では Gemini API を利用した本格的なチャットボットや LLMサービスを超短納期で構築できる SDK,ツールキット「ChatStream」や、関連コンサルティングを提供しています。

商用LLMアプリケーション、サービス構築をご検討の折は、どうぞお気軽にこちらのお問い合わせフォームまでご連絡くださいませ。

LLMスポットコンサルご好評です

また、LLMサービス開発、市場環境、GPUテクノロジーなどビジネス面・技術面について1時間からカジュアルに利用できるスポットコンサルも実施しておりますのでご活用くださいませ。

(繁忙期、ご相談内容によっては、お受けできない場合がございますので、あらかじめご了承ください)

Read more

LLM学習の現実:GPU選びから学習コストまで徹底解説

LLM学習の現実:GPU選びから学習コストまで徹底解説

こんにちは! なぜOpenAIやAnthropicは世界最高水準のLLMを作れるのに、それに肩を並べる日本発のLLMは存在しないのでしょうか? 技術力の差でしょうか。それとも人材の問題でしょうか。 答えはもっとシンプルです。GPUの枚数とお金です。 今日はそんな 「LLMの学習」にフォーカスをあて、そのリアルについて徹底解説いたします! 1. はじめに 「LLMを自分で学習させてみたい」 そう思ったとき、最初にぶつかる壁がGPUの問題です。 どのGPUを何枚使えばいいのか。クラウドで借りるべきか、オンプレで買うべきか。そもそも個人や小規模チームでLLM学習は現実的なのか。 本記事では、こうした疑問に対して、具体的な数字と事例を交えながら答えていきます。 たとえばLLaMA 2の学習にはA100が2,048枚使われました。DeepSeek-V3は約8億円かかりました。では、あなたの手元のGPUでは何ができるのか。そこを明らかにしていきたいと思います。 対象読者は、LLM学習に興味があるエンジニアや研究者です。PyTorchでモデルを書いたことがある程度の知識を前提とし

By Qualiteg プロダクト開発部, Qualiteg 研究部
今からはじめるClaude Code

今からはじめるClaude Code

こんにちは! 今日は、最近エンジニアの間で話題になっているAIコーディングエージェント「Claude Code」について取り上げます。 AIによるコーディング支援ツールはここ1〜2年で一気に増え、「結局どれを選べばいいのか分からない」と感じている方も多いのではないでしょうか。本記事では、そうした中でClaude Codeを実際に使ってみた所感と、Windows環境での導入・運用の考え方を整理していきます。 AIコーディングツール、どれを使う? 2025年は、AIコーディング支援が一気に“実用品”になり、選択肢が増えすぎて迷いやすい年になりました。 GitHub Copilot、Cursor、Windsurf、Devin、Aider、Cline、OpenHandsなど、商用からオープンソースまで含めると、軽く20種類を超えます。 機能や思想が似ているものも多く、情報を追うだけで疲れてしまう、という方も少なくないと思います。 以前、当社ブログでは「AIコーディングエージェント20選」で全体像を整理しました。 AIコーディングエージェント20選!現状と未来への展望 【第1回】

By Qualiteg プロダクト開発部, Qualiteg コンサルティング
日本語対応 LLMランキング2025 ~ベンチマーク分析レポート~(12月18日版)

日本語対応 LLMランキング2025 ~ベンチマーク分析レポート~(12月18日版)

はじめに 本レポートは、Nejumi Leaderboard 4のベンチマークデータ(2025/12/18版)に基づいて、日本語対応LLMの性能を総合的に分析したものです。 前回は 2025/10/12 版の分析レポートを公開しましたが、たった2か月で劇的な変化がありました! (定期的に最新LLMランキングを更新してまいります。当社のX(旧Twitter)をフォローいただくことで更新情報を受け取り可能です) Nejumi Leaderboard 4は、日本語タスクにおけるLLMの性能を多角的に評価する信頼性の高いベンチマークとして知られています。 本分析では、商用APIモデルとオープンモデルの両方を対象に、それぞれの特徴や傾向を詳しく見ていきます。 オープンソースモデルについて Weightがオープンなモデルは場合によっては「オープンソースモデル」、「OSSモデル」と呼ばれますが、モデルによっては「オープンソース」と呼ぶには不十分な場合があるため本稿では、「オープンソースモデル」ではなく「オープンモデル」と表現しています。 ベンチマーク分析について 本レポートは、

By Qualiteg コンサルティング, Qualiteg プロダクト開発部
AIコーディングエージェント20選!現状と未来への展望 【第1回】全体像と基礎

AIコーディングエージェント20選!現状と未来への展望 【第1回】全体像と基礎

こんにちは! 今回は、20種類以上あるまさに百花繚乱なAIコーディングツールを一挙に紹介&解説していきたいとおもいます! AIをつかったコーディングはもはや常識となり、日々目まぐるしく新しいツールが登場しています。当社でも自社開発のAIコーディングツールをふくめ複数のツールを活用してソフトウェア開発をすすめていますが、次々とナイスなツールがでてきて興奮しつつも、正直キャッチアップが追いつかない…!という状況です。 「結局どれを使えばいいの?」「Claude CodeとCursorって何が違うの?」「オープンソースでも使えるやつあるの?」——そんな疑問を持っている方も多いのではないでしょうか。 そこで本シリーズでは、2025年12月時点でのAIコーディングツールを徹底的に整理してみました。商用サービスからオープンソースまで、20以上のツールを比較しながら、それぞれの特徴や使いどころ、そして現時点での限界についても現場視点をいれながら正直にお伝えしていければとおもいます ※「AIコーディングツール」は「コーディングエージェント」といったほうが今風なので記事内ではコーディングエー

By Qualiteg コンサルティング