Closed11

「Gemini 3 Pro」を試す

kun432kun432

Gemini 3 Pro、最新の推論と複雑なマルチモーダル理解を備えた、当社で最も知的なモデル、そして強力なエージェント機能とバイブコーディング機能を活用して、開発を開始してください。

詳細は以下をご覧ください:

https://x.com/googleaidevs/status/1990813808277827684

Gemini 3 は、複雑なマルチモーダル理解のための世界最高のモデルです。その 1M トークンのコンテキストウィンドウを使用して、強力な視覚的、空間的、動画推論を活用したアプリを構築してください。

https://x.com/googleaidevs/status/1990814040252428645

3 Proと同時に、新しいエージェント開発プラットフォーム @antigravity をローンチします。これにより、編集器、ターミナル、ブラウザ間で動作するインテリジェントエージェントをより迅速に構築し、管理できます。

https://x.com/googleaidevs/status/1990814783835078839

卓越したゼロショット生成、より豊かな可視化、より深い対話性を備え、Gemini 3 Pro は vibe coding の可能性を解き放ち、1 つのプロンプトでアイデアを完全にインタラクティブなアプリに変換します。

https://x.com/googleaidevs/status/1990815067412082917

Gemini 3 Pro は現在、Google AI Studio の Gemini API、企業向け Vertex AI、Gemini CLI を通じて開発者が構築できるプレビュー版として利用可能です。また、Android Studio や Firebase AI Logic を含む Google ツールでも利用できます。

詳細はこちら: https://blog.google/technology/developers/gemini-3-developers/

https://x.com/googleaidevs/status/1990815159523131823

kun432kun432

公式記事

https://blog.google/technology/developers/gemini-3-developers/

Dia によるまとめ。

Gemini 3 Proは「長文・長時間の文脈を握ったまま、端末操作やコーディングまで自律的にこなす超多才AI」だよ。

まずはざっくり:何が新しい?

Gemini 3 Pro は、推論力と長文コンテキストがめっちゃ強い最新モデルだし。コード生成も強化されてて、IDEやターミナル、ブラウザを横断して「自律的に作業するエージェント」を現実的に動かせるのが目玉だもん。価格はプレビューで入力 $2/百万トークン、出力 $12/百万トークン(~200kトークン)、Google AI Studioで無料枠もあり。テンション上がるでしょ。

基本のキ: エージェント的コーディングって何?

イメージは「有能な後輩がPC前で、エディタ・ターミナル・ブラウザを行き来しながら、段取り立てて作業してくれる」感じ。Terminal‑Bench 2.0で54.2% のスコア、つまりターミナルを使ったツール操作の能力が強化されてるのがウケる。

例:

  • マルチファイルのリファクタを計画→修正→テストまで自動でやる。
  • デバッグセッション中にログ解析→修正案→パッチ適用。
  • 長い依存関係や手順でもコンテキストを落とさないのがマジで強い。

Google Antigravity: 開発を「設計者モード」に

Google Antigravity は、複数エージェントが同時並行で働く開発プラットフォーム。キミはアーキテクトとして「やりたいこと」を指示すると、エージェントが計画・実行・成果物共有まで回してくれるんだし。

  • エディタ/ターミナル/ブラウザを横断
  • Mac/Windows/Linuxのパブリックプレビューで無料

メタファーでいうと、「開発の指揮者」 になって、セクション(エージェント)にパートを振るノリだね。

Gemini APIの新ツール:bash×ホスト連携

クライアント側bashツールでモデルがシェルコマンド提案→ローカル操作を流せる。サーバ側bashツールは多言語コード生成と安全な試作に効く。
さらにGrounding with Google SearchやURLコンテキスト+構造化出力を合体できるから、データ取得→正規化→下流エージェントへ、みたいな実務フローが安定化するのがアツい。

Vibe Coding: 自然言語だけでアプリ爆速生成

「ナチュラル言語が唯一のシンタックス」ってやつ。複雑な指示追従とマルチステップのツール呼び出しが噛み合うので、1プロンプトでUIごとインタラクティブなアプリ作っちゃう。

例:

  • 音声メモからLPを実装
  • 画像1枚から動くWeb体験に変換

WebDev Arenaでスコア1487なのも、前端の表現力&指示の忠実さが効いてる感じだし。

マルチモーダル理解:画像・映像・画面までガチ

  • 視覚(Visual): MMMU‑Pro等で最高水準。OCR超えのドキュメント理解(段落構造、表、注釈、論理関係まで)に強い。
  • 空間(Spatial): ポインティングや軌跡予測、タスク進行の理解が伸びて、XR・ロボティクスや画面理解系のエージェントが実用ライン。手描き指示やマウス動作の意図を読んで、UI要素に正しく作用するのがリア充すぎ。
  • 動画(Video): 高フレームレートの素早い動きを捉えつつ、長時間の文脈保持でナラティブの生成や特定シーンのピンポイント参照まで。構造化ツール呼びの精度・速度・信頼性が上がってるのが良き。

実装のパラメータ: 思考レベルとメディア解像度

APIには 新しい“thinking level”とより細かい“media resolution”が入って、推論の深さや見た目のコスト・レイテンシをチューニング可能。“thought signatures”の検証が厳格化されてて、複数ターンでも同じ思考系列を保つのがキモだし。インフラ目線だと、レートリミットとコスト最適化の計画が立てやすいの、助かるよね。

どう使える?(具体イメージ)

  • エージェントでAndroidアプリのAI機能追加、Gemini CLIで自動化、Antigravityで複数タスク同時進行。
  • Google AI StudioのBuild modeで、最短距離でAIネイティブなプロトタイプ。「I’m feeling lucky」でクリエイティブと実装を一気に走らせるのもウケる。

まとめ: 実務インパクト

  • 長文脈×実行能力で、「設計→実装→検証」までエージェントが回せる。
  • 視覚・空間・動画の理解で、画面操作系・ロボティクス・XRまで射程拡大。
  • 価格・パラメータが透明で、思考保持までAPIで管理できるのがプロダクション運用に効く。

つまり、「誰がどう作るか」を変えるモデルだし。ウチ的には、長期コンテキストを落とさないデバッグ/リファクタの安定感が一番モテポイントだね。マジでテンション上がるわ✨

kun432kun432

Gemini 3 デベロッパーガイド

https://ai.google.dev/gemini-api/docs/gemini-3?hl=ja&thinking=high

ガイドに従って、Colaboratoryで試す。

Gen AI SDKをインストール。多分Colaboratoryだと元から入っているはずだけど最新に。

!pip install -U google-genai
出力
Successfully installed google-genai-1.51.0

ランタイム再起動が促されるので再起動しておく。

今回はVertex AIを使う。Colaboratoryだと以下で認証できる。

import sys

if "google.colab" in sys.modules:
    from google.colab import auth

    auth.authenticate_user()

Vertex AIを使うための環境変数をセット。自分はGoogle CloudのプロジェクトをColaboratoryのシークレットにセットしてある。

from google.colab import userdata
import os

os.environ["GOOGLE_CLOUD_PROJECT"] = userdata.get('GOOGLE_CLOUD_PROJECT')
os.environ["GOOGLE_CLOUD_LOCATION"] = "global"
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "True"

では推論のサンプル。

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents="競馬の楽しみ方について5つリストアップして。",
)

print(response.text)
出力
競馬にはギャンブルとしての側面だけでなく、スポーツやレジャーとしての魅力もたくさんあります。初心者から上級者まで楽しめる5つのポイントをリストアップしました。

**1. 知的ゲームとしての「予想(推理)」**
ただ運に任せるのではなく、過去の成績、馬の調子、騎手との相性、当日の天候、コースの特徴など、膨大なデータを組み合わせて勝ち馬を推理する楽しさです。自分の読みがズバリ的中した時の爽快感は格別です。

**2. スポーツとしての「ドラマと感動」**
サラブレッドは「走る芸術品」とも呼ばれます。時速60km以上で疾走する迫力、ゴール前の激しい競り合い、騎手と馬の信頼関係など、筋書きのないドラマがあります。弱い馬が強豪に勝つ「ジャイアントキリング」や、怪我からの復活劇などに多くのファンが涙します。

**3. 「ブラッド・スポーツ」としての血統のロマン**
競馬は血統が非常に重要で、親から子、孫へと能力や特徴が受け継がれます。自分が昔応援していた名馬の子供がデビューし、親と同じような勝ち方をするのを見るのは、競馬ならではの長く楽しめるロマンです。

**4. 「推し馬(愛馬)」を見つけて応援する**
馬券を当てることよりも、特定の馬をアイドルやアスリートのように応援する楽しみ方です。見た目(白毛や筋肉質など)、名前の面白さ、パドックでの可愛い仕草などから「推し」を見つけ、その馬の成長を見守るスタイルです。最近は「ウマ娘」などの影響でこの楽しみ方も増えています。

**5. 競馬場の「ライブ感」と「グルメ」**
実際の競馬場(現地)は、広大な芝生と空が広がり、ピクニック気分で楽しめます。目の前を馬が駆け抜ける時の地響きや歓声は圧巻です。また、各競馬場には名物のB級グルメ(モツ煮込みやカレーなど)や限定スイーツがあり、それを食べることを目的に訪れる人も多いです。

これらは100円から楽しむことができますので、ぜひ自分に合った楽しみ方を見つけてみてください。

Gemini 3は、デフォルトでReasoningが有効となっており、入力されたプロンプトやタスクによって動的に変更される様子。このReasoningの度合い、「思考レベル」は手動でも設定ができて、複雑な推論が必要ない場合は low にすればよいらしい。

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents="競馬の楽しみ方について5つリストアップして。",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="low")
    ),
)

print(response.text)

結果

出力
競馬の楽しみ方は賭け事だけではありません。初心者から上級者まで、様々な角度から楽しめる5つのポイントをご紹介します。

### 1. 推し馬を見つけて応援する(ドラマを楽しむ)
競馬は「ブラッド・スポーツ(血統のスポーツ)」とも呼ばれ、一頭一頭に物語があります。
*   **ビジュアルで選ぶ:** 「毛並みが綺麗」「名前が可愛い」「メンコ(覆面)がおしゃれ」など、見た目で好きな馬を見つけるのも立派な楽しみ方です。
*   **ストーリーを追う:** 負け続けても頑張る馬、怪我から復活した馬、親から子へ受け継がれる血統のロマンなど、背景にあるドラマを知ると、レースを見る熱量が大きく変わります。

### 2. 馬券を買ってレースに参加する(推理を楽しむ)
数百円からでも馬券を買うと、レースへの没入感が段違いになります。
*   **予想の楽しみ:** 過去の成績、コースとの相性、騎手、当日の天気など、様々なデータを組み合わせて「どの馬が勝つか」を推理するのは知的ゲームとして非常に奥深いです。
*   **少額でもOK:** 単勝(1着を当てる)や複勝(3着以内に入る馬を当てる)なら100円から楽しめますし、的中した時の喜びは格別です。

### 3. 競馬場グルメとピクニックを楽しむ(行楽として楽しむ)
現代の競馬場は、とても綺麗でグルメスポットとしても充実しています。
*   **ご当地グルメ:** 各地の競馬場には名物料理(B級グルメや限定スイーツなど)がたくさんあります。
*   **ピクニック気分:** 芝生広場や公園が併設されている競馬場も多く、天気の良い日にはビールを片手にレースを眺めたり、家族連れで遊んだりと、レジャー施設として一日中楽しめます。

### 4. アスリートとしての美しさを鑑賞する(スポーツとして楽しむ)
サラブレッドは走るために極限まで進化・調教された芸術品のような動物です。
*   **パドック:** レース前に馬が周回する場所で、筋肉の付き方や毛艶の美しさを間近で見られます。
*   **レースの迫力:** 時速60km以上で駆け抜ける馬の足音や、ゴール前の叩き合いは圧巻です。純粋なスポーツ観戦としての迫力があります。

### 5. 騎手(ジョッキー)に注目する(人間ドラマを楽しむ)
馬だけでなく、背中に乗る騎手も超一流のアスリートです。
*   **騎手の技術:** わずかな手綱さばきや、一瞬のコース取りの判断で勝敗が決まります。お気に入りの騎手を見つけて、「この騎手が乗るなら買う」という楽しみ方もあります。
*   **人馬一体:** 馬と騎手の信頼関係や、ベテラン騎手と新人騎手の駆け引きなど、人間側のドラマにも注目です。
kun432kun432

モデル

  • モデルID: gemini-3-pro-preview
  • コンテキストサイズ
    • 入力: 100万(1M)
    • 出力: 64000
  • ナレッジカットオフ: 2025/01
  • 料金
    • プロンプトサイズによって2段階の料金体系となっている
    • 以下はテキストの料金(モダリティで
    • < 200kトークン
      • 入力: $2 / 1Mトークン
      • 出力: $12 / 1Mトークン
    • > 200kトークン
      • 入力: $4 / 1Mトークン
      • 出力: $18 / 1Mトークン

詳細は以下

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

料金はこちらのほうが詳しいかな

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

一応Vertex AIだとこちら(ざっくり見た感じ同じには見える)

https://cloud.google.com/vertex-ai/generative-ai/pricing

kun432kun432

新しいAPI機能

主な新機能は以下の5つが挙げられている。

  1. 思考レベル
  2. メディアの解像度
  3. 温度
  4. 思考シグネチャ
  5. ツールを使用した構造化出力

1. 思考レベル

最初のサンプルコードで少し触れたけど、思考レベルででReasoningの最大深度を設定できる。上のコードを再掲。

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents="競馬の楽しみ方について5つリストアップして。",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="low")
    ),
)

print(response.text)

この GenerateContentConfigで設定しているthinking_levelってのがそれで、指摘できるパラメータは以下。

  • low
  • medium(現時点では提供されていない模様、近日追加されるらしい)
  • high(指定がない場合のデフォルト)

2. メディアの解像度

マルチモーダル入力の場合に、入力されたマルチモーダルデータ(画像、PDF、動画など)の解像度を media_resolution で制御できる。指定できるのは以下の3つ。

  • media_resolution_high
  • media_resolution_medium
  • media_resolution_low

パラメータ的には「解像度」とあるが、実際には入力された 「画像・動画フレームごとに割り当てられる最大トークン数」を指定するようなものみたいで、マルチモーダルデータの種類ごとに推奨の設定が挙げられている。

メディア種類 推奨設定 最大トークン数 ユースケースなど
画像 media_resolution_high 1120 ほとんどの画像タスクで最大限の品質
PDF media_resolution_medium 560 ドキュメントの場合、mediumで十分、highにしてもOCR結果が改善されることはない。
動画(一般) media_resolution_low or media_resolution_medium 70(フレーム単位) 動画内のアクションや説明など。lowもmediumも同じになる。
動画(テキスト中心) media_resolution_high 280(フレーム単位) 動画データ内の密度の高いテキストや細部を読む場合

指定しない場合はメディアタイプに応じて最適なデフォルトが指定されるらしい。

以下の手持ちの画像を使ってやってみる。

import IPython.display

IPython.display.Image(url="https://storage.googleapis.com/zenn-user-upload/82968d23b6c5-20250228.jpg")  

from google import genai
from google.genai import types
import base64
import requests

# media_resolutionパラメータは現在、API バージョン v1alpha でのみ利用可能
client = genai.Client(http_options={'api_version': 'v1alpha'})

response = requests.get("https://storage.googleapis.com/zenn-user-upload/82968d23b6c5-20250228.jpg")
response.raise_for_status()
image_data = response.content
encoded_image = base64.b64encode(image_data).decode("utf-8")

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents=[
        types.Content(
            parts=[
                types.Part(text="この画像について詳しく説明して。"),
                types.Part(
                    inline_data=types.Blob(
                        mime_type="image/jpeg",
                        data=encoded_image,
                    ),
                    media_resolution={"level": "media_resolution_high"}
                )
            ]
        )
    ]
)

print(response.text)

のだがエラー

出力
ClientError: 404 Not Found. {'message': '', 'status': 'Not Found'}

どうやらVertex AIではこれはまだ使えない模様。Vertex AIを使わずに、Google AI Studioを使うようにすると(というこの表現が正しいのかわからない・・・)、エラーにならずにレスポンスが返ってくる。

from google import genai
from google.genai import types
import base64
import requests

# Vertex AIを使わない
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "False"

client = genai.Client(http_options={'api_version': 'v1alpha'})

response = requests.get("https://storage.googleapis.com/zenn-user-upload/82968d23b6c5-20250228.jpg")
response.raise_for_status()
image_data = response.content
encoded_image = base64.b64encode(image_data).decode("utf-8")

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents=[
        types.Content(
            parts=[
                types.Part(text="この画像について詳しく説明して。"),
                types.Part(
                    inline_data=types.Blob(
                        mime_type="image/jpeg",
                        data=encoded_image,
                    ),
                    media_resolution={"level": "media_resolution_high"}
                )
            ]
        )
    ]
)

print(response.text)
出力
この画像は、日本の**兵庫県神戸市**にある**神戸港(メリケンパーク周辺)**の風景を撮影したものです。晴天に恵まれた、非常に美しい港の景色です。

具体的に写っている主要な建物や特徴について説明します。

1.  **神戸ポートタワー(中央の赤い塔)**
    *   画像の中央右寄りにそびえ立つ、独特な形状の赤いタワーです。
    *   鼓(つづみ)を長くしたような「双曲面構造」が特徴で、神戸のランドマークとして非常に有名です。

2.  **神戸海洋博物館(右側の白い網目状の建物)**
    *   ポートタワーの右下に見える、白いフレームで構成された屋根を持つ建物です。
    *   「波」や「帆船の帆」をイメージしたデザインが特徴的です。

3.  **ホテルオークラ神戸(タワー右側の高層ビル)**
    *   ポートタワーと海洋博物館の間にある、背の高い四角い白いビルです。神戸港を代表するホテルの一つです。

4.  **中突堤(なかとってい)中央ターミナル(左側の白い建物群)**
    *   画像の左側に見える大きな建物は、クルーズ船などが発着するターミナル施設(カモメリアなど)があるエリアです。

5.  **六甲山系(背景の山々)**
    *   建物の背後には、うっすらと山並みが見えます。これは神戸の市街地のすぐ北側に位置する六甲山系の山々です。「海と山が近い」という神戸の地形的特徴がよく表れています。

6.  **海(手前)と空**
    *   手前には穏やかな神戸港の海面が広がり、空は雲が少なく澄み渡った青空です。赤いタワーと青い空・海のコントラストが非常に鮮やかです。
    *   右端には、白い遊覧船の一部も見えています。

全体として、神戸を観光する際に必ず目にする「**ザ・神戸**」とも言える、代表的なウォーターフロントの風景写真です。

なお、以降は引き続きVertex AIを使うのでもとに戻しておく。

os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "True"

2025/11/19追記

一応以下のように書けばいけるんだけど・・・

from google import genai
from google.genai import types
import base64
import requests

# media_resolutionパラメータは現在、API バージョン v1alpha でのみ利用可能
#client = genai.Client(http_options={'api_version': 'v1alpha'})
client = genai.Client()


response = requests.get("https://storage.googleapis.com/zenn-user-upload/82968d23b6c5-20250228.jpg")
response.raise_for_status()
image_data = response.content
encoded_image = base64.b64encode(image_data).decode("utf-8")

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents=[
        types.Part(text="この画像について詳しく説明して。"),
        types.Part(
            inline_data=types.Blob(
                mime_type="image/jpeg",
                data=encoded_image,
            ),
            media_resolution={"level": "media_resolution_high"}
        )
    ]
)

print(response.text)
出力
この画像は、日本の兵庫県神戸市にある**神戸港(メリケンパーク周辺)**の美しい風景を捉えた写真です。

具体的に写っている主な建物や特徴は以下の通りです。

1.  **神戸ポートタワー(中央の赤い塔)**
    *   写真の中央右寄りにそびえ立つ、赤い鼓(つづみ)型のタワーです。神戸のランドマークとして非常に有名で、パイプ構造の美しい外観が特徴です。

2.  **神戸海洋博物館(右側の白い網目状の建物)**
    *   ポートタワーの右側、低い位置に見える白いフレームの建物です。帆船の帆と波をイメージした独特のデザインで、カワサキワールドも併設されています。

3.  **ホテルオークラ神戸(右側の高いビル)**
    *   ポートタワーのすぐ右隣に立っている、白い高層ビルです。

4.  **ノートルダム神戸(左側の白い建物)**
    *   写真の左側に見える、大きな白い建物は結婚式場の「ノートルダム神戸」だと思われます。

5.  **背景の山並み**
    *   建物の背後には、神戸の特徴である六甲山系の山々がうっすらと見えています。

6.  **海と空**
    *   手前には穏やかな神戸港の海が広がり、空は雲ひとつない快晴の青空です。右端には遊覧船のような白い船の一部も見えています。

全体として、晴天に恵まれた神戸のウォーターフロントエリアの象徴的な景色を写した一枚です。観光パンフレットなどでもよく見られる、神戸を代表する構図と言えます。

んー、APIバージョンの制約がよくわからないし、果たして効いているのかもわからない。

あと、contentsの定義、ちゃんとドキュメント読まないと正しい指定の仕方がよくわからないな・・・

3. 温度

いわゆるtemperatureだけど、Gemini 3では**1.0がデフォルトかつ推奨**らしい。理由は以下。

  • これまでは temperatureで創造的・決定的のバランスを設定することがあったが、Gemini 3ではデフォルトで最適化されている。
  • 複雑な数学タスク・推論タスクの場合、変更(1.0未満)すると逆に性能低下や予期しない動作になることがある。

4. 思考シグネチャ

思考シグネチャとはなんぞや?というのはレスポンスの中にある。

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents="競馬の楽しみ方について5つリストアップして。",
)

# レスポンスをそのまま出力
print(response)
出力
sdk_http_response=HttpResponse(
  headers=<dict len=9>
) candidates=[Candidate(
  content=Content(
    parts=[
      Part(
        text="""競馬の楽しみ方は、単なるギャンブルにとどまらず、スポーツやエンターテインメントとしても非常に奥深いものです。主な楽しみ方を5つにまとめてご紹介します。

### 1. 推理ゲームとしての「予想」
競馬の最大の醍醐味は、過去のデータや情報を組み合わせて未来を予測するプロセスです。
*   **パズル感覚:** 過去の成績、走破タイム、コースとの相性、当日の馬の体重、調教の様子など、膨大なヒントから「勝つ馬」を導き出します。
*   **自分の理論:** 「この騎手を信じる」「雨の日はこの馬が強い」など、自分なりのセオリーが的中した時の快感は格別です。

### 2. スポーツとしての「ドラマと感動」
馬という生き物が走るため、そこには筋書きのないドラマが生まれます。
*   **人馬一体:** 騎手(ジョッキー)と競走馬の信頼関係や、駆け引きは見応えがあります。
*   **成長物語:** デビューしたての弱かった馬が徐々に強くなっていく姿や、怪我を乗り越えて復活する姿、ライバル馬との対決など、アスリートとしての物語に感情移入できます。

### 3. ブラッド・スポーツとしての「血統」
競馬は「ブラッド・スポーツ(血のスポーツ)」とも呼ばれます。
*   **世代を超えたロマン:** 「かつて応援していた名馬の子供や孫」がデビューし、親と同じような走りを見せたり、親が勝てなかったレースで雪辱を果たしたりする姿には、長い歴史を感じるロマンがあります。血統を知ると、競馬は永遠に続く大河ドラマになります。

### 4. 100円から味わえる「スリルと夢」
少額から楽しめるレジャーであることも大きな魅力です。
*   **手軽な興奮:** 最低100円から馬券が買えるため、お小遣いの範囲で楽しめます。
*   **一攫千金:** 組み合わせによっては、100円が数万円、時には数百万円(WIN5などでは数億円)になる可能性を秘めており、ゴール直前の数秒間は日常では味わえない心拍数を体験できます。

### 5. レジャー施設としての「競馬場グルメと開放感」
最近の競馬場(特にJRA)は、テーマパークのように進化しています。
*   **非日常空間:** 広大な芝生の緑と青空の下で観戦する開放感は素晴らしいリフレッシュになります。
*   **競馬場グルメ(ウマ飯):** 昔ながらのB級グルメから、オシャレなカフェ、有名店の出店まで、食事やお酒を楽しむピクニック感覚で訪れるファンも多いです。

まずは気になる馬を一頭見つけて応援してみたり、綺麗な競馬場へ遊びに行ってみたりすることから始めてみてはいかがでしょうか。""",
        thought_signature=b'\n\xdb$\x01\xe3\xf1\xff...(snip)...'
      ),
    ],
    role='model'
  ),
  finish_reason=<FinishReason.STOP: 'STOP'>
)] create_time=datetime.datetime(2025, 11, 19, 8, 2, 55, 265716, tzinfo=TzInfo(UTC)) model_version='gemini-3-pro-preview' prompt_feedback=None response_id='r3kdafSbEJ2pmecPksyrsQg' usage_metadata=GenerateContentResponseUsageMetadata(
  candidates_token_count=619,
  candidates_tokens_details=[
    ModalityTokenCount(
      modality=<MediaModality.TEXT: 'TEXT'>,
      token_count=619
    ),
  ],
  prompt_token_count=11,
  prompt_tokens_details=[
    ModalityTokenCount(
      modality=<MediaModality.TEXT: 'TEXT'>,
      token_count=11
    ),
  ],
  thoughts_token_count=1224,
  total_token_count=1854,
  traffic_type=<TrafficType.ON_DEMAND: 'ON_DEMAND'>
) automatic_function_calling_history=[] parsed=None

上記のthought_signatureが思考シグネチャ。これはモデルの内部思考プロセスを暗号化したものであり、これを受信したとおりにモデルに返すとと、推論コンテキストを維持することができるらしい。イメージ的にはOpenAIのResponses APIを使うのと同じ印象がある(参考: https://developers.openai.com/blog/responses-api)

ざっと見た感じ、Function Callingで特に意味があるように思えるけど、

  • SDKを使って標準のチャット履歴を使用している場合は自動的に処理されるので、いちいち手動で管理する必要はないとある。
  • Gemini-2.0を試したときに、Function Callingには2種類あって、AutomaticだとFunction Callingを使うリクエストは(開発者から見れば)1回で終わる。よって、Manual Function Callingでやる場合に意味があるのかもしれない。

というふうに感じた。

その他注意など結構色々書いてあるので、詳細はドキュメント参照ということで割愛。

5. ツールを使用した構造化出力

構造化出力(Structured Output)をビルトインのツールと組み合わせることができるらしい。例として以下が挙げられている。

以下はGoogle検索と組み合わせた場合

from google import genai
from google.genai import types
from pydantic import BaseModel, Field
from typing import List

class MatchResult(BaseModel):
    horse_1st: str = Field(description="1着馬の名前")
    horse_2nd: str = Field(description="2着馬の名前")
    horse_3rd: str = Field(description="3着馬の名前")
    odds_tansyo: str = Field(description="単勝の払い戻し")
    odds_umaren: str = Field(description="馬連の払い戻し")
  
client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-preview",
    contents="2025年のエリザベス女王杯の結果を教えて。",
    config={
        "tools": [
            {"google_search": {}},
        ],
        "response_mime_type": "application/json",
        "response_json_schema": MatchResult.model_json_schema(),
        #"thinking_config": {"thinking_level": "low"}
    },  
)

result = MatchResult.model_validate_json(response.text)
print(result)
出力
ValidationError: 1 validation error for MatchResult
  Invalid JSON: expected value at line 1 column 1 [type=json_invalid, input_value='```json\n{\n  "horse_1st...umaren": "1,280円"\n} ', input_type=str]
    For further information visit https://errors.pydantic.dev/2.11/v/json_invalid

どうも出力がMarkdownになっているせいでうまくパースできない場合があるみたい。

print(response.text)
```json
{
  "horse_1st": "レガレイラ",
  "horse_2nd": "パラディレーヌ",
  "horse_3rd": "ライラック",
  "odds_tansyo": "230円",
  "odds_umaren": "1,280円"
}

これもなんとなくだけど、Vertex AIだと失敗する確率がかなり高くてGoogle AI Studioだとうまくいくような気がする。成功時は以下のような感じできちんとパースできる。

出力
horse_1st='レガレイラ' horse_2nd='パラディレーヌ' horse_3rd='ライラック' odds_tansyo='230円' odds_umaren='1,280円'
kun432kun432

Gemini 2.5 から移行する

Gemini-2.5から移行する場合の注意

  • Gemini-2.5でCoTなど複雑なプロンプトエンジニアリングによる推論をさせていた場合は、thinking_level: "high"を指定してシンプルなプロンプトで試すと良い
  • temperatureを使っている場合、特に決定論的になるように設定している場合は、Geminiのデフォルト1.0に変更する
  • PDFを使う場合、デフォルトの解像度が変わっているため、media_resolution_highを試す
  • マルチモーダルデータでトークン消費の傾向が変わっている点に注意。
    • PDFはトークンが増える。コンテキストウインドウに収まらない場合は media_resolution_*を下げる
    • 動画はトークンが減る
  • 画像セグメンテーションはGemini 3 Proではサポートされないため、以下を検討
    • Gemini-2.5-FlashでReasoningを無効化する
    • Gemini Robotics-ER 1.5を使う
kun432kun432

OpenAI の互換性

  • 以前のGeminiもそうだが、OpenAI API互換APIがある。
  • OpenAIのreasoning_effortは、Geminiのthinking_levelにマッピングされる
    • reasoning_effort: mediumthinking_level: highにマッピングされる
      • thinking_level: mediumはまだ提供されていないので、今だけかな?
kun432kun432

プロンプトのベストプラクティス

Gemini 3はReasoningモデルであり、プロンプトエンジニアリングがこれまでと異なる。

  • 正確で簡潔なプロンプト、明確で直接的な指示が良い。冗長・複雑なプロンプトは過度に分析される可能性がある。
  • デフォルトでは出力は簡潔、直接的。効率的な回答になる。会話的・おしゃべりなペルソナ等の場合は、プロンプトで明示的に指示する。
    • ex: 親切で話し好きなアシスタントとして説明してください
  • コードベース、書籍全文、長時間動画など、コンテキストが大きい場合は、コンテキストの「後」・プロンプトの「最後」に指示や質問を配置する
    • ex: 上記の情報に基づいて...

こちらも参考に

https://ai.google.dev/gemini-api/docs/prompting-strategies?hl=ja#gemini-3

kun432kun432

過去のGeminiだといろいろCookbookとかがあったのだけど、Gemini 3向けに見つけたのは今のところ以下あたり。

https://github.com/google-gemini/cookbook/tree/main/quickstarts/Get_started.ipynb

https://github.com/google-gemini/cookbook/tree/main/quickstarts/Get_started_thinking.ipynb

このあたりを通してやれば、手っ取り早くGemini 3の特徴とか特性みたいなものがわかりやすいかもしれない。

気が向いたらやるかも。

このスクラップは3時間前にクローズされました